在微服务之间共享数据
Share data between microservices
我从事微服务架构,我想解决一个小的数据共享问题(我不知道这个词是否正确)。
示例:
我有一个用户服务,是存储电子邮件、用户名、密码的数据库...
我有另一个服务和他的数据库与用户数据一起工作,以生成包含用户信息的文档。
第二种服务访问用户数据的最佳方式是什么?在数据库中为她复制用户数据(如果他的工作需要)?
我不知道整个系统的设计,但我会让用户微服务在创建、更新或删除用户时发送一个事件。对此事件感兴趣的所有其他微服务都可以提取他们需要的必要用户数据。
使用微服务不可避免地会出现冗余数据,但每个微服务对数据的看法不同。
您的用户微服务可能会将用户更多地视为具有完整用户数据(例如 ID、密码、名字、姓氏、电子邮件、地址、组织等)的身份
另一方面,您的文档生成微服务可能会将用户视为文档的接收者,并且不需要所有用户数据。
有 'it depends' 的警告顾问回答。每个人对什么是微服务都有不同的描述,但对我来说,它们是可以独立部署的小型服务,可以很好地完成一件事(我通常订阅 fowlers definition of microsevices)。
实际上,我对微服务共享存储(无论是数据库、blob 存储等)没有任何问题,只要微服务处于同一 'service' 边界内即可。我所说的服务边界是指小型服务的逻辑分组,所有这些服务都协作以实现某些目标或业务能力。对我来说,从团队外部来看,这种逻辑分组形成了 'service'。一项服务 'the user service' 通常由许多小型微服务组成。
例如,您可能有一个 'User' 服务,其中包含许多微服务。一种用于从网站捕获兴趣并将其存储在数据库中,一种用于网站处理地址更改,一种用于 运行 定时作业并向系统中的其他服务发布事件。
但您不希望文档生成(报告服务?)从用户数据库读取和写入,在这种情况下(如 Stavreva 所说)服务之间的事件通信将是可行的方法。
只有具备业务领域知识的您才能决定两个微服务是否属于同一个服务,一个技巧是查看微服务所贡献的业务能力。
我从事微服务架构,我想解决一个小的数据共享问题(我不知道这个词是否正确)。
示例:
我有一个用户服务,是存储电子邮件、用户名、密码的数据库...
我有另一个服务和他的数据库与用户数据一起工作,以生成包含用户信息的文档。
第二种服务访问用户数据的最佳方式是什么?在数据库中为她复制用户数据(如果他的工作需要)?
我不知道整个系统的设计,但我会让用户微服务在创建、更新或删除用户时发送一个事件。对此事件感兴趣的所有其他微服务都可以提取他们需要的必要用户数据。
使用微服务不可避免地会出现冗余数据,但每个微服务对数据的看法不同。
您的用户微服务可能会将用户更多地视为具有完整用户数据(例如 ID、密码、名字、姓氏、电子邮件、地址、组织等)的身份 另一方面,您的文档生成微服务可能会将用户视为文档的接收者,并且不需要所有用户数据。
有 'it depends' 的警告顾问回答。每个人对什么是微服务都有不同的描述,但对我来说,它们是可以独立部署的小型服务,可以很好地完成一件事(我通常订阅 fowlers definition of microsevices)。
实际上,我对微服务共享存储(无论是数据库、blob 存储等)没有任何问题,只要微服务处于同一 'service' 边界内即可。我所说的服务边界是指小型服务的逻辑分组,所有这些服务都协作以实现某些目标或业务能力。对我来说,从团队外部来看,这种逻辑分组形成了 'service'。一项服务 'the user service' 通常由许多小型微服务组成。
例如,您可能有一个 'User' 服务,其中包含许多微服务。一种用于从网站捕获兴趣并将其存储在数据库中,一种用于网站处理地址更改,一种用于 运行 定时作业并向系统中的其他服务发布事件。
但您不希望文档生成(报告服务?)从用户数据库读取和写入,在这种情况下(如 Stavreva 所说)服务之间的事件通信将是可行的方法。
只有具备业务领域知识的您才能决定两个微服务是否属于同一个服务,一个技巧是查看微服务所贡献的业务能力。