什么是数据一致性(Data Consistency)
**数据一致性(Data Consistency)**其实是数据库系统中的概念。我们可以简单地把一致性理解为正确性或者完整性。
数据库事务(Database Transaction)
我们知道,在数据库系统中通常用事务来保证数据的一致性和完整性。
数据库事务,核心是数据库ACID(原子性、一致性、隔离性和持久性)属性。即对于一个数据库事务中所有的逻辑处理操作,只有这些作用在数据库上的逻辑处理操作全部都成功时,对数据库的修改才会永久更新到数据库中。若存在任何一个操作失败,对于在此之前的所有逻辑操作都会失效(即该事务被回滚)。
分布式一致性解决方案
而很多系统在实践中,使用以 Paxos
理论 为基础而衍生出来的变种和简化版。例如 Google
的 Chubby
、MegaStore
、Spanner
等系统,ZooKeeper
的 ZAB
协议,还有更加容易理解的 Raft
协议。
Paxos算法
基于消息传递且具有高度容错性的一致性算法。Paxos算法要解决的问题就是如何在可能发生几起宕机或网络异常的分布式系统中,快速且正确地在集群内部对某个数据的值达成一致,并且保证不论发生以上任何异常,都不会破坏整个系统的一致性。
Refer to https://swsmile.info/post/distributed-System-Data-Consistency-Paxos/
Raft算法
Refer to https://swsmile.info/post/distributed-System-Data-Consistency-Raft/
ZAB
分布式事务(Distributed Transaction)
https://swsmile.info/post/distributed-transaction/
Reference
- Wikipedia Two-phase commit protocol - https://en.wikipedia.org/wiki/Two-phase_commit_protocol
- Wikipedia Three-phase commit protocol - https://en.wikipedia.org/wiki/Three-phase_commit_protocol
- https://mp.weixin.qq.com/s/ELgV-bqveOPOwTZIWG2X0w
FEATURED TAGS
algorithm
algorithmproblem
architecturalpattern
architecture
aws
c#
cachesystem
codis
compile
concurrentcontrol
database
dataformat
datastructure
debug
design
designpattern
distributedsystem
django
docker
domain
engineering
freebsd
git
golang
grafana
hackintosh
hadoop
hardware
hexo
http
hugo
ios
iot
java
javaee
javascript
kafka
kubernetes
linux
linuxcommand
linuxio
lock
macos
markdown
microservices
mysql
nas
network
networkprogramming
nginx
node.js
npm
oop
openwrt
operatingsystem
padavan
performance
programming
prometheus
protobuf
python
redis
router
security
shell
software testing
spring
sql
systemdesign
truenas
ubuntu
vmware
vpn
windows
wmware
wordpress
xml
zookeeper