大数据课程C5——ZooKeeper的应用组件

这篇具有很好参考价值的文章主要介绍了大数据课程C5——ZooKeeper的应用组件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

文章作者邮箱:yugongshiye@sina.cn              地址:广东惠州

 ▲ 本章节目的

⚪ 掌握Zookeeper的Canal消费组件;

⚪ 掌握Zookeeper的Dubbo分布式服务框架;

⚪ 掌握Zookeeper的Metamorphosis消息中间件;

⚪ 掌握Zookeeper的Otter分布式数据库同步系统;

一、Canal - 阿里

1. 概述

1. Canal是阿里巴巴于2013年1月正式开源的一个由纯Java语言编写的基于MySQL数据库Binlog实现的增量订阅和消费组件。

2. 目前项目主页地址为:https://github.Com/alibaba/canal 。由项目主要负责人,同时也是资深的开源爱好者agapple持续维护。

3. 项目名Canal取自“管道”的英文单词,寓意数据的流转,是一个定位为基于MySQL数据库的Binlog增量日志来实现数据库镜像、实时备份和增量数据消 费的通用组件。

4. 早期的数据库同步业务,大多都是使用MySQL数据库的触发器机制(即Trigger)来获取数据库的增量变更。不过从2010年开始,阿里系下属各公司开始 逐步尝试基于数据库的日志解析来获取增量变更,并在此基础上实现数据的同步,由此衍生出了数据库的增量订阅和消费业务——Canal项目也由此诞生。

5. Canal的工作原理相对比较简单,其核心思想就是模拟MySQL Slave的交互协议,将自己伪装成一个MySQL的Slave机器,然后不断地向Master服务器发 送Dump请求。Master收到Dump请求后,就会开始推送相应的Binary Log给该Slave(也就是Canal)。Canal收到Binary Log,解析出相应的Binary Log对象后就可以进行二次消费了,其基本工作原理如下图所示。

大数据课程C5——ZooKeeper的应用组件,大数据,zookeeper,分布式

 2. Canal Server主备切换设计

1. 在Canal的设计中,基于对容灾的考虑,往往会配置两个或更多个Canal Server来负责一个MySQL数据库实例的数据增量复制。

2. 另一方面,为了减少Canal Server的Dump请求对MySQLMaster所带来的性能影响,就要求不同的Canal Server上的instance在同一时刻只能有一个处于 Running状态,其他的instance都处于Standby状态,这就使得Canal必须具备主备自动切换的能力。

3. 在Canal中,整个主备切换过程控制主要是依赖于ZooKeeper来完成的,如下图所示:

大数据课程C5——ZooKeeper的应用组件,大数据,zookeeper,分布式

a. 尝试启动:每个Canal Server在启动某个Canal instance的时候都会首先向ZooKeeper进行一次尝试启动判断。具体的做法是向ZooKeeper创建一 个相同的临时节点,哪个Canal Server创建成功了,那么就让哪个Server启动。以 “example”这个instance为例来说明,所有的Canal Server在 启动的时候,都会去创建 /otter/canal/destinations/example/running 节点,并且无论有多少个Canal Server同时并发启动,ZooKeeper都会保 证最终只有一个Canal Server能够成功创建该节点。

b. 启动instance:假设最终IP地址为10.20.144.51的Canal Server成功创建了该节点,那么它就会将自己的机器信息写入到该节点中去: {"active":true,"address":"10.20.144.51:11111","cid":1}并同时启动instance。而其他Canal Server由于没有成功创建节点,于是就会将自己的状态 置为Standby,同时 /otter/canal/destinations/example/running节点注册Watcher监听,以监听该节点的变化情况。

c. 主备切换:Canal Server在运行过程中,难免会发生一些异常情况导致其无法正常工作,这个时候就需要进行主备切换了。基于ZooKeeper临时节 点的特性,当原本处于Running状态的Canal Server因为挂掉或网络等原因断开了与ZooKeeper的连接,那么 /otter/canal/destinations/example/running节点就会在一段时间后消失 。由于之前处于Standby状态的所有Canal Server已经对该节点进行了 监听,因此它们在接收到ZooKeeper发送过来的节点消失通知后,会重复进行步骤1——以此实现主备切换。

 4. 在主备切换设计过程中最容易碰到的一个问题,就是“假死”。所谓假死状态是指,Canal Server所在服务器的网络出现闪断,导致ZooKeeper认为其会 话失效,从而释放了Running节点——但此时Canal Server对应的JVM并未退出,其工作状态是正常的。

5. 在Canal的设计中,为了保护假死状态的Canal Server,避免因瞬间Running节点失效导致instanc文章来源地址https://www.toymoban.com/news/detail-613424.html

