我正在开发一个采用微服务架构的网站,每个服务都拥有一个数据库。数据库存储微服务所需的数据。
Post
, Video
服务需要用户信息,因此订阅的两个服务NEW_USER_EVENT
.
The NEW_USER_EVENT
当有新用户注册时将被触发。
一旦服务收到NEW_USER_EVENT
,他们把传入的用户信息放到各自的数据库中。这样他们就可以做事而无需询问User
服务。
到目前为止,一切都很好。但问题来了:
- 如果我要创建一项新服务怎么办?如何获取注册用户信息并将其放入新服务中?
也许我可以从现有的服务中获取信息。但事件是由消息队列推送的(NSQ
).
如果我要从其中一个微服务复制数据,如何确定哪个服务拥有最新的用户信息? (因为有些服务还没有收到最新的事件)
阅读更多:
微服务最难的部分:您的数据 http://blog.christianposta.com/microservices/the-hardest-part-about-microservices-data/
微服务简介,第 4 部分:依赖关系和数据共享 https://auth0.com/blog/introduction-to-microservices-part-4-dependencies/
如果我要创建一项新服务怎么办?如何获取注册用户信息并将其放入新服务中?
您必须重播此新服务从一开始就订阅的所有事件(您应该有一个“事件存储”来保存应用程序中已发生的所有事件)。此外,您可以在重播事件时添加更智能的逻辑,从最近的事件开始并及时返回。这样,您将能够首先恢复最有价值的数据。只要小心正确地处理相互依赖的事件即可。
数据源:事件由消息队列(NSQ)推送,如果我要从其中一个微服务复制数据,如何确保复制源具有最新的用户信息?
You are not谈论备份,对吧?
除了备份之外,在事件驱动的系统中,人们通常不会以经典方式逐行复制数据。相反,他们只是从一开始就重播事件存储中的事件,并将这些事件提供给新服务(或新实例)的事件处理程序。因此,新服务最终会与系统的其他部分保持一致。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)