参考
从Paxos到Zookeeper分布式一致性原理与实践(倪超 著)
CouchDB权威指南 (莱诺 译)

集中式

有中心服务器概念。数据集中存放在单台数据库中,业务系统集中部署在单台服务器上。
集中式的最大优点是部署简单。

分布式

概念:分布式系统是一个硬件或软件组件分布在不同的网络计算机上,彼此仅仅依靠网络消息进行通信和协调的系统
特点:分布性、对等性、并发性、无全局时钟、随机故障

说白了,分布式系统面临的最大挑战有两个:
通信协调
可靠的通信系统是分布式系统运行的基石(但是很遗憾,世界上从来就没有什么可靠的通信系统),现在的架构趋势是用统一的消息系统(消息总线)替代直接的组件间消息传递机制(P2P/Restflu/Socket/gRPC...),这一块现在的解决方案是Kafka集群/Redis集群等。
协调的核心要义是实现分布式事务(准确来讲是分布式一致性),解决方案是Zookeeper。

分布式事务

事务

事务是“一系列对数据的读写操作”,事务具有ACID的特性。

ACID:原子性、一致性、隔离性、持久性

原子性:要么全部成功,要么全部失败

一致性:从A账户划100到B账户,A账户必须减100,同时B账户必须加100。而不能A账户减100,同时B账户只加50。

隔离性:事物之间不会发生相互干扰。

持久性:事务一旦成功就永久生效,不会丢失。

事务的ACID特性在集中式系统中是依赖“数据库内置事务”来实现的。在分布式系统中实现的方案有如下两种:

1、使用现有的分布式数据库技术,例如Mycat中间件技术、HBase分布式数据库。

2、借助Zookeeper实现分布式事务(实际上HBase的分布式事务实现部分也是基于Zookeeper)。

CAP定理

分布式系统有三个基本需求:一致性、可用性、分区容错性。

其中分区容错性是指,分布式系统的网络被划分为若干个子网,子网内节点属同一广播域。这样子网间通信可靠性大大低于子网内通信。在子网间通信中断的情况下系统仍能够提供一致性和可用性服务,这就叫分区容错性。

任何分布式系统最多只能满三个基本特性中的两个。

从数据存储的角度来看分布式的数据存储系统有三个基本的需求:

· 数据一致性:即使存在并发的更新,所有客户端看任何时候看到的数据必须是一致的。

· 可用性:所有客户端总能得到某一版本的数据。

· 数据库分割性:数据可分割存储在多台服务器上。

这三个需求是没办法同时满足的。

关系型数据库系统(MySQL,SQL Server)满足的是 一致性+可用性

分布式一致性算法Paxos满足的是 一致性+可分割性

分布式数据库系统(CouchDB)满足 可用性+可分割性 ,实际上就是牺牲一致性、争取可用性、达到最终一致性。

BASE理论

分布式系统很难达到强一致性(ACID),但可以采用适当方式满足BASE(基本可用、弱状态、最终一致性)

Zookeeper

Zookeeper的核心价值是实现分布式事务,即采用ZAB的一致性协议在分布式系统中实现一致性。

介绍:Zookeeper是一个典型的分布式数据一致性解决方案。分布式应用程序可以基于它实现诸如数据发布/订阅,负载均衡、命名服务、分布式协调通知、集群管理、Master选举、分布式锁、分布式队列等功能。Zookeeper可以保证如下分布式一致性特性:顺序一致性,原子性,单一视图、可靠性、实时性。

 

 

 

 

 

 

 

 

 

 

 

 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