如何将数据库与微服务(以及新的)同步?

2024-04-02

我正在开发一个采用微服务架构的网站,每个服务都拥有一个数据库。数据库存储微服务所需的数据。


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(使用前将#替换为@)

如何将数据库与微服务(以及新的)同步? 的相关文章

随机推荐