当前位置: 首页 > news >正文

Zookeeper搭载kafka分布式消息发布/订阅

一、Zookeeper简介

    ZooKeeper 是一个开源的分布式协调服务,由雅虎创建,是 Google Chubby 的开源实现。
分布式应用程序可以基于 ZooKeeper 实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、
集群管理、Master 选举、配置维护,名字服务、分布式同步、分布式锁和分布式队列等功能。

二、zookeeper的角色

在zookeeper中有3个角色

  • Leader           领导/组织角色
  • Follwer           跟随角色
  • Observer        观察角色

三、zookeeper的特点优势

  • 简单

Zookeeper的核心是一个精简的文件系统,它支持一些简单的操作和一些抽象操作,例如,排序和通知。

  • 丰富

Zookeeper的原语操作是很丰富的,可实现一些协调数据结构和协议。例如,分布式队列、分布式锁和一组同级别节点中的“领导者选举”。

  • 高可靠

Zookeeper支持集群模式,可以很容易的解决单点故障问题。

  • 松耦合交互

不同进程间的交互不需要了解彼此,甚至可以不必同时存在,某进程在zookeeper中留下消息后,该进程结束后其它进程还可以读这条消息。

  • 资源库

Zookeeper实现了一个关于通用协调模式的开源共享存储库,能使开发者免于编写这类通用协议。

四、zookeeper在分布式系统中的功能

zookeeper在分布式微服务中,可以用来做:

  • 分布式协调服务/通知
  • 数据发布与订阅(配置中心)
  • 分布式锁
  • 命名服务
  • Master选举

在SpringCLoud微服务系统中,zookeeper主要定义用来做分布式协调服务/通知,即与kafka搭配使用做为:分布式消息队列服务。kafka与zookeeper的作用主要定义如下:

1、kafka使用zookeeper来实现动态的集群扩展,不需要更改客户端(producer和consumer)的配置。
broker会在zookeeper注册并保持相关的元数据(topic,partition信息等)更新。2、 而客户端会在zookeeper上注册相关的watcher。一旦zookeeper发生变化,客户端能及时感知并作出
相应调整。这样就保证了添加或去除broker时,各broker间仍能自动实现负载均衡。这里的客户端指的是
Kafka的消息生产端(Producer)和消息消费端(Consumer)3、Broker端使用zookeeper来注册broker信息,以及监测partitionleader存活性.4、Consumer端使用zookeeper用来注册consumer信息,其中包括consumer消费的partition列表等,
同时也用来发现broker列表,并和partitionleader建立socket连接,并获取消息. 5、Zookeer和Producer没有建立关系,只和Brokers、Consumers建立关系以实现负载均衡,即同一个 
ConsumerGroup中的Consumers可以实现负载均衡(因为Producer是瞬态的,可以发送后关闭,无需直接等待)

 

 

同名原创公众号:程序大视界

 

http://www.jsqmd.com/news/781874/

相关文章:

  • myeclipse中新导入服务器项目报错问题_please correct errors before proceeding with the m
  • 基于Next.js 14与React Bootstrap构建现代化管理后台实战指南
  • AzurLaneAutoScript:碧蓝航线终极自动化助手,解放双手的完整解决方案
  • 2026年轻法式家装设计要点有哪些 - mypinpai
  • 2026纸管设备厂家排行:3家合规企业核心参数对比 - 奔跑123
  • Autovisor终极指南:3步轻松实现智慧树课程自动化学习
  • 新手学Oracle数据库安装遇到问题_setup has detected that your current oracle versio
  • SpringCloud--Config Server配置中心学习总结_springcloudconfig原理总结
  • MERN 堆栈中的 URL 设计最佳实践
  • 5分钟掌握全能资源嗅探:解锁网页媒体自由下载的终极方案
  • 2026年迎宾机器人选购指南:高性价比的迎宾机器人工厂有哪些? - mypinpai
  • 内存计算中的非线性ADC量化技术优化与应用
  • 菜鸟刚学java ee使用myeclipse + jdk + tomcat开发时myeclipse中启动tomcat出错问题_jdk版本会影响tomcat在myeclipse8.5中运行吗
  • 本地大模型赋能命令行:tlm工具实现离线AI助手与Shell工作流融合
  • 掌握Balena Etcher:安全高效的跨平台镜像烧录解决方案
  • idea快速创建SpringCloud项目_idea新建一个springcloud项目
  • 如何快速高效配置SD-WebUI-Inpaint-Anything插件中的自定义修复模型
  • QLoRA微调与GraphRAG在专业领域问答中的性能对比
  • Chat Relay:构建AI聊天界面中继器,统一调用多模型API
  • 那些转行做AI训练师、提示工程师的测试员,现在怎么样了?
  • 操场建设公司选购指南,凯捷体育值得选吗 - mypinpai
  • Flutter for OpenHarmony 课程表实战:日程排班+日历组件完整学习应用开发
  • Maven与Gradle的区别_maven和gradle的区别
  • TensorFlow Datasets终极指南:从MNIST到ImageNet的完整数据管道构建
  • 定时执行:按时间自动触发AI任务
  • SCG到ECG信号转换:Wave U-Net模型实现移动端心脏监测
  • XUnity Auto Translator:打破语言壁垒,让Unity游戏畅玩无阻
  • 2026年4月国内有名的黄糊精供应商推荐,型煤球团粘合剂/陶土/氧化铝空心球/磷酸二氢铝/白糊精,黄糊精公司口碑推荐 - 品牌推荐师
  • Dubbo基本原理介绍_dubbo protocol serialization
  • Switch Transformers:稀疏激活MoE模型原理与工程实践指南