我们有几个微服务A和B,每个都是一个独立的模块,有自己的代码和自己的数据库,C *和Oracle。
服务B有多个表 - T1,T2,T3。
对于服务A中的每个POST请求,它必须联系服务B以仅从表T1获取一些元信息。由于服务A处于关键路径并且流量非常大,因此从服务B获取每个POST呼叫的信息将成为瓶颈。
我在考虑两个选项:
有没有更好的方法来设计这种仍然能够扩展的高一致性系统?
谢谢和问候
答案 0 :(得分:0)
一种选择是使用事件。
当服务B更改表T1中的数据时,它会引发域事件(将消息发布到消息代理或服务总线)。
服务A订阅该事件。当它收到消息时,它会更新表T1的本地副本。它不是记录系统,但它始终是最新的(在代理/总线的延迟和处理消息队列的时间内)。然后,当服务A需要数据时,它从本地T1提供服务。
有关此技术和其他技术的更多详细信息,请参阅Randy Shoup的Managing Data in Microservices,特别是有关微服务技术:共享数据的部分。