首页 > 其他 > 详细

深入理解zookeeper-01-核心概念

时间:2021-06-06 00:53:10      阅读:29      评论:0      收藏:0      [点我收藏+]

深入理解Zookeeper

1. zk核心概念

引用自《zookeeper分布式过程协同技术讲解》

在计算机诞?之后很长的?段时间?,?个应?服务是在?个独?的 单处理器计算机上运??段程序。时?今?,应?服务已经发?了很?的 变化。在?数据和云计算盛?的今天,应?服务由很多个独?的程序组 成,这些独?的程序则运?在形形??、千变万化的?组计算机上。

相对于开发在?台计算机上运?的单个程序,如何让?个应?中多个 独?的程序协同?作是?件?常困难的事情。开发这样的应?,很容易让 很多开发?员陷?如何使多个程序协同?作的逻辑中,最后导致没有时间 更好地思考和实现他们??的应?程序逻辑;又或者开发?员对协同逻辑 关注不够,只是?很少的时间开发了?个简单脆弱的主协调器,导致不可 靠的单?失效点

ZooKeeper的设计保证了其健壮性,这就使得应?开发?员可以更多关 注应?本?的逻辑,?不是协同?作上。ZooKeeper从?件系统API得到启 发,提供?组简单的API,使得开发?员可以实现通?的协作任务,包括 选举主节点、管理组内成员关系、管理元数据等。ZooKeeper包括?个应? 开发库(主要提供Java和C两种语?的API)和?个?Java实现的服务组 件。ZooKeeper的服务组件运?在?组专?服务器之上,保证了?容错性和 可扩展性。

当你决定使?ZooKeeper来设计应?时,最好将应?数据和协同数据独?开。?如,?络邮箱服务的?户对??邮箱中的内容感兴趣,但是并不 关?由哪台服务器来处理特定邮箱的请求。在这个例?中,邮箱内容就是 应?数据,?从邮箱到某?台邮箱服务器之间的映射关系就是协同数据 (或称元数据)。整个ZooKeeper服务所管理的就是后者

1.1 举个例子

  • 外卖平台:美团、饿了吗
  • 我是商家,我需要先入住平台(美团 or 饿了吗),然后你作为客户,可以在美团这个平台上,对我,进行点餐,完成一次交易
  • 这次交易由三人完成:我(Server端)---> 美团(zk)<---- 你(Client)
    • 也就是说zk作为一种协调服务的存在,在后续学习中,我们还会了解到大数据生态圈,那时候zookeeper(动物管理员),Hadoop(大象),Hive(蜜蜂),Pig(猪)等技术相互之间可以通过zk进行管理

1.2 工作机制

  • Zookeeper从设计模式角度来理解:是一个基于观察者模式(一个人干活,有人盯着他)设计的分布式服务管理框架
  • 它负责 存储 和 管理 大家都关心的数据
    • 然后接受观察者的注册,一旦这些数据的发生变化
    • Zookeeper就将负责通知已经注册的那些观察者做出相应的反应
    • 从而实现集群中类似Master/Slave管理模式
  • Zookeeper = 文件系统 + 通知机制

1.3 特点

  • 先来聊一下 分布式和集群的区别?
    • 无论分布式和集群,都是很多人在做事情。具体区别如下:
    • 例如:我有一个饭店,越来越火爆,我得多招聘一些工作人员
      • 分布式:招聘1个厨师,1个服务员,1个前台,三个人负责的工作不一样,但是最终目的都是为饭店工作
      • 集群:招聘3个服务员,3个人的工作一样
  • 对于zk来说有如下几个特点,这几个特点也会贯穿我们整个学习的进度
    1. 是一个leader和多个follower来组成的集群(狮群中,一头雄狮,N头母狮)
    2. 集群中只要有半数以上的节点存活,Zookeeper就能正常工作(5台服务器挂2台,没问题;4台服务器挂2台,就停止)
    3. 全局数据一致性,每台服务器都保存一份相同的数据副本,无论client连接哪台server,数据都是一致的
    4. 数据更新原子性,一次数据要么成功,要么失败(不成功便成仁)
    5. 实时性,在一定时间范围内,client能读取到最新数据
    6. 更新的请求按照顺序执行,会按照发送过来的顺序,逐一执行(发来123,执行123,而不是321或者别的)

1.4 数据结构

技术分享图片

  • ZooKeeper数据模型的结构与linux文件系统很类似,整体上可以看作是一棵树,每个节点称做一个ZNode(ZookeeperNode)。
  • 每一个ZNode默认能够存储1MB的数据(元数据),每个ZNode的路径都是唯一的
    • 元数据(Metadata),又称中介数据、中继数据,为描述数据的数据(data aboutdata),主要是描述数据属性(property)的信息,用来支持如指示存储位置、历史数据、
    • 资源查找、文件记录等功能

1.5 应用场景

提供的服务包括:统一命名服务、统一配置管理、统一集群管理、服务器节点动态上下线、软负载均衡等

1.5.1 统一命名服务

  • 在分布式环境下,通常需要对应用或服务进行统一的命名,便于识别
  • 例如:服务器的IP地址不容易记,但域名相比之下却是很容易记住

1.5.2 统一配置管理

  • 分布式环境下,配置文件做同步是必经之路

  • 1000台服务器,如果配置文件作出修改,那一台一台的修改,运维人员肯定会疯,如何做到修改一处就快速同步到每台服务器上

  • 将配置管理交给Zookeeper

    1、将配置信息写入到Zookeeper的某个节点上

    2、每个客户端都监听这个节点

    3、一旦节点中的数据文件被修改,Zookeeper这个话匣子就会通知每台客户端服务器

1.5.3 服务器节点动态上下线

  • 客户端能实时获取服务器上下线的变化
  • 在美团APP上实时可以看到商家是否正在营业或打样

1.5.4 软负载均衡

  • Zookeeper会记录每台服务器的访问数,让访问数最少的服务器去处理最新的客户请求(雨露均沾)
  • 都是自己的孩子,得一碗水端平

深入理解zookeeper-01-核心概念

原文:https://www.cnblogs.com/pengcode/p/14853995.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!