【发布时间】:2022-10-23 16:08:50
【问题描述】:
假设我有一项管理仓库的服务(更新频率不高)。我有一项销售服务,需要商店列表(根据需要进行搜索和使用)。如果我从商店服务中获取商店列表并将其保存在我的销售服务中(比如说在 redis 中),但如果商店列表发生更改,请确保更新 redis。会不会违反微服务架构的单一职责原则?
【问题讨论】:
标签: architecture microservices single-responsibility-principle
假设我有一项管理仓库的服务(更新频率不高)。我有一项销售服务,需要商店列表(根据需要进行搜索和使用)。如果我从商店服务中获取商店列表并将其保存在我的销售服务中(比如说在 redis 中),但如果商店列表发生更改,请确保更新 redis。会不会违反微服务架构的单一职责原则?
【问题讨论】:
标签: architecture microservices single-responsibility-principle
不,它没有,实际上这是微服务架构中非常常见的方法,当服务存储来自另一个服务的相关数据的副本并使用某种机制来同步它(通常使用通过消息代理的一些异步通信)。
存储数据副本不会从管理它的服务转移该数据的所有权。
【讨论】:
这很常见,您有一个微服务模式 (CQRS)。
如果您需要来自其他服务/微服务的一些信息来加入您的数据,那么您需要存储该信息。
【讨论】:
每当您做出设计决策时,无论是始终向下游系统发出请求还是使用本地副本,那么您基本上都是在进行权衡分析表现和数据新鲜度.
缓存一个微服务的数据不会违反数据所有权,因为缓存只是读取数据,不会删除或更新现有数据。它类似于拥有一个领导者(主) - 多个追随者设置或读写锁。直到只有一个地方可以创建、修改或删除数据,然后才能以正确的方式实现数据所有权。
【讨论】: