前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Zookeeper搭载kafka消息发布和订阅

Zookeeper搭载kafka消息发布和订阅

作者头像
程序大视界
修改2020-08-01 13:45:25
6240
修改2020-08-01 13:45:25
举报
文章被收录于专栏:程序大视界程序大视界

一、Zookeeper简介

ZooKeeper 是一个开源的分布式协调服务,由雅虎创建,是 Google Chubby 的开源实现。

分布式应用程序可以基于 ZooKeeper 实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、

集群管理、Master 选举、配置维护,名字服务、分布式同步、分布式锁和分布式队列等功能。

二、zookeeper的角色

在zookeeper中有3个角色

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

三、zookeeper的特点优势

  • 简单

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

  • 丰富

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

  • 高可靠

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

松耦合交互

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

资源库

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

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

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

  1. 分布式协调服务/通知
  2. 数据发布与订阅(配置中心)
  3. 分布式锁
  4. 命名服务
  5. 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是瞬态的,可以发送后关闭,无需直接等待)

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

本文分享自 程序大视界 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、Zookeeper简介
  • 二、zookeeper的角色
  • 三、zookeeper的特点优势
  • 四、zookeeper在分布式系统中的功能
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档