到了这里,关于大数据课程C5——ZooKeeper的应用组件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ZooKeeper分布式锁的实现与应用

    ZooKeeper是一种分布式应用程序协调服务,它可以管理大规模的集群,并提供可靠的、有序的、高效的数据通信。其中,ZooKeeper提供的分布式锁是一种常见的分布式锁实现,本文将对其进行详细介绍。 在分布式系统中,多个进程或节点可能需要同时访问共享资源。为了确保数据

    2024年02月02日
    浏览(30)
  • 分布式应用:Zookeeper 集群与kafka 集群部署

    目录 一、理论 1.Zookeeper   2.部署 Zookeeper 集群 3.消息队列  4.Kafka 5.部署 kafka 集群 6.Filebeat+Kafka+ELK 二、实验 1.Zookeeper 集群部署 2.kafka集群部署 3.Filebeat+Kafka+ELK 三、问题          1.解压文件异常 2.kafka集群建立失败 3.启动 filebeat报错 4.VIM报错 5. kibana无法匹配 四、总结

    2024年02月14日
    浏览(41)
  • ZooKeeper的应用场景(命名服务、分布式协调通知)

    命名服务(NameService)也是分布式系统中比较常见的一类场景,在《Java网络高级编程》一书中提到,命名服务是分布式系统最基本的公共服务之一。在分布式系统中,被命名的实体通常可以是集群中的机器、提供的服务地址或远程对象等一这些我们都可以统称它们为名字(Name),

    2024年02月12日
    浏览(26)
  • 分布式应用之zookeeper集群+消息队列Kafka

           ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。为分布式框架提供协调服务的

    2024年02月06日
    浏览(46)
  • SpringBoot~ dubbo + zookeeper实现分布式开发的应用

    配置服务名字, 注册中心地址, 扫描被注册的包 server.port=8081 #当前应用名字 dubbo.application.name=provider-server #注册中心地址 dubbo.registry.address=zookeeper://127.0.0.1:2181 #扫描指定包下服务 dubbo.scan.base-packages=com.demo.service 实现一个接口,在接口中完成需求 public interface Translate { String tran

    2024年04月10日
    浏览(42)
  • zookeeper应用场景之分布式的ID生成器

            在分布式系统中, 分布式ID生成器的使用场景非常之多 : 大量的数据记录,需要分布式ID。 大量的系统消息,需要分布式ID。 大量的请求日志,如restful的操作记录,需要唯一标识,以便进行后续的用户行为分析和调用链路分析。 分布式节点的命名服务,往往也

    2024年01月23日
    浏览(43)
  • 一篇搞定分布式大数据系统所有概念,包括有Hadoop、MapReduce、HDFS、HBASE、NoSql 、ZooKeeper 、Reidis 、Nginx 、BASE、CAP定义、特点和应用场景

    1.1hadoop定义和特点 Hadoop定义: Hadoop是一个开源的分布式计算框架,用于存储和处理大规模数据集。它基于Google的MapReduce论文和Google文件系统(GFS)的设计理念,并由Apache软件基金会进行开发和维护。 Hadoop的主要特点包括: 分布式存储:Hadoop通过分布式文件系统(Hadoop Dist

    2024年02月03日
    浏览(38)
  • 大数据课程C3——ZooKeeper的概述

    文章作者邮箱:yugongshiye@sina.cn              地址:广东惠州 ⚪ 了解Zookeeper的特点和命令; ⚪ 了解Zookeeper的构成部分ExecutorService、Lock、Atomic; 1. 分叉:将一个大的任务拆分成多个小的任务,分配多个线程来处理 2. 合并:将拆分出去的小的任务的结果进行汇总,获取到最

    2024年02月15日
    浏览(30)
  • 【大数据】大数据之分布式协调服务--Zookeeper 教程

    ZooKeeper 是一种分布式协调服务,用于管理大型主机。在分布式环境中协调和管理服务是一个复杂的过程。ZooKeeper 通过其简单的架构和 API 解决了这个问题。ZooKeeper 允许开发人员专注于核心应用程序逻辑,而不必担心应用程序的分布式特性。 ZooKeeper 框架最初是在“Yahoo!\\\"上构

    2023年04月09日
    浏览(27)
  • 分布式服务框架_Zookeeper--管理分布式环境中的数据

    安装和配置详解 本文介绍的 Zookeeper 是以 3.2.2 这个稳定版本为基础,最新的版本可以通过官网   http://hadoop.apache.org/zookeeper/ 来获取, Zookeeper 的安装非常简单,下面将从单机模式和集群模式两个方面介绍 Zookeeper 的安装和配置。 单机模式

    2024年02月12日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包