架构师日记-为什么数据一致性那么难

时间:2021-10-31 01:23:29

作者:京东零售 刘慧卿

一 前言

在现代大型分布式软件系统中,有一个绕不过去的课题,那就是如何保证系统的数据一致性。著名的Paxos算法(Megastore、Spanner),Raft协议(ETCD、TiKV、Consul ),ZAB协议(ZooKeeper)等分布式一致性解决方案,都是在此背景下而诞生的。

数据一致性保障为什么难呢?先来看一下我们熟知的本地数据库事务是如何实现数据一致性的。众所周知,数据库事务有ACID四大特性,即原子性 (Atomicity)、 一致性(Consistency)、隔离性(Isolation) 和持久性(Durability)。任何支持数据库事务的存储引擎都需要满足这四大特性。以Mysql数据库的Innodb存储引擎的设计实现举例,数据一致性过程如下:

1. 持久性:通过binlog、redolog来实现;(用于数据重放,从库备份)