EventMesh Function:面向事件流处理的Serverless新火花
如果无法正常显示,请先停止浏览器的去广告插件。
1. EventMesh Function:
面向事件流处理的Serverless新火花
微众银行
陈广胜
2.
3. 事件的产生
状态和更新事件
行为和互动事件 •金融行业:账户余额更新、市场行情更新。
•零售行业:客户浏览商品、添加购物车。
•教育行业:学生登录学习平台、提交作业、考试成绩
发布。
•智能家居:设备开启和关闭、模式切换。 •物流行业:库存接收、出库、盘点。
•零售行业:库存更新、补货通知。
监测和报警事
件
•医疗行业:医疗记录更新、实验室结果通知。
预约和排程事件
•医疗行业:预约确认、提醒和取消。
•制造行业:设备启动和停止、生产线状态变更。 •教育行业:课程安排变动、资源更新。
•物流行业:货物发货通知、运输安排变动。
安全和合规事
件
•医疗行业:安全报警、记录更新。
•教育行业:校园安全报警、进出记录。
•制造行业:质量检测结果、合格和不合格产品标记。
•智能家居:安全报警、环境监测。
•医疗行业:患者生命体征变化、报警事件。
•物流行业:温控货物温度异常报警、设备故障报警。
•智能家居:环境监测、入侵检测、门窗状态变化。
交易和处理事件
•金融行业:交易执行、订单匹配、账户余额更新、
信用评分变化。
•零售行业:商品购买、优惠券使用、交易完成。
•物流行业:货物装载、运输、交付。
01
04
03
市场和客户反馈事件
05
•金融行业:市场数据更新、价格波动通知。
02
06
事件分类
•零售行业:客户反馈、促销活动反馈。
•制造行业:供应商交货、原材料库存更新。
07
4. 事件的处理
事件源 事件目标
云服务、第三方SaaS应用和自定义应
用程序。 AWS Lambda、Step Functions、SNS、
SQS、Kinesis Streams、HTTP/S API等。
事件存储和重放
存档历史事件并在需要时重放。
事件函
数和
事件路
由
无服务器架构
无需管理基础设施,云自动处理扩展
和容错。
5. 事件驱动架构(Event-Driven Architecture, EDA)
一种软件架构模式,通过生产、检测、消费和反应事件来驱动应用程序的行为。
松耦合
各个组件通过事件进行通信,不直接依赖于其他组件的实现。
可以独立开发、测试和部署各个组件,提高系统的灵活性和可维护性。
异步处理
事件的生产和消费是异步进行的,提高系统的响应性和吞吐量。
适合处理高并发和分布式场景。
扩展性
可以通过增加事件生产者和消费者的数量来扩展系统的处理能力。
支持横向扩展,适应不断增长的业务需求。
实时性
能够实时处理和响应事件,适用于实时数据处理和监控场景。
提高系统的敏捷性和快速响应能力。
容错性
通过事件溯源和事件日志,可以实现系统的容错和故障恢复。
确保系统在部分组件故障时仍能正常运行。
6. 事件驱动架构 vs 消息驱动架构
事件驱动 消息驱动
事件是数据变化的声明,不
需要立即处理,更多用于系
统间解耦和反应式编程。 消息是需要处理的任务,
通常需要消费者立即处理,
用于可靠的任务传输。
优点 优点
灵活的事件路由、无服务
器管理、与云服务和SaaS
应用集成。
示例应用
应用状态变化通知、系统
健康监控、跨服务数据同
步。
消息持久化、高可靠性、
适用于需要保证消息处理
顺序和可靠性的场景。
示例应用
任务队列处理、异步工作
流、跨系统的数据传输。
7. EventMesh vs Service Mesh
关注点
侧重于异步通信、事件流管理和实时数据处理,
适用于事件驱动架构和实时数据处理场景。
实现方式
通常采用消息中间件或事件总线,通过发布/
订阅模式管理事件的生产和消费。
通信模式
异步消息传递,事件的生产和消费
解耦。
耦合度
组件之间松耦合。
01
02
03
04
01
VS
02
03
04
关注点
侧重于同步通信、网络流量管理和服务治理,
适用于微服务架构中的服务间调用。
实现方式
通常采用 sidecar 代理模式,在每个服务实例旁
部署一个代理,统一管理服务间的通信和策略。
通信模式
同步 RPC、RESTFUL 通信,服务
间直接调用。
耦合度
组件之间紧耦合。
8. EventMesh架构
Admin
Config
Management
Source
Event Store
Connector Runtime
Sink
Observing &
Auditing
Task Scheduler
Routing
Knative
Serving
Pub/Sub
Mesh Runtime
Event Store/Source/Target
Filter
Transform
Compute
Function Runtime
9. EventMesh的Serverless化
admin.yaml
K8S Cluster
mesh.yaml
connector.yaml EventMesh
Operator
function.yaml Admin CRD
......
Admin Mesh
POD POD
Connector Function
POD POD
Mesh CRD
kubectl
K8S API
Connector
CRD
Function CRD
......
......
10. 事件路由(Event Routing)
定义:事件路由是指将事件从源传递到正确的目标或服务的过程,通常基于
某些路由规则。
主要功能:
•目标选择:根据事件的内容或属性,将事件传递到一个或多个指定目标。
•路径决定:确定事件的传输路径,包括通过哪些中间节点或服务。
•负载分配:在多个目标之间分配事件负载,优化资源利用。
11. 事件路由(Event Routing)
Event
Source1
Publish/Subscribe
Event
Target1
Mesh
Mesh
Runtime
Runtime
Event
Target2
Event
Source2
Kubernetes/Admin
12. 事件过滤(Event Filtering)
定义:事件过滤是指根据预定义的规则或条件,从事件流中筛选出符合特定
标准的事件。
主要功能:
•筛选和选择:只让符合特定条件的事件通过,阻止其他事件。
•条件匹配:根据事件内容、标签、时间、地理位置等条件进行匹配和过滤。
•精确控制:在复杂场景中,精确控制哪些事件需要进一步处理,减少不必要
的事件处理负担。
13. 事件过滤(Event Filtering)
Event
Source1
Filter/Transformer/Compute
Knative Serving
Function
Function
Runtime
Runtime
Event
Target1
Mesh
Mesh
Runtime
Runtime
Event
Target2
Event
Source2
Kubernetes/Admin
14. 事件函数(Event Function)
事件函数(Event Function)是事件驱动架构中的核心组件,用于响应特定的
事件并执行相应的业务逻辑。事件函数通常是无状态的、短生命周期的函
数,通过事件触发执行。
定义
事件函数是指在事件驱动架构中,由特定事件触发执行的函数,用于处理事
件并执行相应的操作。
主要功能
•事件响应:根据接收到的事件执行相应的处理逻辑。
•无状态:事件函数通常是无状态的,每次执行不依赖于之前的执行状态。
•短生命周期:事件函数的执行时间通常较短,快速响应事件。
•自动伸缩:根据事件流量自动伸缩,确保高可用性和性能。
15. 事件函数(Event Function)
Function workflow
Event
Source1
Function
Runtime
Function
Runtime
Event
Target1
Mesh
Mesh
Runtime
Runtime
Event
Target2
Event
Source2
Kubernetes/Admin
16. 数据同步(Data Transfer)
定义
事件传输是指将事件从一个系统组件或服务传递到另一个系统组件或服务的
过程。它确保事件能够被其他感兴趣的组件接收到并进行处理。
主要功能
•可靠传输:确保事件不丢失,并能准确地传递到目标组件。
•低延迟:尽量减少事件在传输过程中的延迟。
•顺序保证:在某些场景中,保证事件按发送顺序到达。
•扩展性:能够处理高并发的事件传输需求。
•灵活路由:根据事件内容或属性,动态路由到不同的目标组件。
17. 数据同步(Data Transfer)
Data
Source1
Source/Sink
Connector
Connector
Runtime
Runtime
Data
Target1
Data
Target2
Data
Source2
Kubernetes/Admin
18. 事件存储(Event Storage)
定义
事件存储是指将事件持久化保存到存储系统中,确保事件数据在需要时可以被
检索和使用。
主要功能
•持久化:将事件数据可靠地保存到存储介质中,防止数据丢失。
•检索:能够高效地查询和检索历史事件。
•版本控制:保存事件的不同版本,支持数据回溯和审计。
•重放:能够按照时间顺序重放事件,支持系统状态的恢复和调试。
•分析:支持对历史事件数据的分析,提供洞察和决策支持。
19. 事件存储(Event Storage)
MQ/DB/S3 etc.
Event
Source1
Event
Store
指定存储类型
Mesh
Mesh
Runtime
Runtime
Event
Source2
Kubernetes/Admin
20. 事件重放(Event Sourcing)
定义
事件重放是指从存储中读取历史事件,并按照事件发生的时间顺序重新处理这
些事件,以便恢复系统状态或进行调试和分析。
主要功能
•系统恢复:通过重放事件,恢复系统到某个历史状态。
•数据修复:在数据出现错误时,通过回溯事件进行数据修复。
•调试与分析:通过回放事件,分析系统行为和调试问题。
•审计与合规:提供事件历史记录,以满足审计和合规需求。
基于时间窗口的重放
通过定义时间窗口重放某段时间内的事件,适用于数据回溯和历史数据分析。
基于事件ID的重放
通过事件ID定位并重放特定事件,适用于单个事件的回放和调试。
21. 事件重放(Event Sourcing)
MQ/DB/S3 etc.
Event
Store
指定重放条件
Event
Target1
Connector
Connector
Runtime
Runtime
Event
Target2
Kubernetes/Admin
22. 事件网格的应用场景举例
1. 微服务集成
应用场景:在微服务架构中,不同的微服务之间需要进行通信和协调,EventBridge可以作为事件总线,实现微服务之间的松耦合和事件驱动的集成。
示例:当用户下单时,订单服务生成一个事件,支付服务、库存服务和通知服务可以订阅并处理这个事件,从而完成支付、库存更新和发送通知等操作。
2. 自动化工作流
应用场景:EventBridge可以用于构建复杂的自动化工作流,通过事件触发和调度各种任务。
示例:一个事件触发数据处理管道,当新的数据上传到S3桶时,触发Lambda函数进行数据处理,然后将结果存储到数据库,并通知用户处理完成。
3. 跨应用程序通信
应用场景:跨多个应用程序或服务进行通信和数据传递。
示例:在不同的AWS账户或区域之间,通过EventBridge实现事件的跨账户和跨区域传递,用于数据同步和处理。
4. 事件驱动的服务器无管理
应用场景:构建无服务器架构,利用EventBridge实现事件驱动的应用程序逻辑。
示例:使用EventBridge触发AWS Lambda函数来处理实时事件,如IoT设备数据处理、用户活动跟踪等。
5. 安全和合规性监控
应用场景:监控和响应安全事件和合规性事件。
示例:利用EventBridge接收来自AWS CloudTrail的安全事件日志,并触发相应的响应措施,如发送警报、触发自动化修复流程等。
6. 实时数据处理
应用场景:处理和响应实时数据流。
示例:使用EventBridge接收和处理来自传感器或实时数据流的事件,并将处理结果存储或发送到其他服务。
7. 跨平台集成
应用场景:实现不同平台和系统之间的集成。
示例:接收来自SaaS应用程序(如Salesforce、Zendesk等)的事件,并触发在AWS上的操作。
23. SaaS组合式应用新趋势
“By 2024, 30% of digital commerce organizations will use packaged business capabilities (PBCs)
to construct their application experiences.”
Gartner 2020
-
什么是组合式应用 (PBC)?
•
PBC是具有明确业务能力的多个数据模
型,微服务,API应用, 和事件通道的集
成。
• 完整实现的PBC是功能完全,能独立完成
业务需求,不需要外部依赖。
• 多个PBC以积木方式建立企业解决方案,
呈现完整统一的用户体验。
来源 https://www.elasticpath.com/blog/what-are-packaged-business-capablities
24. SaaS组合式应用新趋势
PBC的价值
PBC的挑战
• 商业驱动的SaaS应用,真正解决每个业务问题 • 应用集成缺乏统一标准
• 不锁定单一供应商,采购和开发最好的应用服务 • 应用协议多样化:HTTP, TCP, MQTT, AMQP 等等
• 低代码方式集成应用,敏捷上线,高效迭代 • 应用数据模型多样化:OpenAPI, AsyncAPI
• 对底层技术封装,屏蔽技术实现,更容易技术更新
25. SaaS组合式应用新趋势
事件
事件 生产者 事件
生产者
生产者
多线程
并发 事件过滤
事件模型 事件路由
事件
事件 消费者 事件
消费者
消费者
事件转换
事件重试
连接器
负载均衡
• 基于线程池的多线程并发和异步调用, 提高请求并发量
• 针对事件生产和消费对性能的要求,独立配置线程池参数
• 事件消费采用负载均衡和重试机制,保证事件消费成功
• 对事件进行校验、过滤、路由和转换,支持高级事件处理
能力
•
事件存储 (RocketMQ, Kafka)
作为事件总线,通过插件化支持多种底层事件存储
26. EventMesh在微众银行的应用实践
27. EventMesh在微众银行的应用实践
EventMesh在微众的应用实践
微众银行分布式多活架构依赖分布式消息
总线进行通信和服务治理,经过多年实践
和探索,演化出EventMesh,目前它作
为分布式消息总线的重要组成部分,在云
原生微服务架构下发挥更大的作用。
信创支持
应用规模
①海光 X86-64
应用场景
节点
②华为 ARM-V8
③飞腾 ARM-V8
①在5个IDC部署100多个
①事件驱动微服务调用 ②支撑10多个业务产品
②日志采集上报 部,50多个子系统,日处
③跨网络区域流量复制 理消息量亿级,TPS峰值
④异地多活数据同步 达万级
28. EventMesh在华为云的应用实践
EventMesh在华为云的应用实践
EventGrid 官方事件源 > 100 个, 为华为云服务
自定义事件源为微服务应用
29. EventMesh在华为云的应用实践
事件网格 (EventGrid) 是华为云中间件在云原生时代推出的新一代无服务器事件总线
• 以EventMesh作为运行时引擎
• 增加了华为自需的特性,包括可视化仪表盘、高级事件
过滤、事件查询跟踪、死信存储等
• 事件驱动方式对接华为云服务, 微服务应用和SaaS应用
• 为华为云创造更多应用场景,丰富华为云的开发者生态
30. EventMesh在华为云的应用实践
EventGrid 在华为云最重要的能力是通过连接各个云服务来构建
EDA(Event-driven Architectures) 事件驱动架构,以达到服务间的解耦。
EventGrid
Event Source
Event Target
松耦合,完成服务间的解耦
处理结果无预期;
EVS
事件通道
IT
事件通道
IT服务
IT
事件订阅
EVS
订阅规则
SMN
一次对接,到处抵达;
统一的CloudEvents标准
ECS
事件通道 ESC
订阅规则 WebHook
DMS
事件通道 DMS
订阅规则 Function
Graph
低码化配置,上线周期更短
SDK
31. EventMesh在华为云的应用实践
EventMesh在华为云的应用实践
EventGrid 是华为打造数字集成中心(Digital Integration Hub)的重要组成部分
• EventGrid承接ROMA Connect 集成
平台的事件流转
• 面向事件驱动的架构平台是华为云成功
的关键
• 通过消息和事件完成多云、跨云的应用
集成,SaaS伙伴应用服务的集成
32. EventMesh在华为云的应用实践
EventMesh在华为云的应用实践
ERP场景:
EventGrid
新员工入职,HR系统产生新员工注册事件,通过EventGrid推送
欢迎新员工邮件,通知IT系统配备新电脑设备,发送财务部门新
员工资料。
电商场景:
仓库商品入库事件,门店顾客进店事件通过EventGrid实时流转到
在线分析系统,让我们知道现在店内货存量,和顾客购买偏好,
并推送相关广告到门店导购员。
顾客在线支付后,订单信息发送到EventGrid, 并触发第三方物流
公司进行送货上门。顾客可以通过物流事件实时查看运送情况。
33. EventMesh在华为云的应用实践
事件目标能力:
削峰填谷
API网关
…
数据清
洗同步 过滤
存储 转换
消息服务
大数据训练
不同部门
不同业务
智能推荐
函数计算
对象存储
事件网格
IOT设备接入
WebHook
客户价值
客户痛点
Serverless架构:架构灵活扩展,自动伸缩满足弹性要求
高并发,快速弹性:业务量大,且呈早晚高峰 自动化运维:无须运维资源,低码开发,降低成本,缩短上线周期
系统敏捷开发:车联网缺少套件来降低开发成 按需计费:无事件不计费
本和缩短上线时间 灵活路由:配置不同的规则,将事件路由到不同业务、不同部门、不同目标
34. EventMesh在吉利集团的应用实践
吉利集成平台异步事件功能,经过5个月研发,11个敏捷迭代,成功上线。
•具备服务方事件源管理、事件规则管理、事件规则绑定、事件订阅管理、事件日志管理、事件源发布等功能。
•具备消费方事件目标管理、事件申请订阅管理、事件规则绑定、事件重试、事件日志管理等功能。
•具备运营端事件日志统计管理、事件目标管理、事件源管理、事件集群管理等功能。
35. EventMesh在吉利集团的应用实践
面向用户的服务市场。用户可以快速检索需要集成的服务事件。
36. EventMesh在吉利集团的应用实践
事件提供方可以快速的进行事件发布、规则管理
37. EventMesh在吉利集团的应用实践
事件消费方可以进行事件目标配置、事件订阅、规则绑定,事件目标支持Http、MQ
38.