join - 微服务(应用程序级连接)更多 API 调用 - 导致更多延迟?

标签 join architecture microservices decoupling

我有 2 项微服务,一项用于订单,一项用于客户
如下例所示
http://microservices.io/patterns/data/database-per-service.html
enter image description here

没有任何问题。
我可以根据输入 CustomerId

列出 Customers 数据和 Orders 数据

但是现在有新的需求,需要开发新的屏幕
其中显示输入日期的 Orders ,并在每个 Order 信息旁边显示 CustomerName

何时实现
我可以获取输入日期的订单列表
而是根据CustomerIds列表显示相应的CustomerNames
我对 Customer 微服务进行多个 API 调用,每次调用都会发送 CustomerId 来获取 CustomerName
这导致我们有更多的延迟

我知道上面的解决方案很糟糕
那么有什么想法吗?

最佳答案

微服务架构的要点是将您的问题域分割成(技术上、组织上和语义上)独立的部分。制作“微服务”美化(apified)表实际上产生的问题比它解决的问题还要多,如果它能解决任何问题的话。

以下是首先要做的几件事:

  • 列出架构限制(即进行微服务的原因)。是否是单独的扩展能力、组织问题、使团队独立等?
  • 列出问题域中与业务相关的边界(即理论上不需要彼此工作或不需要同步通信的部分)。

根据这些信息,以下是解决问题的几种方法:

  1. 根据业务边界而不是技术边界重组服务。这意味着使用表格或图层或其他技术 Material 来拆分功能。服务应该是问题域的完整垂直切片。
  2. 或者作为解决方法,创建第三个系统来聚合数据并创建报告。
  3. 或者,如果您发现实际上没有理由保留微服务方法,只需按照您习惯的方式进行即可。

关于join - 微服务(应用程序级连接)更多 API 调用 - 导致更多延迟?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51463528/

相关文章:

mysql - 如何将数据库与微服务(以及新服务)同步?

python - 查找 2 个 pandas 数据帧的行之间的差异

sql - 有条件的自连接表

linux - 当缺少 dpkg 架构时,如何区分 linux 上的 mips cpu 类型?

architecture - 如何向用户提出带有数据的 Web 应用程序演示?

java - Spring Cloud Gateway 返回空响应

mysql - SQL 连接尊重顺序的两个表

MySQL 加入 'on clause' 中的未知列

model-view-controller - MVC 的替代品是什么?

java - UI 微服务 - 没有安全性有什么影响吗?