本文作者:史明伟 , 阿里云智能高级技术专家。
1 Serverless 异步任务处理系统诞生和挑战
无论是对于云的开发者,还是尝试业务升级的企业客户,Serverless的三个概念 “极致弹性、无服务器运维、 按需付费” 几乎已经深入人心;但关于 Serverless能做什么、怎么做,却仍然是围绕在大家身边最普遍的声音。
在Serverless研发的初始阶段,通常技术团队会更多聚焦于弹性,冷启动加速,希望通过弹性能力凸显产品技术竞争力,确立产品在市场上的领先地位,并依赖这些能力吸引开发者和企业客户使用Serverless,这个阶段,更多的是依靠技术影响力引导大家探索 Serverless。
随着我们对Serverless的不断深入理解,同时弹性能力的提升进入深水区,相对来说没有本质改变的情况下,我们将更多地思考触及Serverless弹性以外的其他价值,这个时候,弹性将作为系统的基础能力渗透在产品各个方面,需要更多的从系统性的角度考虑 Serverless能做什么,能给客户带来什么,如何让业务聚焦那些不得不需要定制化的部分?
系统性意味着我们需要从包括资源供给,弹性调度,应用框架,容量评估,运维观测等多个维度来考虑Serverless系统对于客户业务的价值, 哪些需要用户参与,或者少参与,哪些需要以服务化能力提供给客户;对于那些客户必须参与的,平台需要提供便利的开发工具满足开发阶段客户需求;在具体业务逻辑实现中,利用Serverless的灵活扩展性,尽可能快速的帮助开发者实现和其他云服务的快速连接,提供稳定高效访问是Serverless所能带给客户的核心价值。
面对实际的客户需求,产品需要考虑多种业务场景: 离线场景的耗时任务执行,在线场景的高并发请求处理,以及事件驱动场景的事件处理,如何将众多业务场景需求在一个计算平台上得到满足,是我们面临的最大挑战。
基于对 Serverless的不断深入理解,结合产品在弹性调度方面的不断积累,我们开始了基于多租架构的Serverless异步任务处理系统的构建,利用异步化的访问方式,帮助用户托管请求,以服务化的手段帮助用户快速执行任务,处理异常,提供可靠的执行保障,结合异步化的结果投递能力,希望能够面向事件驱动,在线业务处理,Serverless Job/Task 等复杂业务场景,为客户带来更多价值。
构建一个面向多租场景的Serverless异步任务处理系统需要面临各种挑战;这个时候我们需要化繁为简,分析任务系统到底要做什么:任务分发, 任务调度, 任务执行。
Serverless本质是一个多租分时复用的商业模式,关于Serverless异步任务处理系统的挑战,结合任务处理系统的功能需求,这些挑战可以总结归类为三个方面:
第一,多租架构本身带来的挑战:包括租户隔离问题,多租资源管理,以及如何权衡隔离性和成本之间的矛盾&#x