【发布时间】:2021-04-23 07:47:12
【问题描述】:
我正在开发一个采用 Saga 编排模式和 Database-per-service 设计的 Spring Boot 微服务应用程序。我知道模式应该是异步的。但是,我有一个用例,我有一个需要从另一个服务查询数据的微服务。
以下是上下文:
我有 2 个服务,Order 和 Customer。 Order 有一个 customerId 字段。当客户端(通过 HTTP)请求所有订单时,Order 将需要使用特定的 customerId 查询 Customer 以获取 customerName。这将返回所有订单以及该订单的客户名称,而不是客户 ID。
考虑的解决方案:
-
对从
Order到Customer的查询使用同步通信(REST 或gRPC)。易于维护,但存在数据丢失风险。 -
Order中有重复的Customer表。这消除了在Order之外进行通信的需要,但需要保持数据同步。
【问题讨论】:
标签: spring-boot microservices saga