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?

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

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

相关文章

优化MySQL数据库发布系统存储的方法有:1.mysql库主从读写分...
使用mysql的方法:在“我的电脑”→右键→“管理”→“服务”...
在mysql中查看root用户权限的方法:1.命令行启动mysql服务;...
MySQL主从复制是用来备份一个与主数据库一样环境的从数据库,...
运行mysql的方法1.启动mysql服务,在“我的电脑”→右键→“...
开启mysql的方法1.可以通过快捷键win+r,输入cmd,打开窗口,...