关于分段事件驱动的体系结构

微服务的前几年,有了SEDA架构 2010年1月,在一次伦敦之行中,我很幸运地与财富管理公司的南非CTO Zack一起喝了一杯。 它从字面上改变了我的(技术)生活。 当JMS(Java消息服务),IBM MQ和TIBCO RDV几乎是在Java环境中进行消息传递的默认选项时,他向我介绍了RabbitMQ,pub-sub体系结构和AMQP协议。 AMQP允许将消息描述,传输层和客户端端点解耦,在这种情况下,它们可以是Java或非Java(.Net,Ruby等)。 当我的Java消息生产者必须与.Net使用者进行通信时,不再需要使用桥来转换消息描述,并且AMQP为我们提供了一种规范化的方式来描述消息,使用端点和路由规则。 与Zack见面后的第二天,我联系了RabbitMQ的同事。 随后的一系列会议向我介绍了阶段事件驱动的体系结构(SEDA)的概念,其中应用程序将被设计为一系列松散耦合的模块(阶段),这些模块嵌入业务逻辑并通过队列进出连接将传输触发特定事件的消息。 当时我们正积极考虑重新设计盘中交易后平台,并希望使用“ 2010年而不是2000年的发展模式”。这是新十年的曙光。 考虑到SEDA体系结构,我们在称为适配器的一系列基本阶段中设计了交易生命周期(实际上是从Spring Integration借用了术语)。 每个适配器都被赋予交易生命周期的特定功能(例如捕获,分配,匹配,预订,对账),并通过RabbitMQ队列将其他交易(事件)传入和传出,与其他适配器相连。 随着交易在适配器之间的阶段进行,它们变得越来越丰富,直到最终进入预订平台。 适配器本身是使用Java…