zookeeper的使用,2024年最新阿里、百度、美团、携程、蚂蚁面经分享

本地配置的方式实现动态数据的方法:
系统可以在启动时候读取配置,在运行过程中定期检测文件更新,当发现更新时,就读取最新配置

负载均衡

传统的dns是通过操作系统实现的。

zookeeper实现负载均衡的动态dns(DDNS)。
实现方式:

  • 在zookeeper上创建节点/DDNS/app/server.app.com 域名节点
  • 在节点数据中存储这个域名的ip地址:
create /DDNS/app/server.app.com 192.168.0.1:8000,192.168.0.2:8080

使用ddns服务的从这个节点获取ip地址,同时订阅这个节点,能够收到域名变更通知。

命名服务

通过命名服务,客户端应用能够通过需求服务的服务名来获得资源的地址和信息等。

craete -q参数创建顺序节点,就是一个唯一id

发布式协调/通知

zookeeper中独有的watcher注册和异步通知机制,能实现很好地分布式环境下的不同系统之间的协调和通知。

在mysql的数据复制过程中承担mysql的主备集群协调

在MySQL主从复制中,默认情况下,写操作(插入、更新、删除等)通常只能在主服务器上执行,而读操作可以在主服务器和从服务器上执行。

每台主机都需要注册入主备集群中:
craete -e -q /mysql_replicator/tasks/copy_hot_item/insatnces/host-
通过让zookeeper生成的id最小的主机为主机器,其他为备份机器。
当主机器退出后(被订阅),会通知其他节点进行重新选举。

主服务器(Master)记录二进制日志(Binary Log):
主服务器负责记录所有对数据库的更改,将这些更改以二进制日志的形式保存。二进制日志包括插入、更新和删除等操作。

  1. 从服务器(Slave)连接到主服务器:
    从服务器通过配置连接到主服务器,并请求复制主服务器上的二进制日志。
  2. 从服务器获取主服务器的快照:
    初次启动时,从服务器可能会请求主服务器上的快照数据,以确保从服务器处于与主服务器相同的初始状态。这个过程称为初始化数据快照。
  3. 主服务器将二进制日志传输到从服务器:
    一旦从服务器与主服务器建立连接,主服务器开始将二进制日志传输给从服务器。从服务器会持续获取并应用这些日志,以保持与主服务器数据的一致性。
  4. 从服务器应用二进制日志:
    从服务器将接收到的二进制日志应用到自身的数据库中,以反映主服务器上的所有更改。这确保了主从服务器的数据保持同步。

通用的分布式系统机器间通信方式

系统间通信的目的无法三个:心跳检测,工作进度汇报,系统调度。

心跳检测:通过订阅临时节点来实现
工作进度汇报:临时节点上记录实时的工作进度
系统调度:控制台/客户端系统架构,将一个节点作为控制台存储指令,客户端订阅节点,从而实现调用

集群管理:对集群中的机器运行状态收集,对集群中的机器进行上下线

zookeeper通过节点数据和watcher可以实现。

机器监控

通过监听父节点的状态,当有机器通过创建临时节点的方式加入集群时,父节点发出“子节点状态改变”的通知。

实现分布式日志收集系统
  1. 创建收集日志的机器:create /logs/collector 192.168.0.1:8080
  2. 将需要提交日志的机器注册到收集日志的机器上 create -e /logs/collector/host1 192.168.0.2:8080
  3. 通过收集日志的机器的定时遍历从而实现分布式的机器的日志收集

Master选举

通过关系型数据库的唯一主键的特性实现:
多个机器同时向关系型数据库写入相同的主键,成功的那一个成为master
但是master挂掉,这个策略就没有应对策略了

zookeeper实现:
多个机器在相同时间,同时create一个相同的临时时间节点,成功的成为主节点,失败的监听主节点,当主节点挂掉,重选。

分布式锁

排他锁(写锁)

给使用资源注册临时节点,使用完资源后删除锁。

共享锁(读锁)
  1. 创建资源节点 create /lock/resourece
  2. 读机器在资源节点下创建临时顺序锁,同时获取/lock/resourece下的所有子节点,并且对/lock/resource注册watcher。
  3. 确认自己的节点序号在所有/lock/resourece节点下的顺序
  4. 如果比自己序号小的节点都是读请求,则开始读,比自己序号小的节点中有写锁,则进入等待。
  5. 收到watcher子节点变更后重新进行检测自己的序号排位。

缺点:子节点变更会通知所有节点,消耗资源
改进:新注册的节点只监听比自己小一位的节点。

分布式队列

  1. create /queue_fifo
  2. 入队创建临时节点 create -e -q /queue_fifo/host1-00000001
  3. 新节点加入后如果自己不是最小的进入等待,并且监听比自己序号小的最后一个节点

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数大数据工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年大数据全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上大数据开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注大数据获取)
img

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注大数据获取)
[外链图片转存中…(img-1f7KdNf4-1712994385376)]

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 16
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值