201707041940复习-zookeeper篇

一、

  1、自己理解的zk:zk是一个快速的,可靠的,分布式的,为别的系统提供协调,同步服务的一个系统。就是为别的分布式应用程序提供服务。

    出现场景:分布式应用中master/slaver结构,master都要保存一些元数据,master一旦宕机,元数据就丢失,存在单点故障,如果把元数据记录来另一台机器上,master宕机,记录元数据的机器不会宕机,但是记录元数据的机器也存在单点故障,所以就有了一个需求,需要一个非常非常可靠的系统,来保存一些必须记录的数据,zk就出现了,zk使用多台机器之间合作,并且zk保证就算有一半的机器宕机,zk也可以正常提供服务。zk就是为其他的分布式系统提供服务的分布式系统。

     快速:zk的数据存储在内存中,且一个最多1M的内存空间,

     可靠:将数据存在zk上,zk是非常可靠的,即使有一半的机器宕机,依然能提供服务

     分布式的:zk是一个分布式系统,多台机器合作提供服务

     协调:大数据中大部分都是master/slaver结构的,当master接受到任务时,需要将任务发布出去,那么直接将一些任务以配置文件的形式发到zk上,而slaver会实时监听到属于自己的任务,然后拉取任务,执行任务

     同步:提供同步服务,数据在zk上是有版本的,每次修改zk上的数据,必须和当前保存的数据版本一致,若不一致,则不允许修改,必须获取最新的数据,然后再在这个基础上修改

     zk能够提供的服务不只是协调和同步,还有别的服务:主从协调、服务器节点动态上下线、统一配置管理、分布式共享锁、统一名称服务……

    虽然说可以提供各种服务,但是zookeeper在底层其实只提供了两个功能:

      管理(存储,读取)用户程序提交的数据;

        并为用户程序提供数据节点监听服务;

  2、zk厅的服务:

    配置维护、域名服务、分布式同步、组服务等

  3、分布式锁:控制分布式系统之间同步访问共享资源的一种方式

    zk分布式锁原理:http://www.cnblogs.com/suolu/p/6588902.html

  4、zk在每台机器上都保存一份数据,数据完全相同,连接到一台机器就是连接到一个集群了,连接到一台机器就能拿到zk集群的全部数据。

  5、端口号有3个:2181:client连接zk时的端口号,

              2888:当我这台机器是leader时,别的flower和我通信用2888

                            3888:当我这条机器不是leader时,其他的flower和我通信用3888

  6、myid,指定当前的flower的id,在一个目录下写一个myid的文件,里面就是一个数字,表示当前的flower的id

  7、zkCli.sh -server ip:2181

  8、zk节点有3中模式,persistent, 持久化的,persistent_sequential 当失去连接,并不删除数据,但该节点会有一个单调递增的整数值来标识

                                   ephemeral 临时的,     失去连接,删除节点         

  9、选举过程:

    9.1、所有的节点都在/app/leader/election/guid_下创建一个节点,该节点时临时的,有编号的,其中编号较小的那个获得锁,就是leader,

    

    

 

posted @ 2017-09-04 17:14  IT豪哥  阅读(184)  评论(0编辑  收藏  举报