事件驱动,而非数据驱动
会上的另一个重要议题是:无服务器应用促成了一种围绕事件本身,而非围绕数据来设计的架构。将应用程序订阅到某个事件队列,这是管理服务通信的一种好方法,借此我们可以轻松地为现有队列添加新服务,或修改 / 添加功能,而不需要将数据流直接绑定给应用,进而产生强耦合。
Rob Gruhl 介绍了 Nordstrom 公司正在从事的一个有趣项目:他们正在通过一个集中且统一的事件日志管理零售系统内部的数据流动。应用程序可以通过流生成和使用事件,任何需要对当前状态获得高性能视图的应用程序均可订阅至事件流,借此构建自己的状态数据库(一种数据库视图)。随后即可根据需求为请求提供服务。同时这些应用还可生成供其它服务使用的事件。这样的方式彻底避免了为实现某些状态的中心化存储而使用核心数据库系统的做法,可在改善伸缩性的同时实现微服务之间的解耦。
他们提供了一个名为 Hello Retail 的演示应用,摄影师可以借助该应用为新产品拍照。当新产品加入后,系统会从已知摄影师清单中选择一位摄影师,发送手机短信请求对方拍摄新照片。当摄影师(用短信)回复后,系统会开始处理照片,将其加入图库,随后注册为新产品对应的照片。
来自 Capital One 的 Srini Uppalapati 介绍了 Capital One 的核心金融系统,他们目前正在将这套系统迁移到云端,并且这一过程中大量使用了无服务器相关技术。他们核心交易系统的迁移主要分为两个阶段: