我正在遵循微服务架构,在该架构中我们获得了两个独立的服务

(UserService,OtherService)

UserService写入其自己的数据源(mysql和Redis)

客户端向UserService写入更新

另一方面,客户端需要从OtherService获取数据,而UserService需要一些用户状态。

OtherService的延迟和吞吐量非常重要。

几种选择:

当状态更改时,

  • UserService将更新OtherService(而不是我打破了OtherService的域职责,因为它不应维护用户声明
  • OtherService会(通过api)向UserService询问用户状态(增加很多延迟,这对我来说很关键。我可以缓存,但仍然..不确定那是正确的方法)
  • 在UserService写入和OtherService读取时共享了数据存储。.在共享相同数据源
  • 时,也打破了微服务原理

    你们认为正确的做法是什么?
    谢谢,
    射线。

    最佳答案

    对于这种情况,我们在被动端和消息队列上使用冗余的只读数据进行通信。我的意思是在其他服务端拥有一个用户状态表,并在消息来自用户服务时对其进行更新。它不会影响OtherService的可用性,性能和可伸缩性。依赖性将几乎为零。该方法唯一可能出现问题的方面可能是用户状态数据的更新。关于新鲜度问题,我一般说的是毫秒。如果对于您而言,新鲜度问题如此重要,那么最好的选择是将两种服务结合起来。

    10-05 23:13