加入收藏 | 设为首页 | 会员中心 | 我要投稿 莆田站长网 (https://www.0594zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营中心 > 建站资源 > 优化 > 正文

不改代码也能全面Serverless化,阿里中间件如何破解这一难题?

发布时间:2019-06-20 22:17:16 所属栏目:优化 来源:誓嘉
导读:副标题#e# AWS Lambda 是 Serverless 领域的标志性产品,但如果将其应用于核心业务,可能会遇到以下难题:(仅代表作者个人观点) 要求用户以 Function 为单位进行开发,全新的开发框架,云厂商强绑定,社区主流技术栈迁移成本高; Function 启动速度要足够快
副标题[/!--empirenews.page--]

不改代码也能全面Serverless化,阿里中间件如何破解这一难题?

AWS Lambda 是 Serverless 领域的标志性产品,但如果将其应用于核心业务,可能会遇到以下难题:(仅代表作者个人观点)

  • 要求用户以 Function 为单位进行开发,全新的开发框架,云厂商强绑定,社区主流技术栈迁移成本高;
  • Function 启动速度要足够快,毫秒级或者秒级,这个限制对适用场景有很强的约束;
  • Function 之间的调用通过 API Gateway,响应时间更长。

Cloud Service Engine 云服务引擎(以下简称CSE),是阿里云中间件团队开发的面向通用 Serverless 计算的中间件产品,目的是具备 AWS Lambda 的各种优势,同时可以解决用户在使用 AWS Lambda 时遇到的难题。

什么是 Serverless?

AWS 对 Serverless 定义是:(摘自 AWS 官网)

不改代码也能全面Serverless化,阿里中间件如何破解这一难题?

AWS 无服务器平台提供的功能:(摘自 AWS 官网)

不改代码也能全面Serverless化,阿里中间件如何破解这一难题?

AWS 的整套 Serverless 方案非常完善,但是没有解决存量应用如何迁移到 Serverless 架构的问题。仅仅是针对新开发的应用,建议用户使用 FaaS 方式开发,才有机会转向 Serverless 架构。笔者认为,要将 Serverless 架构大规模推广,必须要能有针对存量业务的解决方案。

Serverless 对云计算的价值

云计算,归根结底是一种 IT 服务提供模式,不论是公共云还是专有云(以 IT 设备的归属不同分类),其本质都是帮助 IT 的最终使用者随时随地,并且简便快速地,获取 IT 服务,目前,IaaS、PaaS 都已经做到了按需付费,PaaS 甚至做到了按请求付费,如 DB,CACHE,MQ 等,但是 IaaS 的付费粒度仍然是时间维度,最快按照小时付费,以分钟来交付。

因此,当下的云计算场景,应用的开发维护方式相比传统 IDC 时代的开发维护,差别还不是很大。但 AWS Lambda 提供了一种全新的开发维护方式,用户只需要写好业务代码,提交到云上,所有和机器容量、可用性、机器为单位的运维工作可以全部交给了云平台,这种模式极大地释放了云的弹性价值,真正做到了按需付费。

CSE 试图提供一种更规模化的解决方案,像 AWS Lambda 一样,能进一步释放云的弹性价值,并且可以平滑迁移存量应用。

存量在线业务实现 Serverless 架构的挑战

存量在线应用程序具有以下特点:

  • 资源分配速度 = 分钟级
  • 应用程序启动速度 = 10分钟+

基于以上客观条件,通常做法是提前预定好机器数量来应对任意时刻的流量峰值,假设上述技术参数变为毫秒级,就有机会将应用程序架构演变成下图所示方式。

不改代码也能全面Serverless化,阿里中间件如何破解这一难题?

上图中,Service A 在调用 Service B 时,如果 B 的容量充足,则调用成功;如果 B 的容量不足,这时候如果线程池满,则直接触发限流阀值,A 会收到一个错误码,然后直接调用资源总控系统,资源总控系统负责新分配一个 Service B 实例,这个分配的速度非常快,耗时几十毫秒,同时把 B 的服务地址直接返回给 A,A 会将之前未完成的请求发送到新创建的 Service B。

以上过程对于开发者完全透明,具备了以下价值:

  • 价值一:无需管理服务器,即无需容量评估;容量评估这件事情对于应用负责人一直是一个极难解的问题,因为我们很难预测未来的峰值是什么。
  • 价值二:持续扩展;之前的做法是每个应用程序独占一定数量的资源,如果变成Serverless 模式,所有应用程序可以共享资源池,每个应用程序几乎可以无限扩展。
  • 价值三:按照请求计费;因为每个实例的启动时间甚至比 FaaS 的函数启动时间还快,就可以像 FaaS 一样来核算成本,成本只与以下因素有关:
    • 请求数量(QPS)
    • 每次请求CPU执行时间,例如100ms
    • 每个实例的内存规格

综上所述:为了做到以上描述的分布式架构,关键技术点在于应用启动速度,这里的应用启动速度是指应用可以正常处理流量为止。

如何将应用启动速度提高到毫秒级?

应用在启动过程中通常会初始化多个组件,如各种中间件、数据结构,以及网络调用外部服务。在阿里内部广泛使用 SOA 和微服务的情况下,应用在启动过程中会大量加载共享业务 SDK,存在启动过程达到10分钟量级的情况,个别应用可能会更长。因此,这个启动过程必须提前完成,才有机会以“临阵磨枪”的方式去创建新实例。

方案一:应用冷启动资源压缩方案

不改代码也能全面Serverless化,阿里中间件如何破解这一难题?

不改代码也能全面Serverless化,阿里中间件如何破解这一难题?

不改代码也能全面Serverless化,阿里中间件如何破解这一难题?

不改代码也能全面Serverless化,阿里中间件如何破解这一难题?

不改代码也能全面Serverless化,阿里中间件如何破解这一难题?

L1 弹性能力是指在一台物理机或者大规格的 ECS 上部署同一个应用的多个实例,通过操作系统和 JVM 的优化,一个占用 4G 内存的应用,即使部署10份,仅需占用2.2G RAM。

(编辑:莆田站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读