微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

mysql – 如何将数据库与微服务(和新服务)同步?

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

发布,视频服务需要用户信息,因此两个服务都订阅了NEW_USER_EVENT.

当有新用户注册时,将触发NEW_USER_EVENT.

enter image description here

一旦服务收到NEW_USER_EVENT,他们就会将传入的用户信息放入他们自己的每个数据库中.所以他们可以在不询问用户服务的情况下做事.

enter image description here

到现在为止还挺好.但问题出现了:

>如果我要创建新服务怎么办?如何获取注册用户信息并将其置于新服务中?

也许我可以从现有服务中获取信息.但事件由消息传递队列(NSQ)推送.

如果我要从其中一个微服务中复制数据,我如何确定哪个服务具有最新的用户信息? (因为有些服务没有收到最新的活动)

enter image description here

阅读更多:

The Hardest Part About Microservices: Your Data

Intro to Microservices,Part 4: Dependencies and Data Sharing

最佳答案

What if I’m going to create a new service? How do I get the registered user informations and put them in the new service?

您必须重播从一开始就订阅此新服务的所有事件(您应该有一个“事件存储”,用于保存应用程序中已经发生的所有事件).此外,您可以通过从最新的事件开始并回溯到事件来重放事件时放置一些更智能的逻辑.通过这种方式,您将能够首先恢复最有价值的数据.请小心正确处理相互依赖的事件.

Data source: The events are pushed by the messaging queue(NSQ),If I’m going to copy the data from one of the microservices,how do I make sure the copy source has the latest user informations?

你不是在谈论备份,对吗?

除了备份之外,在事件驱动的系统中,人们通常不会以经典的方式逐行复制数据.相反,它们只是从一开始就从事件存储重放事件,并将这些事件提供给新服务(或新实例)的事件处理程序.结果,新服务最终变得与系统的其他部分一致.

原文地址:https://www.jb51.cc/mysql/432874.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