我正在开发一个带有微服务架构的网站,并且每个服务都拥有一个数据库。数据库存储微服务所需的数据。如何将数据库与微服务(和新服务)同步?
Post
,Video
服务需要的用户信息,所以无论是服务的订阅的NEW_USER_EVENT
。
NEW_USER_EVENT
将在有新用户注册时触发。
一旦服务收到NEW_USER_EVENT
,他们把传入的用户信息,每一个自己的数据库。所以他们可以在不询问User
服务的情况下做事。
到目前为止好。但问题来了:
- 如果我要创建一项新服务该怎么办?我如何获得注册用户信息并将其放入新服务中?
也许我可以从现有的服务中获取信息。但是这些事件是由消息队列推动的(NSQ
)。
如果我要从其中一个微服务中复制数据,我如何确定哪个服务具有最新的用户信息? (因为有些服务还没有收到最新的事件)
阅读更多:
The Hardest Part About Microservices: Your Data
Intro to Microservices, Part 4: Dependencies and Data Sharing
为什么“帖子”和“视频”以及其他服务需要了解用户创建?如果请求到达与那些服务从未听说过的用户有关,则他们不需要验证用户是否存在......他们可以简单地假定用户必须确实存在,否则他们将不会收到与用户。 –
@Michael这些服务收到了'username',他们会将它转换为'user_id',而不要求'User'服务进行松耦合。当新用户注册后,服务会在每个数据库中存储'username-userId'地图,以便他们可以在自己的服务中进行转换。 –
我知道这个问题可以通过使用JWT来解决,但是我仍然有类似的东西,而不仅仅是关于用户需要转换的东西。 –