事件总线 + 函数计算构建云上最佳事件驱动架构应用
关注我们,后台回复 手册免费获取产品解决方案
正文导读:
01
事件驱动架构基本概念及形态
事件驱动架构基本形态
围绕事件的流转,根据事件驱动架构的概念和基本形态,主要涉及以下四个核心部分:
Event Producer:负责产生事件,并将产生的事件投递到事件通道; Event Channel:负责接收事件,并将接收的事件持久化存储,投递给订阅该事件的后端处理引擎; Event Processing Engine:负责对于订阅的事件做出响应和处理,根据事件更新系统状态; Downstream event-driven activity:事件处理完成之后,对于事件处理响应的一种展示;
事件驱动架构要达成的目的
系统架构松耦合
事件生产者与事件订阅者在逻辑上是分开的。事件的生成与使用的分离意味着服务具有互操作性,但可以独立扩缩、更新和部署。
只面向事件的松散耦合可以减少系统依赖项,并允许您以不同的语言和框架实现服务。您无需更改任何一个服务的逻辑,即可添加或移除事件生成方和接收方。您无需编写自定义代码来轮询、过滤和路由事件。
系统的可伸缩性
基于事件驱动架构的松耦合特性,意味着可以独立对事件生产者,事件通道服务,以及事件处理引擎进行独立的扩缩容;尤其对于后端事件处理引擎,可以根据消息处理响应 SLA 和后端资源供给进行弹性扩缩容;同时可以基于事件粒度构建不同规格的后端处理服务,实现更细粒度的系统弹性伸缩。
系统的可扩展性
系统的可扩展性,主要表现在当系统需要增加新的功能,如何快速的基于现有系统架构快速构建支持新的业务逻辑,在事件驱动架构应用中,围绕事件粒度的处理模式,能够天然快速支持增加新的基于事件的数据流抽象。
当系统中增加新的事件类型的时候,无需调整变更发布整个系统,只需要关注需要订阅的事件进行事件处理逻辑的开发和部署即可,也可以基于原来的系统做很少的代码变更即可实现,也可以在业务初期通过独立的服务订阅指定的事件完成特定的业务逻辑支持。
02
在讨论完事件驱动架构基本模型之后,我想关于事件驱动的概念,形态我们有了统一的认识和理解,接下来我们进入议题的第二个部分,为什么函数计算是云上事件驱动服务最佳实践?
函数计算简介
函数计算 FC 是一款基于事件驱动的全托管计算服务,相关的产品细节可以见官网介绍。作为一款通用的事件驱动型计算服务,接下来我会从三个方面进行详细的介绍。
编程范式
使用函数计算,用户无需采购与管理服务器等基础设施,只需编写并上传代码。函数计算为你准备好计算资源,弹性地、可靠地运行任务,并提供日志查询、性能监控和报警等开箱即用功能,编程范式带来开发的“简单,快捷”。
按照函数粒度进行独立的功能单元开发,快速调试,快速的部署上线,省去了大量资源购买,环境搭建的运维工作;同时函数计算是一个事件驱动的模型,事件驱动,意味着用户不需要关注服务产品数据传递的问题,省去了在编写代码中涉及的大量服务访问连接的逻辑;“事件驱动” + “函数粒度开发” + “免服务器运维”等几个维度特征帮助函数计算支撑“聚焦业务逻辑敏捷开发”的底层逻辑。
计算模型
除了开发模式带来的研发效能提升之外,函数计算提供非常细粒度的计算资源和毫秒级计费模型,支撑按需计算,按量收费;能够支持按用户的请求,根据用户流量的模型为计算付费;当然按用户请求付费存在技术上巨大的挑战,要求函数计算实例的启动小于用户的 RT 要求,冷启动性能尤为重要,这时候极致弹性成为了 Serverless 按需付费,业务降本的底层技术支撑。函数计算通过“极致弹性” + “按需付费”的模型帮助 Serverless 函数计算实现真正的按需计算逻辑。
事件驱动
在基于云的开发环境,云产品承载的服务相对内聚,各自扮演着分布式系统架构中的各个重要角色,云产品之间的事件触发机制能够帮助客户更好的基于多个云产品构建自己的业务系统;否则需要用户自己负责云产品事件的监听,串联云服务,进行复杂的错误处理,这是非常复杂,开发代价极其昂贵的一件事;
除了产品连接带来的开发效率之外,当用户订阅某个事件,并提供处理逻辑的时候,客户已经潜在的过滤掉了不需要处理的事件请求,事件驱动意味着每一次的事件触发请求都是一次完全有效的计算。
函数计算对于事件驱动架构的价值
为什么函数计算是云上最佳的事件驱动架构服务?函数计算对于事件驱动架构的核心价值到底是什么?
事件驱动架构一直存在,在没有函数计算的时候,同样也有事件驱动架构,在微服务的时候也同样有事件驱动架构。如今,当我们重新再来讨论事件驱动架构的时候,到底是什么发生了变化,有哪些本质的区别?在整个事件驱动架构中,函数计算最大的价值在于帮助构建 “Event Processing Engine” 这个角色,我想主要是以下两个方面发生了本质的变化:
系统可扩展性价值
开发模式发生了本质的变化:函数计算提供的框架能力及编程模型,最大化的消除了客户业务逻辑之外的处理内容,极大的加速了客户业务开发,同时基于这样这样的开发模式,用户对于新增事件处理逻辑能够在最短的时间完成处理并上线,细粒度,专注业务的敏捷开发模式能够加速业务快速上线。
系统可伸缩性价值
计算模式发生了本质的变化:基于事件驱动架构事件粒度的处理逻辑和函数计算更细粒度力度计算弹性能力,能够从多个维度实现 “Event Processing Engine” 组件的弹性能力, 这我想这也是函数计算对于事件驱动架构的一个最核心价值。
03
构建云上事件驱动架构挑战
事件源多样性挑战
授权复杂及安全隐患
通用能力难以沉淀
事件总线简介
总线模式(EventBus)
事件:状态变化的记录; 事件源:事件的来源,事件的产生者,产生事件的系统和服务, 事件源生产事件并将其发布到事件总线; 事件总线:负责接收来自事件源的事件;EventBridge 支持两种类型的事件总线:
云服务专用事件总线:无需创建且不可修改的内置事件总线,用于接收您的阿里云官方事件源的事件。 自定义事件总线:标准存储态总线,用于接收自定义应用或存量消息数据的事件,一般事件驱动可选该总线。
事件规则:用于过滤,转化事件,帮助更好的投递事件; 事件目标:事件的消费者,负责具体事件的处理。
通过上面的流程,完成了事件的产生,事件的投递,事件的处理整个过程。当然事件并不是一个新的概念,事件驱动架构也不是一个新的概念,事件在我们的系统中无处不在,事件驱动架构同样伴随着整个计算机的架构演进,不断地被讨论。
事件流模式(EventStreaming)
事件总线对于事件驱动架构的价值
简化统一事件源接入
沉淀通用事件通道能力
提升优化用户集成体验
04
总线模式+函数计算用户案例
利用 ActionTrail 事件触发函数进行多账号审计管理
利用 OSS 文件上传事件触发函数扩容 ACK 集群资源
利用 OSS 文件上传执行 Terraform 文件并访问外部 API 做结果通知
事件流模式+函数计算用户案例
事件流触发函数计算处理业务消息
事件流触发函数计算进行简单 ETL 数据同步
事件流触发函数进行简单 ETL 数据清洗入库
函数异步+事件流触发函数构建电商运营通知系统
一 END 一
未来已来:从技术升级到降本提效
“全”事件触发:阿里云函数计算与事件总线产品完成全面深度集成
<关注 Serverless 公众号,留言回复 手册 免费获取阿里云云原生 Serverless 产品解决方案手册>
📫欢迎后台回复 “进群” 加入阿里云 Serverless 千人开发者技术学习群交流。
点击“阅读原文”进入 EventBridge 官网!