分布式的演练、Zookeeper基本概念(一)

1、从集中式到分布式

在20世纪60年代大型主机被发明出来之后,凭借其超强的计算和io处理能力以及在稳定型和安全性方面的卓越表现,在很长的一段时间内,大型主机引领了计算机行业以及商业计算领域的发展,在大型主机的研发上最知名的当属IBM,其主导研发的革命性产品System/360系列大型主机,是计算机发展史上的一个里程碑,当时,IT界进入了大型的主机时代。
伴随着大型主机时代的到来,集中式的计算机系统架构也成为了主流,在那个时候,由于大型主机卓越性能和良好的稳定性,其在处理能力方面的优势非常的明显,使得IT系统快速进入集中式处理阶段,其对应的计算机系统成为集中式系统。但是,从20世纪80年代以来,计算机系统向网络化和微型化的发展日趋明显,传统的集中式处理模式越来越不能适应人们的需求,主要表现在以下几个方面:
1.大型主机的人才培养成本非常的高,通常一台大型主机汇集了大量精密的计算机组件,操作非常的复杂,这对于一个运维人员需要掌握的技术和细节提出了非常高的要求。
2.大型主机也是非常的昂贵。通常配置一台比较好的IBM大型主机,售价很高,因此也只有像政府,金融和电信企业才有能力去采购。
3.集中式系统存在严重的单点问题。一旦一台机器出现了故障,将会导致系统处于不可用的状态。
4.大型主机在市场的份额越来越少。而是采用微型计算机。

1.1、集中式
那什么是集中式系统呢?集中式系统指的是一台或者多台服务器组成中心节点,数据集中存储在这个中心结点,同时,系统的所有业务都在这个中心结点来集中的处理。集中式系统存在部署简单,但是不友好,无须考虑考虑对对个服务如何多节点的协作,也不需要考虑多节点之间的分布式事务问题。

1.2、分布式
在分布式系统的概念和设计一书中是这么定义的:分布式系统是一个硬件和软件组件分布在一个或者多个的容器上,彼此之间通过消息传递进行通信和协调的系统。 这些软件组件相互协助构成了业务的链路回路。这些组件的分布,可以是同一台服务器上的不同容器,也可以在同一个机房,同一个城市等等。
分布式的特点:
1)分布性:分布式系统的多台服务器会在空间上随意的分布,机器的分布情况也会随着变动。
2)对等性:分布式系统中的组件和组件之间没有主从之分,所有的组件节点都是平等的。
3)并发性:同一个分布式系统中的多个节点,可能会并发的对一些资源访问,数据库和缓存存储等等,如何高效的协调分布式节点成为了分布式系统成为最大的挑战。
4)缺乏时钟性:一个分布式系统是由一系列在空间上随意分布的多个线程组成,具有明显的分布性。这些进程之间通过交换消息来进行相互通信。因此,在分布式系统中,很难定义两个事件究竟是谁先谁后,原因就是因为分布式缺乏一个全局的时钟系列控制。
5)故障总是在发生:组成分布式系统的所有的计算机,都有可能发生任何形式的故障,一个被大量工程事件所检验过的黄金定理:在任何设计阶段考虑到的异常情况,一定会在系统实际运行中发生。并且还会出现系统未知的错误。

2、从ACID到CAP/BASE

2.1、事务,事务具有四个特性,分别是原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability),简称为事务的ACID特性。
1)原子性:
事务的原子性是指事务必须是一个原子的操作序列单元。事务中包含的各项操作在一次执行过程中,要么全部执行,要么全部不执行。
任何一项操作失败都将导致整个事务失败,同时其他已经被执行的操作都将被撤销并回滚。只有所有的操作全部成功,整个事务才算是成功完成。
2)一致性
事务的一致性是指事务的执行不能破坏数据库数据的完整性和一致性,一个事务在执行前后,数据库都必须处于一致性状态。换句话说,事务的执行结果必须是使数据库从一个一致性状态转变到另一个一致性状态。
3)隔离性
事务的隔离性是指在并发环境中,并发的事务是相互隔离的,事务之间互不干扰。
4)持久性
事务的持久性又称为永久性,是指一个事务一旦提交,对数据库中对应数据的状态变更就应该是永久性的。即使发生系统崩溃或机器宕机等故障,只要数据库能够重新启动,那么一定能够将其恢复到事务成功结束时的状态。
2.2、CAP
在这里插入图片描述
1)Consistency(一致性),对于任何从客户端发达到分布式系统的数据读取请求,要么读到最新的数据要么失败。换句话说,一致性是站在分布式系统的角度,对访问本系统的客户端的一种承诺:要么我给您返回一个错误,要么我给你返回绝对一致的最新数据,不难看出,其强调的是数据正确。

2)Availability(可用性),可用性是指系统提供的服务必须一直处于可用的状态,对于用户的每一个操作请求总是能够在有限的时间内返回结果。有限时间是指对于用户的一个操作请求,系统必须能够在指定的时间内返回对应的结果,如果超过这个时间范围,那么系统就被认为是不可用的。返回结果要求系统在完成对用户的处理请求后,返回一个正常的响应结果,即成功或失败,而不是一个让用户感到困惑的结果。强调的是有限的时间内返回结果、

