我目前正在研究一个架构,见下文。首先,我不确定这种架构是称为事件驱动架构还是数据驱动架构,或者两者兼而有之。
有些输入消息从前端发送到t1。这些消息首先被验证,然后被收集,最后被评估。
我目前的方法是在msa中持久化包含所有元信息的原始消息,在msb中持久化已排序的集合,在msc中持久化求值。这将数据分离到适当关注的微服务。
在t2中,我只产生ms b所需要的消息。
在t3中,我只生成msc需要的消息。
但是在评估这些集合时,需要从ms a获得所有的元信息。那么如何进行这类工作呢?
我应该只向队列发送最少的数据并提供一个api吗?
我是否应该将所有数据发送到队列(为以下服务转发数据)?
我应该将下一个服务的所有信息发送到队列并提供api吗?
还有别的吗?
还是我误解了“通过Kafka传递微服务”的方法?
请随意批评!
谢谢你的建议!
1条答案
按热度按时间1mrurvl11#
我相信这是一个消息驱动和数据驱动的体系结构,但这并不重要。更重要的是,微服务使用编排(而不是编排)。这个问题可能会有帮助。
最干净的体系结构是将所有数据放在消息中,这样依赖项的数量限制为2。此外,系统的弹性也得到了提高:如果微服务a关闭,其他下游微服务可以继续工作。
每个微服务只使用它感兴趣的部分信息,而忽略另一部分。这创建了一个很好的、可扩展的流式处理管道。但是,如果消息太大,您应该使用microservice a(或任何其他microservice)作为更多数据的参考。