好程序员大数据技术分享:Zookeeper集群管理与选举

  • 时间:
  • 浏览:1

  在分布式环境中,相同的业务应用分布在不同的机器上,一些业务逻辑(同类于一些耗时的计算,网络I/O外理),往往只都可不还可以 让整个集群中的某一台机器进行执行,其余机器都可不还可以共享你你这种 结果,八个 都可不还可以大大减少重复劳动,提高性能,于是你你这种 master选举便是你你这种 场景下的碰到的主要现象。

  3.搜索系统

  有一定的延时。

  同类于,监控系统在 /clusterServers 节点上注册八个 Watcher,以前每动态加机器,如此就往 /clusterServers 下创建八个 EPHEMERAL类型的节点:/clusterServers/{hostname}. 八个 ,监控系统就都都可不还可以实时知道机器的增减状况,至于后续外理或者监控系统的业务了。

  另外,你你这种 场景演化一下,或者动态Master选举。这就要用到?EPHEMERAL_SEQUENTIAL类型节点的行态了。

  上文中提到,所有客户端创建请求,最终只八个 都都可不还可以创建成功。在这里稍微变化下,或者允许所有请求都都都可不还可以创建成功,或者得有个创建顺序,于是所有的请求最终在ZK上创建结果的并是否肯能状况是八个 : /currentMaster/{sessionId}-1 ,?/currentMaster/{sessionId}-2 ,?/currentMaster/{sessionId}-3 ….. 每次选泽序列号最小的那个机器作为Master,肯能你你这种 机器挂了,肯能他创建的节点会马上小时,如此以前最小的那个机器或者Master了。

  创建EPHEMERAL类型的节点,一旦客户端和服务器的会话现在现在开始 或过期,如此该节点就会消失。

  集群中机器有变动的以前,牵连修改的东西比较多。

     1.集群机器监控

  利用ZooKeeper八个 行态,就都可不还可以实时另并是否集群机器存活性监控系统:

  2.Master选举

  这通常用于那种对集群中机器状况,机器在线率有较高要求的场景,都都可不还可以快速对集群中机器变化作出响应。八个 的场景中,往往八个 监控系统,实时检测集群机器是否存活。过去的做法通常是:监控系统通过并是否手段(比如ping)定时检测每个机器,肯能每个机器我本人定时向监控系统汇报“我还活着”。 你你这种 做法可行,或者位于八个 比较明显的现象:

  在搜索系统中,肯能集群中每个机器都生成一份全量索引,不仅耗时,或者只有保证彼此之间索引数据一致。或者让集群中的Master来进行全量索引的生成,或者同步到集群中其它机器。另外,Master选举的容灾方法 是,都可不还可以随时进行手动指定master,或者说应用在zk在无法获取master信息时,都可不还可以通过比如http方法 ,向八个 地方获取master。

  客户端在节点 x 上注册八个 Watcher,如此肯能 x?的子节点变化了,会通知该客户端。

  利用ZooKeeper的强一致性,都都可不还可以保证在分布式高并发状况下节点创建的全局唯一性,即:一同有多个客户端请求创建 /currentMaster 节点,终究一定只八个 客户端请求都都可不还可以创建成功。利用你你这种 行态,就能很轻易的在分布式环境中进行集群选泽了。

  在Hbase中,也是使用ZooKeeper来实现动态HMaster的选举。在Hbase实现中,会在ZK上存储一些ROOT表的地址和 HMaster的地址,HRegionServer也会把我本人以临时段 点(Ephemeral)的方法 注册到Zookeeper中,使得HMaster都可不还可以随时感知到各个HRegionServer的存活状况,一同,一旦HMaster再次出现现象,会重新选举出八个 HMaster来运行,从而外理了 HMaster的单点现象