spring cloud stream

用Spring Cloud Stream实现Event Driven Architectures

拈花ヽ惹草 提交于 2019-11-27 06:28:37
微服务的出现和原生的云架构触发了DDD,CQRS和Event Sourcing的复苏。所有这些方式实现的核心是Domain Event(领域事件), 它是分布式系统中实现一整套DDD架构及实现最终一致性的主要机制。 Domain Events的通讯改变了domain领域对象的状态,比如Customer Created、Account Credited等。它们总是以过去时来表达,一个domain event呈现了一个特定的domain已经发生的行为。 DDD推荐把一个整体系统拆分成多个微服务。如何拆分我们改日再谈,但是假设一个遵循DDD来设计的金融系统来定义Customer和Account作为一个Aggregates聚合。宏观来看一个Aggregate聚合就是领域对象,由实体类和是对象组成,它定义了一个事务边界。一个聚合封装了业务逻辑来验证业务规则和保持聚合内的一致性。聚合间通过发布领域事件来触发状态的改变。CustomerCreated一个Customer聚合发布的领域事件,AccountCreated是一个Account发布的领域事件。Customer保存了它拥有的account,Account也许保存了归属的customers的引用。无论如何,每个聚合都可能需要处理其他聚合发布的事件。在CQRS中,command service以聚合为单位来更新状态和发布domain