在微服务架构中拥有多个用户表

Having multiple user tables in a microservice architecture

我目前正在从事一个更大的项目,该项目使用微服务架构。

该项目将处理超过 100 000 名用户,所有这些用户都将存储在单独的服务中。问题是在其他数据库中处理与这些用户的关系的最佳解决方案是什么。我们目前只使用关系数据库(不是 NoSQL)。

关于每项服务是否应该有一个用户 table 持有该服务特定的 ID 和可能的数据,或者所有数据是否应该保存在中央用户服务中并只添加索引的任何意见userId 列?

这取决于您的业务和非功能需求。

例如,如果您的下游微服务不需要用户实体中的其他字段,那么您不应该创建任何本地表。 "need" 我的意思是为了显示目的。

如果您需要其他微服务中的某些属性,那么您应该至少有一个包含这些字段的本地缓存(即 SQL Table)。这是确保系统具有弹性所必需的;例如,如果 Users 微服务失败或变慢,则其他微服务不会受到影响;他们应该能够独立运作。在最坏的情况下,这些字段将为空或以默认值归档,即 "information not yet available".

您的微服务也会更快,因为它们不需要从远程源加入数据来满足用户的请求。