首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >微服务中的数据复制

微服务中的数据复制
EN

Software Engineering用户
提问于 2019-02-14 04:37:07
回答 1查看 1.6K关注 0票数 2

我们正试图从单一体系结构转向微服务体系结构。我们想到了什么是最好的方式来隔离我们的服务,并开始这样做,一个一个。现在,我们有一个问题,我们应该如何作出依赖的电话。让我详细解释一下。

假设我们有不同的微观服务。其中一个有关于产品的详细信息。其他微服务以产品为中心,因此它们将是用于交易、订单、报价等的服务。所有的微服务都使用gRPC进行通信。

所有这些服务都将引用包含项目细节的项目微服务(引用将通过ID完成)。因此,其他服务中的每一个都只具有项目的ID。

现在的问题(或者不是)是,当我们希望看到一个用户完成的事务列表时,我们还需要项目的详细信息。类似的订单列表,再一次我们需要详细的项目。(不是所有细节,而是一些细节)。

我们可以想出两种办法来处理这个问题。

  • 一种是进行两次后续调用,一次是对事务或订单微服务,而不是对项目微服务,以获得所需的部分细节。在这里,我们有我们自己的网关,它在性能和网络方面非常高效。
  • 另一种方法是使用事务所需的pub/sub复制部分数据,并在服务本身中订购微服务。因此,基本上类似于order微服务中的一个新表,并在服务中使用一个连接来服务数据。从而消除了进行依赖调用的需要。

,所以首先,服务的隔离是正确的?

其次,这两种方法中哪一种是更好的设计

注意:我们有大约10个依赖于项目数据库的服务。在一个页面上,通常会有5-6个微服务的调用.好的是我们有自己的网关,所有的电话都是并行的。因此,如果我们使用第一种方法,就会有最多2次连续调用。

EN

回答 1

Software Engineering用户

发布于 2019-04-28 09:05:17

Microservices必须拥有他们正在处理的数据。

您的第一种方法基本上建议使用数据库-微服务。这不是一个好主意,而性能并不是唯一的原因。您正在创建一个巨大的依赖磁铁,并为整个应用程序创建一个单一的故障点。

在许多情况下,由于业务原因,您实际上希望存储相关的历史信息。但是,让我们考虑一下您真正想要处理的最新数据的情况。一个很好的例子就是搜索服务。

很可能您的搜索服务的数据存储需求与产品目录的数据存储需求有很大的不同,或者您的其他服务在这方面有很大的不同。您可能不需要历史数据,您可能不需要所有数据,您可能需要存储单词频率,将其与您的博客或参考资料中的提到联系起来,等等。

通过赋予搜索服务对数据的所有权,您允许团队根据特定服务的特定需求选择最优的方法和技术。

票数 2
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/387166

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档