前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >大数据的“动物管理员” ZooKeeper

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

作者头像
希望的田野
发布2019-09-24 16:41:47
8160
发布2019-09-24 16:41:47
举报
文章被收录于专栏:信息化漫谈信息化漫谈

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接口的图例

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-03-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 信息化漫谈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档