微服务 - 维护多个数据存储,初始数据加载等

6
在微服务的颗粒度方面,我了解到了2个披萨规则、可以在2周内开发的服务等。当阅读亚马逊、Netflix、Gilt等案例时,我们听说有数百个服务。虽然服务颗粒度是有意义的,但仍然不清楚每个微服务的数据存储。如果每个服务都存储/维护自己的数据,那么是否会有太多的数据存储?它可能是相同的逻辑实体,如产品、客户等,被分割并由相应的微服务存储/维护相关部分/属性。可能会有一个服务维护基本客户信息,另一个服务维护额外的客户信息,比如他的订阅信息或他的兴趣等。
以下是几个关于数据存储的问题:
  1. 备份、还原等维护问题是否会很大?
  2. 这些存储如何初始化数据?是否有任何最佳实践?组织很可能拥有大量的客户或产品数据,并且它们很可能在其他系统中进行管理。
  3. 多个数据存储的方法如何影响“全渠道”方法,在其中暗示获取所有数据的单一视图?组织可能一直在进行数据整合倡议以实现相同的目标。

编辑:稍微修改了主题


这不是适合在SO上提问的问题,你应该在http://programmers.stackexchange.com上提问。 - luboskrnac
1
@luboskrnac - 这个问题也不适合放在程序员社区。它太广泛了,而且实际上要求的内容有点不清楚。 - user1345223
1个回答

0
1.Will this not be a huge maintenance issue in terms of backups, restores etc?

从你的角度来看,是的,它会。我的意思是,到最后你不仅需要备份一个数据库服务器,而是需要备份数十个或数百个。但大多数人 - 至少我们是这样做的 - 使用云数据库服务来摆脱所有这些维护工作。

2.How is the initial data populated into these stores ? Are there any best practices around this ? Organisations are bound to have huge volumes of customer or product data & they will most likely be mastered in other systems.

我不确定是否有最佳方法,但我们创建了一个客户端来从遗留系统读取数据,然后将其转换并拆分为每个微服务的部分,并通过消耗它们的服务将它们推送到这些微服务中。 我们使用消息队列来确保迁移的健康状况。

3.How does this approach of multiple data stores impact the 'omni-channel' approach where it implies getting a single view of all data? Organizations might have had data consolidation initiatives going on to achieve the same.

好的,我不知道"全渠道"是什么意思,所以我无法回答这个问题。

最后,您提到了服务之间共享的逻辑实体。在实施微服务时,真正最困难的部分是定义每个服务将提供什么。在这样做的同时,您应该仔细审查每个服务的数据需求,并且这些服务应该尽可能地共享较少量的内容,例如只有实体ID等。至少这是我们正在做的事情。


你的回复正好在我阅读一些关于将这个问题移动到程序员.SE的机制的元帖子时到达 :-) 在Q2上,您是否总是使用服务将数据从遗留系统摄取到微服务系统中。虽然我理解不允许任何人直接访问微服务存储库的建议,但我想知道当记录数量达到数百万时,初始数据加载如何工作。甚至可能会有一些每日增量更新来自遗留系统需要导入,这可能会有数千条记录。 - user132797
在第三季度,我们听到很多解决方案都朝着“单一真相来源”的存储库发展,所有渠道(Web、移动或商店操作或客户服务)都可以在其中工作。但在微服务世界中,谈论的是去规范化和拥有多个存储库。我想知道这些是否矛盾。方法是放弃“单一真相来源”存储库,并在服务层而不是存储库层提供“单一真相来源”吗? - user132797
1
对于您的第一条评论,我们实际上为迁移实施了一些特殊服务。 - cool
在我看来,使用存储库并没有什么用,因为真正的专业知识和价值不在其中,而是在域模型中,你可以通过服务访问它。此外,如果您尝试直接使用存储库,会有很多问题,比如配置管理问题。我的意思是,当您使用服务集成系统时,这些服务将成为系统之间的合同,并且管理这些服务非常容易,特别是在所有SOA和Web服务方面。如果您将该集成层移动到存储库,则更改数据库模型、数据库技术甚至供应商将变得不可能。 - cool

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接