热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Zookeeper的简要介绍

Zookeeper问题1:什么是zookeeper:简单理解为一个集群管理软件作用:配置维护、统一命名服务、状态同步服务、集群管理等。问题2:zookeeper和yarn有什么区别
Zookeeper

问题1:什么是zookeeper:

简单理解为一个集群管理软件
作用:配置维护、统一命名服务、状态同步服务、集群管理等。

问题2: zookeeper和yarn有什么区别?

分布式系统有很多问题 其中有两个
Zookeeper偏重解决分布式系统中的Coordination
Yarn偏重解决系统中的Resource Management
看回答: https://www.zhihu.com/question/41254423

问题3:能否介绍一个zookeeper的使用场景

主备结点的容灾 – 主节点挂掉了, 备用启用的时候, 所有任务的信息可能都放在zookeeper里, 备用结点从这里取回任务信息, 保准系统继续稳定运行.所以从这看zookeeper里存的可能有配置文件, 任务信息等.

问题: zookeeper的设计理念

强一致性:client不论连接到哪个Server,展示给它都是同一个视图,这是zookeeper最重要的性能。
可靠性: 如果消息m被到一台服务器接受,那么它将被所有的服务器接受。
原子性: 更新只能成功或者失败,没有中间状态。

问题4: 工作原理

zookeeper要处理的是集群之间的协同问题, 那么处理协同问题有2中办法:

  1. 不同服务器之间相互传递信息
  2. 广播(开辟一个公共频道大家都能收听消息)
    zookeeper选择的是2.
    Zookeeper 的核心是广播,这个机制保证了各个Server之间的同步.实现这个机制的协议叫做Zab协议。

问题5: zookeeper的内部结构是什么样的?

zookeeper也是集群, 是master-slave model.
为什么这么设计? 分布式的模式要有主从, 二, 可以实现强一致性
为什么要强一致性? 保证集群中的信息一致,解决的就是协同问题

问题6: zookeeper的数据模型是什么样的?

可以将zk看成一个文件系统, 但是没有文件也没有目录, 而是统一使用结点的概念, 叫做znode. znode既可以保存数据, 也可以保存其它znode.
其中, znode分成几种:

  1. Persistent Nodes: 永久有效结点
  2. Ephemeral Nodes: 临时结点, 仅在创建该节点的client这边保持有效, 一旦连接丢失, zk会自动删除该节点
  3. Sequence Nodes: 顺序节点, 用户实现分布式queue等功能

问题7: 既然是主从模式, 那么master node是怎么选出来的?

通过投票选举制度. 所有的server开始都是slave, 对任意一个server,开始第一次都会投自己. 这个投票会包含所推举的server的myid和zxid. 然后他们把这个投票发给集群中的其它机器. 当这个server收到其他server发来的信息后,要处理投票. 怎么处理呢?
· 优先检查ZXID。ZXID比较大的服务器优先作为Leader。
· 如果ZXID相同,那么就比较myid。myid较大的服务器作为Leader服务器。
再进行一次统计(由发起投票的server统计), 得票最多的server被选举为leader. 具体是, 某个server获得n/2 + 1的票, 它就会变为leader. 否则的话, 继续这个过程.

Follow up1: 什么时候会进行投票选举?

  1. 非leader的server宕机了不会2)leader挂了,会3)初始化起集群的时候, 会

Follow up2: 什么是zxid, 他有什么用?

每个znode维护的一个属性结构, 它包含着版本号, 时间戳.

问题8: zookeeper是如何去处理一个请求的?

首先, zk是集群服务器, 里面会放着一些其它应用的, 比如配置信息. 如果想更新这个配置信息, 那么需要向zk发请求. 通过zk的客户端, 与zk的server建立连接. 这个连接叫一个对话(session), client可以与zk集群中的任何一个server连接(因为这些server的数据都是一模一样的.)

所有的请求(读写,改查)都要通过leader来进行. 一个请求过来以后, leader server会为这个请求生成一个proposal, 并将其发送给集群总所有follower server. follower server收到proposal后处理也很简单, 将该proposal写入事务日志, 然后反馈ACK给leader. leader收到过半follower 的ACK后, 会广播commit笑给给所有的follower, 并将事务应用到内存.
Follow up: ZAB协议中为什么要用过半同意这种制度?
这是在可用性与一致性之间做的取舍.牺牲掉了部分一致性(舍弃全员通过), 能在集群板书一下服务宕机时正常对外提供服务, 这也体现了它的容错性.

问题9: zookeeper是如何实现一致性原理的?

实现一致性原理的核心是ZAB协议, 需要做到:

  1. 集群在半数 一下结点宕机的情况下, 能正常对外提供服务(所以配置要一般配置奇数个服务器)
  2. 客户端的写请求全部交给leader来处理. leader需要确保写的change能实时同步给所有follower.
    ZAB协议有2中模式, 崩溃恢复(选leader+数据同步), 和消息广播.

    《Zookeeper的简要介绍》 image


推荐阅读
  • 解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法
    本文介绍了解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法,包括检查location配置是否正确、pass_proxy是否需要加“/”等。同时,还介绍了修改nginx的error.log日志级别为debug,以便查看详细日志信息。 ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 本文讨论了在VMWARE5.1的虚拟服务器Windows Server 2008R2上安装oracle 10g客户端时出现的问题,并提供了解决方法。错误日志显示了异常访问违例,通过分析日志中的问题帧,找到了解决问题的线索。文章详细介绍了解决方法,帮助读者顺利安装oracle 10g客户端。 ... [详细]
  • centos安装Mysql的方法及步骤详解
    本文介绍了centos安装Mysql的两种方式:rpm方式和绿色方式安装,详细介绍了安装所需的软件包以及安装过程中的注意事项,包括检查是否安装成功的方法。通过本文,读者可以了解到在centos系统上如何正确安装Mysql。 ... [详细]
  • Sleuth+zipkin链路追踪SpringCloud微服务的解决方案
    在庞大的微服务群中,随着业务扩展,微服务个数增多,系统调用链路复杂化。Sleuth+zipkin是解决SpringCloud微服务定位和追踪的方案。通过TraceId将不同服务调用的日志串联起来,实现请求链路跟踪。通过Feign调用和Request传递TraceId,将整个调用链路的服务日志归组合并,提供定位和追踪的功能。 ... [详细]
  • 2021最新总结网易/腾讯/CVTE/字节面经分享(附答案解析)
    本文分享作者在2021年面试网易、腾讯、CVTE和字节等大型互联网企业的经历和问题,包括稳定性设计、数据库优化、分布式锁的设计等内容。同时提供了大厂最新面试真题笔记,并附带答案解析。 ... [详细]
  • 本文总结了初学者在使用dubbo设计架构过程中遇到的问题,并提供了相应的解决方法。问题包括传输字节流限制、分布式事务、序列化、多点部署、zk端口冲突、服务失败请求3次机制以及启动时检查。通过解决这些问题,初学者能够更好地理解和应用dubbo设计架构。 ... [详细]
  • 云原生应用最佳开发实践之十二原则(12factor)
    目录简介一、基准代码二、依赖三、配置四、后端配置五、构建、发布、运行六、进程七、端口绑定八、并发九、易处理十、开发与线上环境等价十一、日志十二、进程管理当 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 关于我们EMQ是一家全球领先的开源物联网基础设施软件供应商,服务新产业周期的IoT&5G、边缘计算与云计算市场,交付全球领先的开源物联网消息服务器和流处理数据 ... [详细]
  • SpringBoot整合SpringSecurity+JWT实现单点登录
    SpringBoot整合SpringSecurity+JWT实现单点登录,Go语言社区,Golang程序员人脉社 ... [详细]
  • ElasticSerach初探第一篇认识ES+环境搭建+简单MySQL数据同步+SpringBoot整合ES
    一、认识ElasticSearch是一个基于Lucene的开源搜索引擎,通过简单的RESTfulAPI来隐藏Lucene的复杂性。全文搜索,分析系统&# ... [详细]
  • {moduleinfo:{card_count:[{count_phone:1,count:1}],search_count:[{count_phone:4 ... [详细]
author-avatar
狮子胯下
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有