我有 2 项微服务,一项用于订单
,一项用于客户
如下例所示
http://microservices.io/patterns/data/database-per-service.html
没有任何问题。
我可以根据输入 CustomerId
Customers
数据和 Orders
数据
但是现在有新的需求,需要开发新的屏幕
其中显示输入日期的 Orders
,并在每个 Order
信息旁边显示 CustomerName
何时实现
我可以获取输入日期的订单
列表
而是根据CustomerIds
列表显示相应的CustomerNames
我对 Customer
微服务进行多个 API 调用,每次调用都会发送 CustomerId
来获取 CustomerName
这导致我们有更多的延迟
我知道上面的解决方案很糟糕
那么有什么想法吗?
最佳答案
微服务架构的要点是将您的问题域分割成(技术上、组织上和语义上)独立的部分。制作“微服务”美化(apified)表实际上产生的问题比它解决的问题还要多,如果它能解决任何问题的话。
以下是首先要做的几件事:
- 列出架构限制(即进行微服务的原因)。是否是单独的扩展能力、组织问题、使团队独立等?
- 列出问题域中与业务相关的边界(即理论上不需要彼此工作或不需要同步通信的部分)。
根据这些信息,以下是解决问题的几种方法:
- 根据业务边界而不是技术边界重组服务。这意味着不使用表格或图层或其他技术 Material 来拆分功能。服务应该是问题域的完整垂直切片。
- 或者作为解决方法,创建第三个系统来聚合数据并创建报告。
- 或者,如果您发现实际上没有理由保留微服务方法,只需按照您习惯的方式进行即可。
关于join - 微服务(应用程序级连接)更多 API 调用 - 导致更多延迟?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51463528/