容灾数据一致性保障探讨
在容灾架构中,最重要的就是机房间数据一致性的保证。要达到 RPO=0 的限制,数据就必须保证强一致性。但是,根据 CAP 理论,要保证数据的一致性,就必然会牺牲数据的可用性或者分区容忍性。但是对于互联网架构,可用性和分区容忍性也是很重要的技术指标。
这里,提出一个关于容灾数据一致性的观点,就是分情况差异化处理。
对于配置类数据,如业务配置、内部合约、数据分片路由等。由于变化的频率比较高,同时数据一致性要求高,不一致造成的影响大。这种情况下,就采用强一致性保证,忽略分区容忍性,对于部分机房不可用或者脑裂的情况,不允许这部分数据变更。
对于状态类数据,如用户信息、商户信息、资产信息等。变更频率比较低,同时数据以读取操作为主。这部分数据的变更,就考虑共识的数据一致性,追求数据一致性和分区容忍性,但是可以放弃一部分可用性的指标,比如在多机房故障共识无法达成的情况下,变更失败。
对于交易类数据,由于我们多采用用户或者商户维度的路由原则。这部分数据变化的频率比较高,多机房之间的同步基本也只是灾备情况下才需要生效。所以这部分数据可以采用最终一致性同步的方式。采用快照+Event 的同步逻辑。对于快照,采用最大能力同步;对于 Event,采用共识的逻辑。在数据恢复的时候,快照+Event 回放达到最终一致性。
版权声明: 本文为 InfoQ 作者【agnostic】的原创文章。
原文链接:【http://xie.infoq.cn/article/1d04eaa99b9ccc93db380eb21】。文章转载请联系作者。
评论