Gartner《Choosing Event Brokers to Support Event-DrivenArchitecture》心得
一、概述
随着企业数字化转型的加速,事件驱动架构(EDA)在应用和集成架构中扮演着越来越重要的角色。事件代理作为 EDA 的核心组件,其选择对于整个系统的性能、可靠性和可扩展性都有着深远的影响。
二、关键发现
-
需求与功能不匹配的代价高 :事件代理功能的多样性使得在选择时必须精准匹配需求。例如,若一个系统需要高吞吐量和低延迟,而选择了不适合的代理,后期修改架构和代码的代价极高。
-
四核心领域需关注 :
-
客户端连接 :涉及客户端与代理之间的通信协议、连接方式等。例如,对于物联网场景,可能需要支持 MQTT 协议以适应低带宽、高延迟的网络环境。
-
事件传递语义 :包括消息的可靠性、顺序性等。如金融交易系统可能要求消息的严格顺序传递和高可靠性,不能丢失或重复。
-
部署模型 :影响系统的可扩展性和可用性。例如,云原生应用可能更适合部署在云服务上的事件代理,利用云的弹性伸缩能力。
-
管理能力 :涉及代理的监控、配置、安全管理等。一个大型企业级应用需要强大的管理界面和工具来确保事件代理的稳定运行。
-
-
三种常见事件代理类型 :
-
队列导向型 :适合需要灵活主题结构和多协议支持的场景。如企业服务总线(ESB)中,不同系统之间需要通过多种协议进行集成。
-
日志导向型 :适用于需要消息保留和重放的场景。如大数据分析平台,需要对历史数据进行重新处理和分析。
-
订阅导向型 :主要针对云原生和无服务器架构。如在 Serverless 架构中,事件代理需要快速响应事件并触发相应的函数。
-
-
缺乏有效治理工具 :事件模式管理、追踪和自助服务能力的缺失可能导致系统难以维护和扩展。例如,没有事件模式管理,当事件格式发生变化时,可能需要修改大量代码来适配。
-
云服务配置复杂度低但非零 :使用云服务可以简化配置,但仍然需要对网络、安全等进行一定的配置。同时,云服务的客户端连接能力可能受到地域、网络带宽等因素的限制。
三、分析
-
EDA 的重要性与背景 :在云原生时代,系统架构变得越来越复杂和分散。EDA 能够使得各个组件之间松耦合、异步通信,提高系统的灵活性和可扩展性。例如,一个电商平台可以使用 EDA 来处理订单、库存、支付等不同模块之间的通信。
-
EDA 的多样性与挑战 :由于 EDA 的多样性,企业在选择事件代理时面临诸多挑战。不同的业务场景对事件代理的功能要求不同,如物联网场景需要支持大量设备的连接和低延迟通信,而金融场景则更注重数据的安全性和可靠性。
四、Event Broker功能
事件代理在 EDA 中扮演着中间件的角色,其功能的实现直接影响到整个系统的性能和稳定性。
(二)管理事件的逻辑结构
(三)事件传递
(四)确定连接方式与消息传递机制
(五)代理的可扩展性与性能