微服务架构数据共享/管理

时间:2018-11-01 11:17:40

标签: design-patterns microservices

我的目标是使用微服务方法开发企业应用程序。我面临的紧迫问题之一是如何在微服务之间共享分布式数据。

Microservices data sharing image

Customer和Order微服务上方的图像都具有客户详细信息,尽管在Order微服务中,客户信息仅被带到必填字段。我知道有一种方法可以使用事件来维护微服务之间的数据一致性。

问题

  1. 此模型(参考图片)实用/可扩展吗?
  2. 如果客户数据     跨越10个微服务,这是否意味着我有80万客户     那么所有10个微服务将拥有80万个数据
  3. 什么是最好的         对于大型数据集,在多个数据库之间共享         微服务。

1 个答案:

答案 0 :(得分:0)

微服务必须松散耦合,以便它们可以独立开发和部署,每个微服务都有自己的目标, raison d'être,微服务具有定义明确且无歧义的API可以访问他的数据。

对于您来说,如果您有Customer microservice,则它必须管理有关“客户”的所有数据和操作,如果您需要Order microservice中有关特定客户的一些数据,则必须使用{{1} } 通过他的API 来检索该数据; Customer microservice不得存储有关客户的任何数据。

例如,如果您需要Order microservice中的John Doe数据,则必须使用Order microservice来为id = 22 this diagram shows the idea behind my answer的客户检索数据。

解决您的问题...

  1. 不,它不可扩展,因为您具有数据冗余性。
  2. 不,只有一个微服务必须管理客户数据,而其他微服务必须使用它。
  3. 最好通过众所周知的模式进行解释来解决此问题; Database per service pattern