【发布时间】:2018-12-11 02:19:54
【问题描述】:
假设我有一个用于消息传递的微服务。微服务知道如何发送电子邮件。该服务具有电子邮件模板,这些模板具有某种“模板引擎”,例如 pugjs,并且可以替换消息正文中的数据。
我有一个用户服务(例如用于身份验证/授权)和一个银行帐户服务(每个用户都有一个)。在 User 微服务和 Bank Account 微服务之间,很明显我们不需要复制除用户 uuid 之外的任何数据。
但我现在想每天向每个用户发送一条消息,其中包含他们的帐户对帐单。消息传递微服务需要来自用户微服务和银行账户微服务的数据。
好的...这是现实世界的一个小案例。现在我知道要获得解耦微服务的好处,我必须遵循一些规则:
- 我无法在微服务之间共享数据库
- 我无法在微服务之间发出同步请求
好的...我可以使用代理,每次创建/更新新用户时,消息传递微服务都可以存储该数据。但实际上,这是一件愚蠢的事情:
- 我不想与这些数据不一致,而且很难保持同步
- 消息微服务的开发时间和复杂性现在必须考虑:监听并从事件中提取相关数据,保持其他域/服务的数据一致,管理数据库中保存的数据
- 想想消息传递微服务。我真的必须存储解析模板所需的所有数据吗?
我阅读了很多关于微服务和人们为他们的简单示例创建规则的内容。但是我从来没有真正看到像上面这样的好的解释和真实世界的例子。
那么如何让上面的微服务不重复数据呢?
【问题讨论】:
标签: microservices denormalization consistency