我有2个微服务,一个是Orders
,另一个是Customers
就像下面的例子一样
http://microservices.io/patterns/data/database-per-service.html
可以正常工作的
我可以根据输入Customers
Orders
数据和CustomerId
数据
但是现在有开发新屏幕的新要求
其中显示了Orders
输入的日期,并在每个CustomerName
信息旁边显示了Order
实施时
我可以获取输入日期Orders
的列表
但是要根据CustomerNames
的列表显示相应的CustomerIds
我对Customer
微服务进行了多次API调用,每次调用都发送CustomerId
以获得CustomerName
这导致我们更多的延迟
我知道以上解决方案都是不好的解决方案
有什么想法吗?
答案 0 :(得分:1)
微服务架构的重点是将您的问题域分为(技术上,组织上和语义上)独立的 部分。如果“微服务”表可以解决任何问题,那么实际上会产生比其解决的问题更多的问题。
首先要做的几件事:
有了这些信息,以下是解决问题的几种方法:
答案 1 :(得分:1)
新需求需要跨域数据
下面是方法
在每个呼叫中更新客户ID和姓名。问题是延迟 会有多次往返
在Order Service中具有ID为ID的所有CustomerName的缓存(我是 假设有一个有限的客户)。问题将是,何时刷新 缓存或使缓存无效,为此,您可能需要公开一些 休息电话使字段无效。对于不是的新客户 在缓存中去并从数据库中获取并更新缓存以供将来使用。 )
使用CQRS方式,其中所有需要的数据(订单客户等)进入单独的表。现在,在此架构中,您可以创建一个复合SQL查询。这将消除往返等...