Kafka学习笔记 -- 读取数据

栏目: 后端 · 发布时间: 6年前

内容简介:消费者从属于消费者群组。一个群组里的消费者

消费者从属于消费者群组。一个群组里的消费者 订阅的是同一个主题每个消费者接收主题一部分分区的消息

消费者横向扩展

1个消费者

  1. 主题T1有4个分区,然后创建消费者C1,C1是消费者群组G1里唯一的消费者,C1订阅T1
  2. 消费者C1将接收主题T1的全部4个分区的消息

Kafka学习笔记 -- 读取数据

2个消费者

  1. 如果群组G1新增一个消费者C2,那么每个消费者将 分别从两个分区接收消息
  2. 假设C1接收分区0和分区2的消息,C2接收分区1和分区3的消息

Kafka学习笔记 -- 读取数据

4个消费者

  1. 如果群组G1有4个消费者,那么每个消费者可以分配到一个分区

Kafka学习笔记 -- 读取数据

5个消费者

  1. 如果群组G1有5个消费者, 超过主题的分区数量 ,那么有1个消费者就会被 闲置 ,不会接收到任何消息

Kafka学习笔记 -- 读取数据

总结

  1. 往群组里增加消费者是 横向伸缩消费能力 的主要方式
  2. 消费者经常会做一些高延迟的操作,比如把数据写到数据库或HDFS,或者使用数据进行比较耗时的计算
  3. 有必要 为主题创建大量的分区 ,在负载增长时可以加入更多的消费者
    • 不要让 消费者的数量超过主题分区的数量 ,多余的消费者只会被 闲置

消费者群组横向扩展

  1. Kafka设计的主要目标之一,就是要让Kafka主题里的数据能够满足企业各种应用场景( 不同的消费者群组 )的需求
  2. 在这些场景里,每个应用程序可以获取到 所有的消息 ,而不只是其中的一部分
  3. 只要保证每个应用程序有自己的消费者群组,就可以让它们获取到主题所有的消息
  4. 不同于传统的消息系统, 横向伸缩Kafka消费者和消费者群组并不会对性能造成负面影响

Kafka学习笔记 -- 读取数据

消费者群组+分区再均衡

分区再均衡

  1. 分区再均衡: 分区的所有权从一个消费者转移到另一个消费者
  2. 分区再均衡非常重要,它为消费者群组带来了 高可用性伸缩性 (可以放心地添加或移出消费者)
  3. 在分区再均衡期间, 消费者无法读取消息 ,造成整个群组一小段时间内不可用
  4. 当分区被重新分配给另一个消费者时,消费者当前的读取状态会丢失,它有可能需要去刷新缓存,在它重新恢复状态之前会拖慢应用程序

心跳

  1. 消费者通过向被指派为 群组协调器 的Broker( 不同的群组可以有不同的协调器 )发送 心跳 来维持它们 和群组的从属关系 以及它们 对分区的所有权关系
  2. 只要消费者以 正常的时间间隔 发送心跳,就被认为是 活跃 的,说明它还在读取分区里的消息
  3. 消费者发送心跳的时机
    • 轮询消息 (为了获取消息)
    • 提交偏移量
  4. 如果消费者停止发送心跳的时间足够长,会话就会过期,群组协调器认为它已经死亡,就会触发一次再均衡
  5. 如果一个消费者发生崩溃,并停止读取消息,群组协调器会等待几秒钟,确认它死亡了才会触发再均衡
    • 在这几秒的时间内,死掉的消费者不会读取分区里的消息
  6. 在清理消费者时,消费者会 通知 协调器它将要离开群组,协调器会 立即 触发一次再均衡,尽量 降低处理停顿

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Python科学计算(第2版)

Python科学计算(第2版)

张若愚 / 清华大学出版社 / 2016-4-29 / 118

本书介绍如何用 Python 开发科学计算的应用程序,除了介绍数值计算之外,还着重介绍了如何制作交互式二维、三维图像,如何设计精巧的程序界面,如何与 C 语言编写的高速计算程序结合,如何编写声音、图像处理算法等内容。本书采用 IPython notebook 编写,所有的程序均能在本书提供的运行环境中正常运行,书中所印刷的图表以及程序输出为均为自动运行的结果,保证了书中所有程序的正确性以及可读性。......一起来看看 《Python科学计算(第2版)》 这本书的介绍吧!

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

MD5 加密
MD5 加密

MD5 加密工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具