我们正试图从单一体系结构转向微服务体系结构。我们想到了什么是最好的方式来隔离我们的服务,并开始这样做,一个一个。现在,我们有一个问题,我们应该如何作出依赖的电话。让我详细解释一下。
假设我们有不同的微观服务。其中一个有关于产品的详细信息。其他微服务以产品为中心,因此它们将是用于交易、订单、报价等的服务。所有的微服务都使用gRPC进行通信。
所有这些服务都将引用包含项目细节的项目微服务(引用将通过ID完成)。因此,其他服务中的每一个都只具有项目的ID。
现在的问题(或者不是)是,当我们希望看到一个用户完成的事务列表时,我们还需要项目的详细信息。类似的订单列表,再一次我们需要详细的项目。(不是所有细节,而是一些细节)。
我们可以想出两种办法来处理这个问题。
注意:我们有大约10个依赖于项目数据库的服务。在一个页面上,通常会有5-6个微服务的调用.好的是我们有自己的网关,所有的电话都是并行的。因此,如果我们使用第一种方法,就会有最多2次连续调用。
发布于 2019-04-28 09:05:17
Microservices必须拥有他们正在处理的数据。
您的第一种方法基本上建议使用数据库-微服务。这不是一个好主意,而性能并不是唯一的原因。您正在创建一个巨大的依赖磁铁,并为整个应用程序创建一个单一的故障点。
在许多情况下,由于业务原因,您实际上希望存储相关的历史信息。但是,让我们考虑一下您真正想要处理的最新数据的情况。一个很好的例子就是搜索服务。
很可能您的搜索服务的数据存储需求与产品目录的数据存储需求有很大的不同,或者您的其他服务在这方面有很大的不同。您可能不需要历史数据,您可能不需要所有数据,您可能需要存储单词频率,将其与您的博客或参考资料中的提到联系起来,等等。
通过赋予搜索服务对数据的所有权,您允许团队根据特定服务的特定需求选择最优的方法和技术。
https://softwareengineering.stackexchange.com/questions/387166
复制相似问题