摘要通过本文可以了解什么是Serverless及Serverless演进史,Serverless的常见应用场景及价值。 1. Serverless函数计算及应用场景1.1Serverless的概念,特征以及价值1.1.1Serverless是什么?CNCF定义一种新的云原生计算模型,无需服务器管理而构建和运行应用程序的架构。一个或多个功能的应用上传到平台后执行、扩展和计费 CNCF定义Serverless的LandScape在多个层面协同发展 信通院定义以应用为中心,无需关注基础设施的计算模式,FaaS不是其唯一形态。Serverless是一整套能力的合集,越来越多的第3三方 服务演进为全托管的Serverless形态 Serverless是云上一整套能力的合集,而不是单一的云服务产品 1.1.2Serverless成国际研究热潮,预言将成为下一-代默认的计算范式 Serverless函数计算的价值 1.2Serverless函数计算的典型应用场景1.2.1Serverless函数计算适用场景Serverless函数计算适用场景主要有以下三类,Web类应用IoT,媒体处理类应用,AI处理应用 Web类应用解放端侧开发,让端开发者更快、更灵活开发各种应用,无需关注后端服务
IoT,媒体处理类应用以事件驱动的方式执行服务,按需供给,开发者无需关注业务波峰波谷,节省闲时成本,最终降低运维的成本
AI处理应用各行各业智能化深入带来更多的应用开发场景,通常需要集成各类服务快速上线
1.2.2六个典型的应用场景典型场景一: Web/App/小程序后端场景需求特点:
函数计算优势:
典型场景二:BFF/SSR场景需求特点: BFF/SSR和业务强相关,通常由前端开发,但前端并不擅长服务器的部署、运维 函数计算优势:
典型场景三:事件触发场景需求特点: 函数计算优势:
典型场景四:服务间快速集成场景需求特点:
函数计算优势:
典型场景五:视频转码函数工作流场景需求特点:
函数工作流优势:
典型场景六: 安全运维函数工作流场景需求特点:
函数工作流优势:
2.FunctionGraph产品能力与应用案例2.1Serverless趋势及服务全景2.1.1Serverless趋势及华为云Serverless服务Serverless是下一-代默认的计算范式,将在未来5- 10年内成为云的首要交付模式 2.1.2FunctionGraph2.0使用场景与客户选择2.2典型客户场景2.2.1华为视频:前端基于函数开发中间层,实现前后端解耦,开发上线效率提升1 00%+1.场景&问题 场景:视频App前端展示的内容随业务需要经常变化,包括排版更新,新功能上线 2.解决方案 3.价值&收益 前后端彻底解耦,前端聚焦业务,后端仅需提供通用接口,不再关心数据如何展示,减少了 沟通成本 前端只需开发中间层业务函数,业务服务器的部署、运维和扩容,都由函数计算平台托管,开发上线效率提升100%以上 2.2.2阿联酋xx: Serverless化构建 车队管理系统,上线周期缩短一 半,总成本降低30%2.2.3XX车企:函数结合AI等服务,毫秒级弹性伸缩和NoOps支持实时小碰撞检测2.3FunctionGraph主要能力2.3.1FunctionGraph 2.0:基于华为元戎的新一代函数计算与编排服务,8大特性发布2.3.2特性1:丰富的函数开发语言及触发方式让设计更灵活2.3.3特性2:可视化拖拽式函数流支持编排复杂业务场景2.3.4特性3:统一-插件支持云上和云下的开发与调试2.3.5特性4: Http函数让WEB服务近乎0成本改造,享受Serverless优势能力2.3.6特性5:函数支持容器镜像,简化应用Serverless化2.3.7特性6:函数支持在运行时动态指定资源,灵活调度节省成本2.3.8特性7:百毫秒冷启动时延,单实例多并发,毫秒级弹性2.3.9特性8: 1ms粒度按量计费,节省开支3.FunctionGraph技术原理与实践3.1.函数计算关键技术原理3.1.1Serverless架构优势3.1.2Serverless函数带来的挑战:冷启动
3.1.3冷启动时延优化平台侧优化1.池化 用户侧优化预留实例:预留实例是将函数实例的创建和释放交由用户管理,当您为某一函数创建了预留实例,函数_ I作流收到此函数的调用请求时,会 优先将请求转发给您的预留实例,当请求的峰值超过预留实例处理能力时,剩余部分的请求将会转发给按量实例,由函数工作流自动为您 分配执行环境。预留实例在创建完成后,会自动加载该函数的代码、依赖包以及执行初始化入口函数,且预留实例会常驻环境,消除冷启 动对业务的影响。 1.减少代码包大小 代码包过大会增加传输、解压、加载时间,通过去冗余文件等减少代码包大小对冷启动时延优化效果较明显 2.选择合适语言 nodjs、python、 golang- -般优于java, 针对java也可以尝试编译成本地代码方式 3.降低代码初始化时间 升级依赖包,合并依赖文件等 4.选择合适的内存 函数内存越大,计算能力越强,冷启动表现越优 5.预留实例 1.根据业务 波峰波谷配置固定预留实例,超出部分通过弹性实例解决 2.定制自己业务 需要的预留实例策略 3.1.4Serverless运行模型带来的注意事项
3.1.5函数调用机制同步调用客户端请求需要明确等到响应结果,也就是说这样的请求必须等调用到用户的函数调用完成才返回 异步调用异步调用是指客户端不关注请求调用的结果,服务端收到请求后将请求排队,排队成功后请求就返回,服务端在空闲的情况下会逐个处理排队的请求。 如何选择
3.1.6单实例多并发:支持更多调用3.2.函数计算实践分享3.2.1架构模式的变化:从微服务化逐步向Serverless化演进,并将长期共存3.2.2客户Serverless化推荐路径:新业务试点,渐进式改造3.2.3如何提高调用可靠性平台侧 多AZ、多集群、反亲和、内部重试、链路优化等 用户侧
3.2.4如何从架构层面提升可靠性
3.2.5如何定位性能问题如何定位性能问题,除了可以通过监控、日志,我们对接了APM2.0, 可以做到免侵入式调用链能力,支持自动采集jvm,sql, exception, redis, httpclient, kafka,tomcat等框架, 支持多函数调用拦截 3.2.6如何灰度发布用户可以创建别名,指向特定函数版本。别名的优势在于:如果需要回滚到之前的函数版本,则可以将相应别名指向该版本,不再需要修 改代码信息。 函数别名支持绑定两个版本,-个对应版本和开启灰度版本,并且支持配置同一个别名下两个不同版本分流权重。 3.2.7如何零改动迁移现有Web应用到函数场景问题微服务和函数在未来几年会是一个共存的形态,当前存在着大量微服务应用,如何高效的支撑其Serverless化,让现有微服务快速享用到 方案针对Web服务,推出API网关加FunctionGraph的Http函数方案,用户只需把原有的Web Server代码打包为一个Http函数,即可完成Serverless化改造。 价值体现
3.2.8HTTP函数原理事件函数事件函数的请求经过API网关或者其他触发器时,会对请求的消息进行编码成固定的事件格式,FunctionGraph 直接调用用户函数里的方法并将事件消息作为参数传入。 HTTP函数用户发送的HTTP请求经过API网关后,网关会将原生HTTP请求直接透传的到FunctionGraph, FunctionGraph讲请求直接转发到用户函数代码里起的webserver里。 3.2.9数据库连接池实战方案一(单实例多并发+预留实例)
方案二(数据库代理方式)
3.2.10函数调用如何降低成本网络访问相关实践3.3.高阶特性:有状态3.3.1函数和有状态的关系3.3.2有状态函数运行逻辑3.3.3有状态应用模式总结通过上面的一些解释,我们了解什么是Serverless及Serverless演进史,Serverless的常见应用场景及价值。Serverless的六个典型的应用场景,以及FunctionGraph的八大特性,以及对函数计算实践分享的一些分享。 |
|