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

Microservices - Maintaining Multiple Data stores, initial data load etc

在 mictoservices 的粒度方面,已经阅读了 2 比萨规则、可以在 2 周内开发的服务等。当阅读 amazon、nelflix、gilt 的案例研究时,我们听说了 100 种服务。虽然服务粒度确实有意义,但我仍然不清楚这些微服务中的每一个的数据存储。如果每个服务 store/maintain 都有自己的数据,会不会有太多的数据存储?它可能是相同的逻辑实体,如产品、客户等,由相应的微服务切片和相关 portion/attributes stored/maintained。可能有一种服务维护基本的客户信息,另一种服务维护额外的客户信息,比如他的订阅信息或他的兴趣等。

有关数据存储的几个问题

  1. 就备份而言,这不是一个巨大的维护问题吗? 恢复等?
  2. 如何将初始数据填充到这些商店中?有什么最佳实践吗?组织必然拥有大量的客户或产品数据,并且很可能在其他系统中掌握这些数据。
  3. 这种多数据存储方法如何影响 'omni-channel' 方法,因为它意味着获得所有数据的单一视图?组织可能已经实施了数据整合计划以实现相同的目标

编辑:稍微编辑了主题

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.

嗯,我不知道 "omni-channel" 是什么,所以我无法回答。

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