【发布时间】:2019-07-24 14:30:34
【问题描述】:
如果 service_A 正在发送 2 个写请求,write_1 和 write_2。由于网络不可靠,write_2首先到达service_B,其次是write_1。我们如何维持秩序?
如果write_1是更新新值,write_2是删除值。到达顺序很重要。
我可以看到每个服务到服务的交互都存在这个问题。但是我在大多数微服务设计书籍中都没有看到任何关于这个问题的文章。
【问题讨论】:
标签: distributed
如果 service_A 正在发送 2 个写请求,write_1 和 write_2。由于网络不可靠,write_2首先到达service_B,其次是write_1。我们如何维持秩序?
如果write_1是更新新值,write_2是删除值。到达顺序很重要。
我可以看到每个服务到服务的交互都存在这个问题。但是我在大多数微服务设计书籍中都没有看到任何关于这个问题的文章。
【问题讨论】:
标签: distributed
由于请求来自同一个系统,解决这个问题很简单。 Service_A 只是保持一个运行计数器,记录它发送了多少消息,并将下一个整数 ID 附加到每条消息。例如,当 Service_B 收到一条带有写入请求且 ID 为 7 的消息时,它不会为该请求提供服务,直到它收到并为带有 ID 6 的消息提供服务。所有这些都类似于 TCP 等其他协议的维护方式订购。
【讨论】: