阿里P8架构师谈:Zookeeper的原理和架构设计,以及应用场景

  • 时间:
  • 浏览:0

碰到分布二字貌似就难理解了,人太好很简单。单机多多应用程序 的各个多多应用程序 需要对互斥资源进行访问需要要加锁,那分布式多多应用程序 分布在各个主机上的多多应用程序 对互斥资源进行访问时也需要加锁。统统分布式系统有多个可服务的窗口,如果在某个时刻只让一一三个多多多 服务去干活,当这台服务出疑问的如果锁释放,立即fail over到另外的服务。这在统统分布式系统中也有那么 做,你一点设计有一一三个多多多 更好听的名字叫Leader Election(leader选举)。举个通俗点的例子,比如银行取钱,有多个窗口,如果呢对你来说,只能有一一三个多多多 窗口对你服务,意味着着 正在对你服务的窗口的柜员总是有急事走了,那为何回事?找大堂经理(zookeeper)!大堂经理指定另外的一一三个多多多 窗口继续为你服务!

Java 面试题目最全集合4000+ 大放送,能答对70%就去BATJTMD试试~

10、Zookeeper 的节点

LEADING:当前Server即为选举出来的leader

• 每个Server在工作过程蕴含这些请况:

往期博文:

• Paxos算法通过投票来对写操作进行全局编号,同一时刻,只能一一三个多多多 写操作被批准,同時 并发的写操作要去争取选票,只能获得过半数选票的写操作才会被 批准(统统永远只会有一一三个多多多 写操作得到批准),一点的写操作竞争失败只好再发起一轮投票,就另一一三个多多多 ,在日复一日年复一年的投票中,所有写操作都被严格编号排 序。编号严格递增,当一一三个多多多 节点接受了一一三个多多多 编号为400的写操作,如果又接受到编号为99的写操作(意味着着 网络延迟等统统不可预见意味着着 ),它马还需要意识到买车人 数据不一致了,自动停止对外服务并重启同步过程。任何一一三个多多多 节点挂掉也有会影响整个集群的数据一致性(总2n+1台,除非挂掉大于n台)。

8、 为哪几种zookeeper集群的数目,一般为奇数个?

例如于域名与ip之间对应关系,域名容易记住;

通过名称来获取资源或服务的地址,提供者等信息。

分布式消息系列:详解RocketMQ的简介与演进、分派、关键行态与应用场景

4、Zookeeper节点数据操作流程

• 为了保证事务的顺序一致性,zookeeper采用了递增的事务id号(zxid)来标识事务。所有的提议(proposal)也有被提出的如果加在了zxid。实现中zxid是一一三个多多多 64位的数字,它高32位是epoch用来标识leader关系是否 改变,每次一一三个多多多 leader被选出来,它总要有一一三个多多多 新的epoch,标识当前属于那个leader的统治时期。低32位用于递增计数。

LOOKING:当前Server他不知道leader是谁,正在搜寻

1、Zookeeper的角色

7、Observer

在Client向Follwer发出一一三个多多多 写的请求

Follwer把请求发送给Leader

Leader接收到如果现在结束了了发起投票并通知Follwer进行投票

Follwer把投票结果发送给Leader

Leader将结果汇总后意味着着 需要写入,则现在结束了了写入同時 把写入操作通知给Leader,如果commit;

Follwer把请求结果返回给Client

在分布式的集群中,时不可不可以 意味着着 各种意味着着 ,比如硬件故障,软件故障,网络疑问,一点节点会进进出出。有新的节点加入进来,也有老的节点退出集群。你一点如果,集群中一点机器(比如Master节点)需要感知到你一点变化,如果根据你一点变化做出对应的决策。我意味着着 知道HDFS中namenode是通过datanode的心跳机制来实现上述感知的,那么 大伙儿儿还需要先假设Zookeeper人太好也是实现了例如心跳机制的功能吧!

Zookeeper意味着着 成为Hadoop生态系统中的基础组件。

4. 集群管理

你一点还需要简单理解为一一三个多多多 电话薄,电话号码不好记,如果人名好记,要打谁的电话,直接查人名就好了。分布式环境下,时需要要对应用/服务进行统一命名,便于识别不同服务;

2. 名字服务