3)Partition tolerance(分区容错性),分区容错性约束了一个分布式系统需要具有如下特性,分布式系统在遇到任何网络分区故障的时候,仍然需要能够保证对外提供服务(除非整个网络瘫痪),强调的是高可用。
自己的理解:
在分布式情况中,P是比较重要的,如果一台节点挂掉的话影响整个分布式对外提供服务,那么就失去了分布式的初衷。

P(分区容错性)&& C(一致性):在高可用的情况下,是可以保证数据一致性的。但是不能保证有限时间内返回结果。
P(分区容错性)&& A(可用性):在高可用的情况下,是可以保证在有限时间内返回结果。但是不能保证数据一致性,因为节点越多同步数据耗时越长。
A(一致性)&& C(可用性):单节点情况。
在这里插入图片描述
2.3、Base理论
BASE:全称:Basically Available(基本可用),Soft state(软状态),和 Eventually consistent(最终一致性)三个短语的缩写,来自 ebay 的架构师提出。Base 理论是对 CAP 中一致性和可用性权衡的结果,其来源于对大型互联网分布式实践的总结,是基于 CAP 定理逐步演化而来的。其核心思想是:

既是无法做到强一致性(Strong consistency),但每个应用都可以根据自身的业务特点,采用适当的方式来使系统达到最终一致性(Eventual consistency)。

1)Basically Available(基本可用):假设系统,出现了不可预知的故障,但还是能用,例如响应时间上的损失:正常情况下的搜索引擎 0.5 秒即返回给用户结果,而基本可用的搜索引擎可以在 1 秒作用返回结果。
2)Soft state(软状态):允许系统中的数据存在中间状态,并认为该状态不影响系统的整体可用性,即允许系统在多个不同节点的数据副本存在数据延时。
3)Eventually consistent(最终一致性):最终一致性强调的是系统中所有的数据副本,在经过一段时间同步后,最终能达到一个一致的状态。

3、Zookeeper介绍

3.1、Zookeeper由来
在这里插入图片描述
3.2、zookeeper介绍:ZooKeeper致力于提供一个高性能、高可用,且具备严格的顺序访问控制能力的分布式协调服务,是雅虎公司创建,是Google的Chubby一个开源的实现。Zookeeper是一个典型的分布式数据一致性的解决方案,分布式应用程序可以基于它诸如数据的发布/订阅、负载均衡,命名服务,集群管理、分布式协调/通知,分布式锁等等。。。。。。。
在这里插入图片描述
在这里插入图片描述
3.3、Zookeeper基本概念:

1)集群角色,在Zookeeper集群中,分别有Leader,Follower和Observer三种类型的服务器角色。Leader服务器在整个正常运行期间有且仅有一台,集群会通过选举的方式选举出Leader服务器,由它同统一处理集群的事务性请求以及集群内各服务器的调度。Follower,参与Leader选举投票,处理客户端非事务请求(读),并转发事务请求(写)给Leader服务器。Observer是弱化版的Follower。其像Follower一样能够处理非事务也就是读请求,并转发事务请求给Leader服务器,但是其不参与任何形式的投票。

2)会话,会话就是一个客户端与服务器之间的一个TCP长连接。客户端和服务器的一切交互都是通过这个长连接进行的,会话会在客户端与服务器断开链接后,如果经过了设点的sessionTimeout时间内没有重新链接后失效。

3)节点,在zookeeper中分为机器节点(一台机器)和数据节点。ZooKeeper的数据模型是内存中的一个ZNode数,由斜杠(/)进行分割的路径,就是一个ZNode,每个ZNode上除了保存自己的数据内容,还保存一系列属性信息;ZooKeeper中的数据节点分为两种:持久节点和临时节点。所谓的持久节点是指一旦这个ZNode创建成功,除非主动进行ZNode的移除操作,节点会一直保存在ZooKeeper上;而临时节点的生命周期是跟客户端的会话相关联的,一旦客户端会话失效,这个会话上的所有临时节点都会被自动移除。

4)版本,ZooKeeper为每一个ZNode节点维护一个叫做Stat的数据结构,在Stat中维护了节点相关的三个版本,当前ZNode的版本 version,当前ZNode子节点的版本 cversion,当前ZNode的ACL(Access Control Lists)版本 aversion。

5)Watcher,ZooKeeper允许用户在指定节点上注册一些Watcher,并且在一些特定事件触发的时候,ZooKeeper会通过事件通知到感兴趣的客户端上。

6)ACL,ZooKeeper中定义了5中控制权限: CREATE:创建子节点的权限, READ:获取节点数据和子节点列表的权限,WRITE:跟新节点数据的权限, DELETE:删除子节点的权限,ADMIN:设置节点ACL的权限。

发布了140 篇原创文章 · 获赞 47 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/qq_34125999/article/details/99997897