0

这个问题是关于服务架构之间的消息队列。关于这个话题几乎找不到任何东西。

情况:微服务 A 和微服务 B。微服务 A 处理实体“某事”而 B 需要处理。我保持一般性以避免讨论边界。

在我们的例子中,A 发送一条包含事件和相关实体 ID 的消息,例如 Event: somethingCreated SomethingID: 1234

B 使用此消息,如果它需要更多信息,它会使用 SomethingID 从 A 获取此消息。

第二种方法是消息不仅包含上述信息,还包含元数据,如 Event: somethingCreated SomethingID: 1234 SomeFieldKey: someFieldValue ...

精益消息: 优点: * 更少的网络使用 * 始终相同的消息结构 缺点: * 如果需要来自 A 的信息,则必须有某种机制来捕获例如网络故障

Fat message: Pro: * 信息已经存在 Con: * 如果附加信息不够怎么办?

所以它既有优点也有缺点,我在这里的目的是大致了解您正在使用哪种方法。

感谢您提前回答

4

1 回答 1

0

简单的答案是视情况而定,我们有服务公开所有数据及其事件,我们有服务只共享参考 id 以及在事件有效负载方面位于这两者之间的服务。

我们的观点是,产生事件的服务主要控制有效载荷的内容。我们审查用例并监控事件和服务调用的使用情况,并相应地使有效负载更胖或更精简。我们确实对我们的消息大小有上限,但除此之外没有限制。

当数据在服务之间流动时,网络延迟对我们来说不是问题。(我的意思不是因为有效负载大小的增加)

因此,您需要允许您的个人服务接听电话。每个服务在响应时间方面都有一个 SLA 需要满足,当它被违反时,您可以查看、找出瓶颈并解决它们。

于 2018-10-29T04:57:14.860 回答