Yam*_*mel 6 mysql database message-queue nsq microservices
我正在开发一个具有微服务架构的网站,每个服务都拥有一个数据库.数据库存储微服务所需的数据.
Post,Video服务需要用户信息,所以两个服务都订阅了NEW_USER_EVENT.
的NEW_USER_EVENT时候,那里已经注册的新用户将被触发.
一旦服务收到NEW_USER_EVENT,他们就将传入的用户信息放到他们自己的每个数据库中.所以他们可以在不询问User服务的情况下做事.
到现在为止还挺好.但问题出现了:
也许我可以从现有服务中获取信息.但事件由消息队列(NSQ)推送.
如果我要从其中一个微服务中复制数据,我如何确定哪个服务具有最新的用户信息?(因为有些服务没有收到最新的活动)
阅读更多:
如果我要创建一项新服务怎么办?如何获取注册用户信息并将其放入新服务中?
您必须重播此新服务从一开始就订阅的所有事件(您应该有一个“事件存储”来保存应用程序中已发生的所有事件)。此外,您可以在重播事件时添加更智能的逻辑,从最近的事件开始并及时返回。这样,您将能够首先恢复最有价值的数据。只要小心正确地处理相互依赖的事件即可。
数据源:事件由消息队列(NSQ)推送,如果我要从其中一个微服务复制数据,如何确保复制源具有最新的用户信息?
您不是在谈论进行备份,对吗?
除了备份之外,在事件驱动的系统中,人们通常不会以经典方式逐行复制数据。相反,他们只是从一开始就重播事件存储中的事件,并将这些事件提供给新服务(或新实例)的事件处理程序。因此,新服务最终会与系统的其他部分保持一致。
| 归档时间: |
|
| 查看次数: |
1481 次 |
| 最近记录: |