join - 微服务(应用程序级连接)更多 API 调用 - 导致更多延迟?
问题描述
我有 2 个微服务,一个用于一个Orders
,一个用于Customers
如下示例
http://microservices.io/patterns/data/database-per-service.html
哪个工作没有任何问题。
我可以根据输入列出Customers
数据和数据Orders
CustomerId
但是现在有一个新的需求来开发一个新的屏幕,
它显示Orders
输入日期并在每个信息CustomerName
旁边显示Order
在执行时,
我可以获取Orders
输入日期列表,但是要根据列表
显示相应的,
我对微服务进行了多个 API 调用,每个调用都发送到 get
导致我们有更多的延迟CustomerNames
CustomerIds
Customer
CustomerId
CustomerName
我知道上述解决方案是一个糟糕的解决方案
所以有什么想法吗?
解决方案
微服务架构的重点是将问题域拆分为(技术上、组织上和语义上)独立的部分。制作“微服务”美化(应用)表实际上会产生比它解决的问题更多的问题,如果它完全解决任何问题的话。
这里有几件事首先要做:
- 列出架构约束(即做微服务的原因)。是独立的扩展能力、组织问题、使团队独立等吗?
- 列出问题域中与业务相关的边界(即理论上不需要彼此工作或不需要同步通信的部分)。
有了这些信息,这里有一些解决问题的方法:
- 基于业务边界而不是技术边界重构服务。这意味着不使用表格或层或其他技术材料来拆分功能。服务应该是问题域的完整垂直部分。
- 或者作为一种变通方法,创建一个汇总数据并可以创建报告的第三个系统。
- 或者,如果您发现实际上没有理由保留微服务方法,只需按照您习惯的方式进行即可。
推荐阅读
- ruby-on-rails - 打开 Heroku 时出现问题,但网页只是出现“您要查找的页面不存在”的错误。
- python - 如何在退出时阻止多处理发送垃圾邮件?
- c# - 按字符串列表拆分内容
- java - 读取文本文件并制作二维数组
- android - Flutter如何从android studio中的flutter应用程序获取发布版本
- asp.net - 是否可以从选定的清单 SQL Server 中进行选择
- caching - 在 S3 上强制浏览器缓存失效
- bash - Bash 脚本循环遍历 hdfs 上的文件
- java - 在 @Configuration 类中使用 application.properties,@Bean 方法现在可以工作
- javascript - plotly.js:如何在一秒钟内绘制 100 个点