前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Zookeeper基础篇---面试zookeeper概念

Zookeeper基础篇---面试zookeeper概念

作者头像
小土豆Yuki
发布2020-06-15 17:25:33
6160
发布2020-06-15 17:25:33
举报
文章被收录于专栏:洁癖是一只狗洁癖是一只狗

Zookeeper是一个开源的分布式程序协调服务器,为分布式服务提供一致性,其一致性是通过基于Poxos算法的ZAB协议完成的 ,主要功能是配置维护,域名管理,分布式同步,集群管理

配置维护

分布式系统中,很多服务配置文件要进行修改,那么我们就需要一个个去修改,当服务器比较少的时候,修改不是很麻烦,但是当服务器成千上万台的时候,就比较麻烦了,即使人力可以修改完成,但是人为修改还是会有出错的可能,因此,zookeeper就开始起到了作用,他是采用 发布/订阅模式,发布者将修改的配置文件发布到zookeeper服务的文件系统中,那么具有订阅者马上就能知道修改过后的配置的文件,立马就可以去同步zookeeper的配置文件,zookeeper具有同步操作的原子性,确保每个集群服务器的配置文件都能被正确的更新

域名管理

在分布式应用中,一个项目包含多个工程,而这些工程,有些工程是专门为其他工程提供服务,每个工程可能提供不同的服务的工程,而一个服务可能存在多个提供者,索引,用于消费这些服务就比较复杂了

这个时候zookeeper就派上了用场,我们只需要给服务器一个服务名,把服务名和提供者的主机地址注册上去,形成一个服务映射表,服务消费者通过服务名称即可享用这些服务,而无需了解服务具体的提供者是谁,服务的增加,减少,变更,只需修改zookeeper中的服务映射表就可以了

分布式同步

在分布式系统中,很多运算过程是yi分布式集群中的若干服务器共同计算完成的,并且他们之间的运算还具有逻辑上的先后顺序,如何保证这些服务器运行期间的同步性,

使用zookeeper可以协调这些服务器的运算过程,这些服务器同时监听zookeeper中的一个znode,一旦一个服务器update了znode,其他相应的能够接受到通知,并做出处理

集群管理

集群管理做麻烦的就是节点故障管理,zookeeper可以让集群选出一个健康的节点master,实时监控当前每个节点的健康,当某个节点发生故障,master会把这个情况通知给其他节点,是其他节点做出响应的调整,zookeeper不仅可以发现故障,也会对故障进行修复,当修复不了,,会通知系统管理员错误出现的原因,以便迅速做出定位问题,当master出现问题,zookeeper也会在内部选举一个新的master,对集群进行管理。

一致性要求

什么是zk的一致性呢,其需要满足以下几点要求

1.顺序一致性

从同一个客户端发起n个多个事物请求,最终会按照顺序请求zookeeper中

2.原子性

所有事务请求结果在集群中所有的机器应用情况是一致的,也就说要么正个集群所有主机都成功应用了某个事务,要么都不应用,不会出现一部分应用了事务,一部分没有应用

3.一致性视图

无论连接zookeeper中的那个服务器,看到的服务数据模型都是一致的

4.可靠性

一旦服务成功引用这个事务,并且完成了客户端响应,那么该事务所引起的服务器状态会一直保存下去,除非另一事务又对其进行变更

5.实时性

实时性不是传统的实时性,一旦事务被成功应用,呢么客户端能够立刻从服务读取到这个变更的数据装填,而是在一段时间后,客户端最终能从服务上读取最新的数据状态

zookeeper中的重要概念

session

session是指客户端回话中,zookeeper对外的服务端口默认是2181,客户端启动,会先和zk建立一个TCP长连接,从第一次建立开始,客户端的生命周期也开始了,通过这个长连接,客户端通过心跳机制和服务建立有效回话,也能发起请求和接受响应,同时还能通过此链接接受来自服务器的watc事件h通知

其中sessionTimeout是设置会话的超时时间,当服务器压力过大,网络延迟或主动断开,只要在这个时间内,重新链接上,那么之前创建的回话还是有效的

znode

zookeeper的文件系统采用树形层次的目录结构,与Unix文件系统非常相似,每个目录在zookpeer中的叫一个znode,每个znode拥有一个唯一的路径标识即名称,每一个znode 包含数据和子znode,临时znode不能有znode,znode可以有多版本,索引查询某个路径下的数据需要带上版本号,客户端应用可以在znode上设置监视器

watcher机制

zk是通过watch机制实现发布订阅模式,zk提供分布式数据的发布订阅功能,一个发布者能够让多个订阅者监听同一个主题,当这个主题发生变化时候,会通知多有订阅者,使他们能够做出相应的处理,zk引入watch 机制实现分布式通知功能,zk允许客户端向服务端注册一个watch监听,当服务的一些指定时间出发这个watch,那么就会想执行客户端发送一个时间通知,这个事件通知是使用tcp长连接的session完成的

ACL

ACL全程Acess Control List(访问控制列表),用于控制资源的访问权限,是zk数据安全的保障,zk利用ACL策略控制znode节点的访问权限,如节点数据读取,节点创建,节点删除,设置节点权限等

在传统的文件系统中,ACL分为两个维度,组和权限,一个组有多个权限,一个文件或目录拥有了某个组的权限即拥有了组里的所有权限,文件或子目录默认会继承其父的ACL

但是zk中,znode的ACL是没有继承关系的,每个znode的权限都是独立的,而客户端满足znode设置权限要求时,才能完成相应的操作,zookeeper的ACL分为三个维度:授权策略scheme,用户id,用户权限permission.即使用某个授权策略给用户id赋予一个权限permission.

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-02-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 洁癖是一只狗 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档