为什么它有典型FaaS能力,却是非典型FaaS架构?
作者:CQITer小编 时间:2019-09-20 01:49

FaaS—Function as a service,函数即服务。它是2014年由于亚马逊的AWS Lambda的兴起,而被大家广泛认知。FaaS能力是NBF中的一项非常重要的能力,NBF是一个非典型的FaaS架构,但是具备了典型的FaaS能力。文章将详细介绍NBF的FaaS容器架构、服务发布、服务路由和强大的Serverless能力以及NBF-FaaS在阿里大促期间的实践心得。
1.NBF
NBF (New-Retail Business Framework) 是供应链中台基础技术团队研发的新零售服务开放框架,提供了标准化业务定义、快捷服务开发和生态开放的能力,旨在为生态伙伴提供一整套完整的新零售PaaS和SaaS的解决方案。
2.FaaS
2.1定义
FaaS是Serverless的一种典型形式,由 Serverless平台提供负载均衡、高可用、自动扩缩容、服务治理等最佳实践,将这些最佳实践对 Developer 透明化,进一步缩短 Developer 从想法到产品的时间,降低开发成本,同时保障 Developer 开发的服务的可靠性。通过事件驱动的方式,开发者的Function通过Event有效触发,比如 HTTP 请求、消息事件等。
2.2典型架构

Event Sources Function 事件驱动的集合;
Function Instances 提供服务的Function或微服务;
FaaS Controller 管理Function的控制服务,比如典型的API Gateway或者BFF(Backend For Front)等;
Platform Services Function依赖的平台服务,如权限管理 API、对象存储服务等。
3.NBF-FaaS架构

3.1 NBF-Platform Services
NBF的平台能力主要分为三层 :
(1)Serverless平台—CSE(Cloud Service Engine):Serverless是FaaS平台依赖的基础能力,这一块NBF与中间件CSE团队深度合作,CSE提供快速的扩缩容的能力,可以在毫秒级别支持并行水平扩容和动态缩容,满足业务的错峰场景。基础技术团队与CSE共建容器冷热启动的性能优化以及Serverless运维工具(日志,监控报警,链路跟踪等)开发。
(2)NBF容器:NBF容器采用OSGI架构,提供了Bundle完整的生命周期管理,包括Bundle的加载,启动,卸载和注销等等,以及容器和Bundle的隔离和通信能力。
(3)平台能力:
服务发布:把Function/Bundle快速发布成服务的能力。
服务路由:服务多态,降级和Mock的路由能力。
服务管理:基于SPI和Bundle的版本管理和服务启停能力。
服务运维:服务的Serverless能力,混部能力,灰度能力和容灾降级能力等 。
3.2 NBF-Function Instances
NBF的函数实例对应的就是长在NBF服务市场的一个个服务背后的Bundle实现:

3.3 NBF-Event Sources
NBF的Event Sources是由流程中心提供的基于EventMap的服务编排能力:

3.4 NBF-FaaS Controller
NBF的FaaS Controller包括三种类型:
(1)流程中心调度服务 流程中心提供了调度SPI服务的事件驱动能力,包括流程事件,消息事件,定时事件等等,目前基本可以覆盖所有的事件驱动的业务场景。
(2)Broker调用RPC服务 Broker支持多模式调用Bundle发布的RPC服务,包括服务的多态路由,降级路由和Mock路由等 。
(3)NBF-Rest调用HTTP服务,NBF-Rest支持调用Bundle发布的HTTP服务。
4. NBF的FaaS能力
4.1 Bundle生命周期管理——NBF容器
★ 4.1.1 NBF容器架构
NBF容器管理了Bundle的加载,启动,卸载和注销的完整周期,并采用OSGI机制实现了容器和Bundle之间的隔离和通信能力。
容器架构设计 :

NBF容器架构主要分为三层:
(1)Serverless层
这一层NBF和CSE团队共建,CSE负责实现Fast Auto-Scaling,目前已经在双十二和女王节等大促活动得到了充分验证。NBF实现了Fast Cold Start和Fast Hot Start Fast Cold Start—优化Bundle服务发布的冷启动时间 Fast Hot Start—优化Bundle服务Scaling up后的服务可用时间 底层依赖的CaaS服务目前也在跟随CSE的节奏从Sigma3.0向ACK-EE迁移,未来将全面支持阿里云单元。
(2)NBF-OSGI Framework



