EventMeshFunction: 面向事件流处理的Serverless新火花 微众银行陈广胜 行为和互动事件 •零售行业:客户浏览商品、添加购物车。 •教育行业:学生登录学习平台、提交作业、考试成绩 发布。 监测和•智能家报居:警设备开事启和关闭、模式切换。 件 状态和更新事件 •金融行业:账户余额更新、市场行情更新。 •零售行业:库存更新、补货通知。 •医疗行业:医疗记录更新、实验室结果通知。 •物流行业:库存接收、出库、盘点。 •制造行业:设备启动和停止、生产线状态变更。 预约和排程事件 •医疗行业:预约确认、提醒和取消。 安全和合规 事 •教育行业:课程安排变动、资源更新。 •物流行业:货物发货通知、运输安排变动。 件 •医疗行业:患者生命体征变化、报警事件。 •物流行业:温控货物温度异常报警、设备故障报警。 •智能家居:环境监测、入侵检测、门窗状态变化。04 交易和处理事件03 •金融行业:交易执行、订单匹配、账户余额更新、信用评分变化。 •零售行业:商品购买、优惠券使用、交易完成。02 •物流行业:货物装载、运输、交付。 •医疗行业:安全报警、记录更新。 •教育行业:校园安全报警、进出记录。 •制造行业:质量检测结果、合格和不合格产品标记。 •智能家居:安全报警、环境监测。 05市场和客户反馈事件 •金融行业:市场数据更新、价格波动通知。 •零售行业:客户反馈、促销活动反馈。 06•制造行业:供应商交货、原材料库存更新。 01事件分类07 事件源 云服务、第三方SaaS应用和自定义应用程序。 事件存储和重放 存档历史事件并在需要时重放。 事件目标 事件函数和事件路由 AWSLambda、StepFunctions、SNS、SQS、KinesisStreams、HTTP/SAPI等。 无服务器架构 无需管理基础设施,云自动处理扩展和容错。 事件的生产和消费是异步进行的,提高系统的响应性和吞吐量。适合处理高并发和分布式场景。 扩展性 可以通过增加事件生产者和消费者的数量来扩展系统的处理能力。支持横向扩展,适应不断增长的业务需求。 实时性 能够实时处理和响应事件,适用于实时数据处理和监控场景。提高系统的敏捷性和快速响应能力。 容错性 通过事件溯源和事件日志,可以实现系统的容错和故障恢复。确保系统在部分组件故障时仍能正常运行。 一种软件架构模式,通过生产、检测、消费和反应事件来驱动应用程序的行为。 各个组件通过事件进行通信,不直接依赖于其他组件的实现。 可以独立开发、测试和部署各个组件,提高系统的灵活性和可维护性。 异步处理 松耦合 事件驱动 事件是数据变化的声明,不需要立即处理,更多用于系统间解耦和反应式编程。 优点 灵活的事件路由、无服务器管理、与云服务和SaaS应用集成。 示例应用 应用状态变化通知、系统健康监控、跨服务数据同步。 消息驱动 消息是需要处理的任务,通常需要消费者立即处理,用于可靠的任务传输。 优点 消息持久化、高可靠性、适用于需要保证消息处理顺序和可靠性的场景。 示例应用 任务队列处理、异步工作流、跨系统的数据传输。 关注点 侧重于异步通信、事件流管理和实时数据处理,01 适用于事件驱动架构和实时数据处理场景。 关注点 01侧重于同步通信、网络流量管理和服务治理, 适用于微服务架构中的服务间调用。 实现方式 通常采用消息中间件或事件总线,通过发布/02 VS 订阅模式管理事件的生产和消费。 通信模式 异步消息传递,事件的生产和消费03 解耦。 实现方式 02通常采用sidecar代理模式,在每个服务实例旁 部署一个代理,统一管理服务间的通信和策略。 通信模式 03同步RPC、RESTFUL通信,服务间直接调用。 耦合度 组件之间松耦合。04 耦合度 04组件之间紧耦合。 Admin ConnectorRuntime EventStore/Source/Target MeshRuntime Pub/Sub KnativeServing Routing FunctionRuntime FilterTransformCompute SourceEventStoreSink Observing&Auditing TaskScheduler ConfigManagement admin.yaml K8SCluster mesh.yamlconnector.yaml EventMeshOperator AdminMesh function.yaml ...... kubectlK8SAPI AdminCRD MeshCRD PODPOD ConnectorCRD ConnectorFunction FunctionCRD ...... PODPOD ...... 定义:事件路由是指将事件从源传递到正确的目标或服务的过程,通常基于 某些路由规则。 主要功能: •目标选择:根据事件的内容或属性,将事件传递到一个或多个指定目标。 •路径决定:确定事件的传输路径,包括通过哪些中间节点或服务。 •负载分配:在多个目标之间分配事件负载,优化资源利用。 EventSource1 EventSource2 Publish/Subscribe Mesh Runtime MeshRuntime EventTarget1 EventTarget2 Kubernetes/Admin 定义:事件过滤是指根据预定义的规则或条件,从事件流中筛选出符合特定标准的事件。 主要功能: •筛选和选择:只让符合特定条件的事件通过,阻止其他事件。 •条件匹配:根据事件内容、标签、时间、地理位置等条件进行匹配和过滤。 •精确控制:在复杂场景中,精确控制哪些事件需要进一步处理,减少不必要的事件处理负担。 EventSource1 EventSource2 Filter/Transformer/Compute Function Runtime KnativeServingFunctionRuntime Mesh Runtime MeshRuntime EventTarget1 EventTarget2 Kubernetes/Admin 事件函数(EventFunction)是事件驱动架构中的核心组件,用于响应特定的事件并执行相应的业务逻辑。事件函数通常是无状态的、短生命周期的函 数,通过事件触发执行。 定义 事件函数是指在事件驱动架构中,由特定事件触发执行的函数,用于处理事 件并执行相应的操作。 主要功能 •事件响应:根据接收到的事件执行相应的处理逻辑。 •无状态:事件函数通常是无状态的,每次执行不依赖于之前的执行状态。 •短生命周期:事件函数的执行时间通常较短,快速响应事件。 •自动伸缩:根据事件流量自动伸缩,确保高可用性和性能。 Functionworkflow EventSource1 FunctionRuntime Mesh Runtime Mesh FunctionRuntime EventTarget1 EventSource2 Runtime EventTarget2 Kubernetes/Admin 定义 事件传输是指将事件从一个系统组件或服务传递到另一个系统组件或服务的 过程。它确保事件能够被其他感兴趣的组件接收到并进行处理。 主要功能 •可靠传输:确保事件不丢失,并能准确地传递到目标组件。 •低延迟:尽量减少事件在传输过程中的延迟。 •顺序保证:在某些场景中,保证事件按发送顺序到达。 •扩展性:能够处理高并发的事件传输需求。 •灵活路由:根据事件内容或属性,动态路由到不同的目标组件。 Connector Runtime Data Source1 Source/Sink Data Target1 Connector Runtime Data Source2 Data Target2 Kubernetes/Admin 定义 事件存储是指将事件持久化保存到存储系统中,确保事件数据在需要时可以被 检索和使用。 主要功能 •持久化:将事件数据可靠地保存到存储介质中,防止数据丢失。 •检索:能够高效地查询和检索历史事件。 •版本控制:保存事件的不同版本,支持数据回溯和审计。 •重放:能够按照时间顺序重放事件,支持系统状态的恢复和调试。 •分析:支持对历史事件数据的分析,提供洞察和决策支持。 MQ/DB/S3etc. EventSource1 EventSource2 指定存储类型 Mesh Runtime Event Store MeshRuntime Kubernetes/Admin 定义 事件重放是指从存储中读取历史事件,并按照事件发生的时间顺序重新处理这些事件,以便恢复系统状态或进行调试和分析。 主要功能 •系统恢复:通过重放事件,恢复系统到某个历史状态。 •数据修复:在数据出现错误时,通过回溯事件进行数据修复。 •调试与分析:通过回放事件,分析系统行为和调试问题。 •审计与合规:提供事件历史记录,以满足审计和合规需求。 基于时间窗口的重放 通过定义时间窗口重放某段时间内的事件,适用于数据回溯和历史数据分析。基于事件ID的重放 通过事件ID定位并重放特定事件,适用于单个事件的回放和调试。 MQ/DB/S3etc. Event Store 指定重放条件 Connector Runtime ConnectorRuntime EventTarget1 EventTarget2 Kubernetes/Admin 示例:接收来自SaaS应用程序(如Salesforce、Zendesk等)的事件,并触发在AWS上的操作。 1.微服务集成 应用场景:在微服务架构中,不同的微服务之间需要进行通信和协调,EventBridge可以作为事件总线,实现微服务之间的松耦合和事件驱动的集成。示例:当用户下单时,订单服务生成一个事件,支付服务、库存服务和通知服务可以订阅并处理这个事件,从而完成支付、库存更新和发送通知等操作。 2.自动化工作流 应用场景:EventBridge可以用于构建复杂的自动化工作流,通过事件触发和调度各种任务。 示例:一个事件触发数据处理管道,当新的数据上传到S3桶时,触发Lambda函数进行数据处理,然后将结果存储到数据库,并通知用户处理完成。 3.跨应用程序通信 应用场景:跨多个应用程序或服务进行通信和数据传递。 示例:在不同的AWS账户或区域之间,通过EventBridge实现事件的跨账户和跨区域传递,用于数据同步和处理。 4.事件驱动的服务器无管理 应用场景:构建无服务器架构,利用EventBridge实现事件驱动的应用程序逻辑。 示例:使用EventBridge触发AWSLambda函数来处理实时事件,如IoT设备数据处理、用户活动跟踪等。 5.安全和合规性监控 应用场景:监控和响应安全事件和合规性事件。 示例:利用EventBridge接收来自AWSCloudTrail的安全事件日志,并触发相应的响应措施,如发送警报、触发自动化修复流程等。 6.实时数据处理 应用场景:处理和响应实时数据流。 示例:使用EventBridge接收和处理来自传感器或实时数据流的事件,并将处理结果存储或发送到其他服务。 7.跨平台集成 应用场景:实现不同平台和系统之间的集成。 “By2024,30%ofdigitalcommerceorganizationswillusepackagedbusinesscapabilities(PBCs)toconstructtheirapplicationexperiences.” - Gart