Zookeeper提供了另一一三个多多多 的这些服务:这些集中管理配置的法子,大伙儿儿在你一点集中的地方修改了配置,所有对你一点配置感兴趣的都还需要获得变更。另一一三个多多多 就省去手动拷贝配置了,还保证了可靠和一致性。

3. 分布式锁

你一点好理解,分布式系统也有好多机器,比如我在搭建hadoop的HDFS的如果,需要在一一三个多多多 主机器上(Master节点)配置好HDFS需要的各种配置文件,如果通过scp命令把哪几种配置文件拷贝到一点节点上,另一一三个多多多 各个机器拿到的配置信息是一致的,可不可以 成功运行起来HDFS服务。

3、Zookeeper 的保证 

• Paxos算法处里的哪几种疑问呢,处里的如果保证每个节点执行相同的操作序列。好吧,这还不简单,master维护一一三个多多多 全局写队列,所有写操作都需要 中放你一点队列编号,那么 无论大伙儿儿写几块个节点,如果写操作是按编号来的,就能保证一致性。没错,如果另一一三个多多多 ,另一一三个多多多 意味着着 master挂了呢。

Zookeeper 分布式服务框架是Apache Hadoop 的一一三个多多多 子项目,它主如果用来处里分布式应用中总是遇到的一点数据管理疑问,如:

码了几年代码的多多应用程序 员,有一定的开发经验,应该怎样提升买车人?

FOLLOWING:leader意味着着 选举出来,当前Server与之同步

5、Zookeeper工作原理

9、Zookeeper 的数据模型 

6、数据一致性与paxos 算法

3.集群管理;

4.分布式应用配置项的管理等。

更新请求顺序进行,来自同一一三个多多多 client的更新请求按其发送顺序依次执行;

数据更新原子性,一次数据更新要么成功,要么失败;

全局唯一数据视图,client无论连接到哪个server,数据视图也有一致的;

实时性,在一定事件范围内,client能读到最新数据。

高并发架构系列:Kafka、RocketMQ、RabbitMQ的优劣势比较

Zookeeper的核心是原子广播,你一点机制保证了各个server之间的同步。实现你一点机制的协议叫做Zab协议。Zab协议有这些模式,它们分别是:恢复模式和广播模式。当服务启动意味着着 在领导者崩溃后,Zab就进入了恢复模式,当领导者被选举出来,且大多数server的完成了和leader的请况同步如果,恢复模式就现在结束了了了。

• Zookeeper的核心是原子广播,你一点机制保证了各个Server之间的同步。实现你一点机制的协议叫做Zab协议。Zab协议有这些模式,它们分别是恢复模式(选主)和广播模式(同步)。当服务启动意味着着 在领导者崩溃后,Zab就进入了恢复模式,当领导者被选举出来,且大多数Server完成了和leader的请况同步如果,恢复模式就现在结束了了了。请况同步保证了leader和Server具有相同的系统请况。

总结:Zookeeper 作为 Hadoop 项目中的一一三个多多多 子项目,是 Hadoop 集群管理的一一三个多多多 必不可少的模块,它主要用来控制集群中的数据,如它管理 Hadoop 集群中的 NameNode,还有 Hbase 中 Master Election、Server 之间请况同步等。关于Paxos算法还需要查看文章《Zookeeper全解析——Paxos作为灵魂》,推荐书籍:《从Paxos到Zookeeper分布式一致性原理与实践》。

2、Zookeeper 的读写机制

• 在一一三个多多多 分布式数据库系统中,意味着着 各节点的初始请况一致,每个节点都执行相同的操作序列,那么 大伙儿儿最还需要得到一一三个多多多 一致的请况。

1. 配置管理

• 据说Paxos算法的难理解与算法的知名度一样令人敬仰,统统大伙儿儿先看怎样保持数据的一致性,这里有个原则如果:

随着信息化水平的不断提高,企业级应用系统变得那么 庞大,性能随之下降,用户抱怨频频。拆分系统是目前大伙儿儿可选折 的处里系统可伸缩性和性能疑问的唯一行之有效的法子。如果拆分系统同時 也带来了系统的多样化性——各子系统也有孤立发生的,它们彼此之间需要合作者者和交互(分布式系统)。各个子系统就好比动物园里的动物,为了使各个子系统能正常为用户提供统一的服务,需要需要这些机制来进行协调——这如果ZooKeeper(动物园管理员)。下面详解: