假设您有一个微服务体系结构,其中多个服务产生和使用单元状态。
有多种设计方法,你推荐哪种?
下面是我想到的一些选择:
创建常规主题 unit-status
并使服务使用和生成有关此主题的消息。这会导致您使用自己的消息并必须对其进行过滤。我认为这是一个肮脏的解决方案,但对于新的消费者来说,很容易获得所有的单元状态事件。
例如,为每个状态创建一个特定的主题 unit-status-created
, unit-status-packaged
, unit-status-loaded
, unit-status-deleted
每个服务只生成它自己的主题,但是可以从主题列表中消费,不包括它自己的主题。例如,加载服务将从列表中使用( unit-status-created
, unit-status-deleted
, unit-status-packaged
). 这允许服务只对特定事件感兴趣,但当添加新的状态主题时,它需要对所有服务进行代码或配置更改。
为每个状态指定它自己的分区,并使用除在中生成的分区以外的所有分区。这种设计使事情变得更复杂(簿记哪个分区包含特定的状态),在添加分区时不自动平衡,在活动时添加分区使事情变得更危险,因此没有我的偏好。
1条答案
按热度按时间olhwl3o21#
根据我的理解,我建议第一点
添加新的微服务将更容易添加新的微服务,并且仍然能够在没有太多更改的情况下工作。
业务逻辑应该是microservice it本身的一部分,而不是消息队列的一部分