知识卡片

数据闭环:去依赖化的四步实现——异构、原子化、聚合、存储

普通读书笔记卡

内容

数据闭环指的是数据的自我管理——系统需要的数据都在自己体系内维护,不依赖任何其他外部系统去实时获取,这样带来的直接好处是”别人抖动跟我没关系”:无论上游依赖的服务本身有没有出问题、响应有没有变慢,都不会直接传导成本系统的性能抖动。实现数据闭环分四步:第一步数据异构,把各个依赖系统的数据主动搬过来、按自己的需要重新存储,而不是每次请求都实时回源查询;第二步数据原子化,异构过来的数据保持最细粒度、未加工的状态(比如商品基本信息、扩展属性、规格参数等分别独立存储),这样面对未来层出不穷的新需求,总能基于这份原子数据重新加工组合,不需要因为一个新需求就重新设计整个数据模型;第三步数据聚合,因为原子化数据天然是分散的,前端如果要一次性展示完整信息,需要mget多份分散的数据,性能不理想,所以需要一个额外的聚合步骤,把多个原子数据聚合成一个大JSON,让前端展示只需要一次get就能拿到全部需要的数据;第四步数据存储,选择能同时满足容量和性能要求的存储引擎(案例中用了Redis加持久化引擎的组合,配合Hash Tag机制把相关数据哈希到同一分片,避免mget时跨分片合并)。这四步的关系是层层递进的取舍:原子化牺牲了”一次读取的便利性”换来了”应对未知需求变化的灵活性”,聚合再把这份牺牲的便利性用一个额外步骤补回来——先追求灵活、再补齐性能,而不是一开始就为了眼前的性能,把数据设计成聚合好的、难以应对未来变化的形态。

参考来源

- 位置:《高可用架构(第1卷)》第3章《电商架构热点专题》"3.1 亿级商品详情页架构演进技术解密"节,"3.1.2 商品详情页发展史"(源文件:_epub-src/OEBPS/Text/Chapter3_1_3.xhtml) - 结论依据:原文说明"数据闭环,即数据的自我管理……去依赖化,这样得到的好处就是别人抖动跟我没关系……数据原子化处理,数据异构的数据是原子化数据,这样未来我们可以对这些数据再加工再处理而响应变化的需求……数据聚合是将多个原子数据聚合为一个大JSON数据",直接支撑本卡片的四步结构。 - 原始内容:数据闭环,即数据的自我管理,或者说是数据都在自己系统里维护,不依赖于任何其他系统,去依赖化,这样得到的好处就是别人抖动跟我没关系……数据原子化处理……未来我们可以对这些数据再加工再处理而响应变化的需求……数据聚合是将多个原子数据聚合为一个大JSON数据。