让我们想象一下,我们有一个用户对象,并且我们想使用事件通过面向服务的体系结构同步该对象的状态。关于修改用户时发送的事件,我想知道以下哪个选项更适合事件的正文:
在我正在考虑的示例中,以下情况是可行的:
profile
被更新,并且主题user-updated
事件中的事件被发送contact-email
。鉴于用户状态已更改,事件将发送到同一主题。contact-email
字段。假定用户状态已更改,则将事件发送到同一主题。 contact-email
发生更改的最后一个事件,并尝试更新用户。由于现有用户信息和接收到的用户信息之间没有变化,因此状态也没有变化,并且没有其他事件发送到user-updated
主题。即使只有2个服务跟踪用户状态,此过程对我来说也相当复杂。在一个真实的例子中,此类服务的数量可能会更高。
答案 0 :(得分:0)
我个人只会发送修改后的字段(如果没有其他内容),以使消息的有效负载保持较小。大多数邮件系统会优化/限制小邮件,当您发送多于K的数据时,效果会很差。
此外,我很困惑为什么您要在此处进行多主复制。为什么您没有一个用户服务,这两个服务都向其中发送更新,而其他服务从中获取信息。您可以在客户端服务中缓存数据,然后您的事件可以成为缓存过期,而不是数据复制事件。