这个问题是关于服务架构之间的消息队列的。关于这个话题几乎找不到任何东西。
情况:微服务A和微服务B。微服务A处理实体“某物”,B需要处理。我保持它的一般性,以避免关于边界的讨论。
在我们的示例中,A发送一条消息,其中包含事件和相关实体id,如Event: somethingCreated SomethingID: 1234
B使用此消息,如果它需要进一步的信息,则使用SomethingID从A获取此消息。
第二种方法是消息不仅包含上面的信息,还包含元数据,如Event: somethingCreated SomethingID: 1234 SomeFieldKey: someFieldValue ...
精简消息: Pro:*较少的网络使用*总是相同的消息结构缺点:*如果需要来自A的信息,则必须有某种机制来捕获例如网络故障
Fat消息: Pro:*信息已经存在缺点:*如果附加的信息不够怎么办?
所以它既有优点也有缺点,我在这里的目的是获得一个概述,你正在使用哪种方法。
感谢您的提前答复
发布于 2018-10-29 12:57:15
答案很简单,这取决于,我们有公开所有数据和事件的服务,我们有共享引用id的服务,还有在事件有效负载方面介于这两者之间的服务。
我们的观点是,产生事件的服务主要控制有效负载的内容。我们审查用例并监视事件和服务调用的使用情况,并相应地使有效负载更胖或更瘦。我们确实有消息大小的上限,但除此之外没有限制。
当数据在服务之间流动时,网络延迟对我们来说并不是问题(我的意思不是因为有效负载的大小增加)。
因此,您需要允许您的单个服务接听呼叫。每个服务在响应时间方面都有一个要满足的SLA,当它被破坏时,您可以检查、找出瓶颈并解决它们。
https://stackoverflow.com/questions/53025888
复制相似问题