数据重复解决一个服务中的冗余问题



服务 A 和 B 通过发布/订阅消息传递系统共享一小部分域数据。服务 B 仅对服务 A 中域实体的一个属性感兴趣。服务 A 是此属性的"所有者"。属性更改时,特定事件数据集将写入服务 A 中的事件表,并发送到消息主题。

想法:为了避免数据重复(属性位于实体 AND 事件表中(,请将属性移动到事件表,并提供一个小接口来从此处写入/读取属性。

优点:服务 A 的业务逻辑开发人员不再忘记发送变更事件,因为数据存储在一个地方。

你怎么看这个想法?

简短的回答:不要这样做。

长答案:

理念:避免数据重复

重复数据和冗余数据之间存在差异。当您使用分布式系统和面向服务时,这样做是因为您希望简化交互并减少组件之间的耦合。但是,这是有代价的。您的架构越分散,耦合越少,需要的数据重复就越多。这在微服务中被带到了极端,其中实际上相同的数据可能存在于许多不同的地方。

将这种数据重复视为错误的本能是正确的 - 这是我们在学习编程和构建软件时所学到的!允许这种数据重复似乎在某种程度上违背了最佳实践。但是,使用微服务数据复制是一件好事,是系统的基本功能!它是具有许多巨大好处的建筑风格的推动者。如果没有重复的数据,您可以获得更少的分布和更多的耦合,这使得您的系统的构建、拥有和更改成本更高。

所以需要明确的是,我并不是说你的想法肯定是错误的 - 它可能是你的最佳解决方案,但我说不要在避免数据重复的基础上推动你的决策。

相关内容

最新更新