正文
随着业务场景的不断变化,我们已经看到了基于推送或事件的架构正在成为一种趋势。服务向订阅事件的观察者容器发送事件,容器异步做出响应,事件发送者可能对此一无所知。与请求响应式架构不同的是,在基于事件的系统架构中,发起事件的容器并不依赖下游的容器,它们的处理过程和加载的事务与下游容器的可用性或完成情况无关。这种架构的另一个好处是,开发者可以更加独立地设计各自的服务。
在容器环境中使用基于事件的架构时,功能即服务(FaaS)可以助他们一臂之力。在 FaaS 架构中,功能以文本的形式保存在数据库中,然后由事件来触发它们。在调用一个功能时,API 控制器会收到一个消息,并将它通过负载均衡器发送到消息总线,调用者容器负责处理队列中的消息。消息处理完毕后,结果被保存在数据库中,并发送给用户,而功能暂时退役,等待下一次触发。
FaaS 有两大好处。首先,缩短了服务开发时间,因为除了源代码,不需要创建其他任何东西。其次,降低了开销,因为功能的管理和伸缩通常是由 FaaS 平台(比如 AWS Lambda)来完成的。当然,采用 FaaS 本身也存在一些挑战。FaaS 要求解耦每一个服务,那么就会存在大量的服务需要发现、管理、编配和监控。因为缺乏对服务依赖链的全盘了解,FaaS 系统难以调试,而且可能会出现无限循环依赖问题。
在目前看来,FaaS 并不适用于某些场景,比如那些需要较长处理时间、需要往内存里加载大量数据或需要稳定性能的场景。开发者主要使用 FaaS 来运行后台作业和处理临时事件,不过我们相信,随着存储层速度的加快和平台性能的提升,FaaS 的应用场景会越来越多。
2017 年秋天,CNCF 对 550 名用户进行了问卷调查,其中 31% 的人正在使用无服务器架构技术,28% 的人打算在未来 18 个月使用无服务器架构技术。而在使用无服务器架构技术的 169 人当中,有 77% 使用的是 AWS Lambda。虽说 Lambda 或许是领先的无服务器架构平台,但我们相信边缘计算仍然有机会。边缘计算将在物联网和 AR/VR 领域大展拳脚。