专栏首页信息化漫谈大数据的“动物管理员” ZooKeeper

大数据的“动物管理员” ZooKeeper

Hadoop的框架里面经常有听到PIG(猪)、HIVE(小密蜂)、Hadoop(大象)......,就像是动物园的小动物,这些小动物的管理者就是ZooKeeper。玩笑讲完了,我们还是回到正题。ZooKeeper的诞生主要是解决是集群的管理节点高可用。接下来,我们来看一看案例。

一、ZooKeeper的诞生历程

1、传统单机的环境,如Java程序调用Mysql数据源的IP、密码一般是写在一个配置文件中。

2、但数据源的IP地址会变化,因此我们将配置文件拿出来,作为一个共享文件进行集中管理。

3、配置节点将配置信息集中管理后,如果配置信息发生了变化,必须及时通知使用该信息的组件。因此增加了监听的功能。

4、配置节点目前为单节点,存在故障隐患。因此将配置节点做成多个,之间保持数据的同步。但主用配置节点(具有写入权限的节点)只有一个,其它从配置节点收到写入命令后必须将命令传送给主用配置。

二、ZooKeeper必须在配置节点和程序节点(组件节点)同时安装

ZooKeeper组件节点可以同时配置多个服务源,当正在使用的服务源故障中断后,可以自动与其它服务源进行连接,以保证ZK配置节点的高可用。

三、ZooKeeper的数据内容较简单,小于1MB

ZooKeeper主要用于保存配置文件,一般是文本文件,因此数据量很小。在ZooKeeper中采用Znode作为数据管理的最小单元,且小于1MB。如下图,方框部分就是一个Znode。

如app1就是一个Znode,Znode中存储了server_ip的很多配置。

四、案例ZooKeeper在Mysql主备用库选择中的应用

常规,我们实现Mysql的主备用库的高可用,一般是采用RoseHA、KeepAlived软件等,实现方法是采用VIP浮动IP的方式。

如果我们用ZooKeeper来实现,原理则会发生变化。

我们在数据库服务器上部署ZooKeeper的agent,该agent实例定时ping mysql实例,当mysql实例故障时,agent将在ZooKeeper配置节点删除该Znode临时节点。当某个Java程序连接数据库源时,将通过ZooKeeper获取当时能使用的mysql数据信息。通过以上方式实现了Mysql主备用库的选择。

看到这里,大家应有所感悟,采用ZooKeeper与RoseHA进行Mysql的主备库切换有很大的区别。而市面上一般采用RoseHA进行主备切库,原因是简单,Java程序基本不需要进行改造,甚至一般是将配置直接固定写进了程序中或本地的INI文件中。而采用ZooKeeper的方式则必须重新编写获取配置的类,必实现ZooKeeper的接口。通过Java编程的方式,不仅是能实现主备切换,甚至能实现主主权重负载均衡。

附Java实现ZooKeeper接口的图例

本文分享自微信公众号 - 信息化漫谈(informationwalk),作者:新梦飞

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-03-16

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 云快照的2种存储机制

    云计算是庞大的IT技术的结合,例如我们经常在云主机ECS中使用的快照功能,仔细研究起来,每一个功能实现都沉淀着“攻城狮的智慧”。今天我们来看一下云快照的两种不同...

    希望的田野
  • 超过2T硬盘用不了,怎么办?

    今天有朋友买了新的台式机,硬盘容量4TB,安装windows7后只能看到2TB空间,救助。就该问题,涉及到分区表的MBR模式与GPT模式的区别,今天我们就来看一...

    希望的田野
  • 如何形象向客户传递云计算的四种服务形态

    我们在与客户交流时,销售时最多的是公有云,但面临政企大客户,完全采用公有云的模式无法满足客户在安全、定制等个性化的需求,因此出现了公有云、私有云、混合云...

    希望的田野
  • 简单易学的机器学习算法——EM算法

        在前面的博文中,如“简单易学的机器学习算法——Logistic回归”中,采用了极大似然函数对其模型中的参数进行估计,简单来讲即对于一系列样本

    zhaozhiyong
  • 结构体大小的计算

    其实暂且不管这三原则,只要记住第三个,就是结构体大小结果要为成员中最大字节的整数倍。

    编程范 源代码公司
  • Python break 语句

    ? 文 | 豌豆 来源 | 菜鸟教程 ? 豌豆贴心提醒,本文阅读时间3分钟,文末有秘密! Python break语句,就像在C语言中,打破了最小封闭...

    小小科
  • Python的语法及if、while、f

    1.  学习python特殊的缩进和语法     Python之所以如此简单,归功于他的缩进机制,严格的缩进机制使得代码非常整齐规范,赏心悦目,提高了可读性,在...

    用户2398817
  • Python学习笔记四(条件和循环)

    写在开头:今天催更小伙伴们,突然发现自己的python学习笔记竟然一个月没更了,按照每月总更8篇计算,每月应更2篇左右的python学习笔记,也不知是杂文更的太...

    世纪访客
  • mysql清空有外键关联的表

    SET FOREIGN_KEY_CHECKS = 0;    TRUNCATE TABLE 表名;   SET FOREIGN_KEY_CHECKS = 1; 

    人生不如戏
  • 控制语句 | Python

    经验:当目标程序想不出来的时候,可以试着先写一个类似的,然后一步一步的修改接近目标效果。也就是将大目标划分为一个个小目标。

    数据医生

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动