我目前正在利用微服务架构来从事一个更大的项目。
该项目将处理超过10万个用户,所有用户将存储在单独的服务中。问题是在其他数据库中处理与这些用户的关系的最佳解决方案是什么。目前,我们仅使用关系数据库(不是NoSQL)。
对于每个服务是否应该有一个包含ID的用户表以及可能特定于该服务的数据,或者是否所有数据都应保存在中央用户服务中并仅在userId列上添加索引的意见?
答案 0 :(得分:2)
这取决于您的业务和非功能性需求。
例如,如果您的下游微服务不需要User实体中的其他字段,那么您不应创建任何本地表。 “需要”是指显示目的。
如果您需要其他微服务中的某些属性,则至少应具有包含这些字段的本地缓存(即SQL Table
)。这是确保系统弹性的必要条件;例如,如果Users
微服务失败或运行缓慢,则其他微服务将不会受到影响;他们应该能够独立运作。在最坏的情况下,这些字段将为空或使用默认值(即“信息尚不可用”)归档。
您的微服务也将更快,因为它们不需要从远程源连接数据来满足用户的请求。