前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >kafka进阶-文末思维导图

kafka进阶-文末思维导图

原创
作者头像
温安适
修改2021-06-01 10:20:10
3550
修改2021-06-01 10:20:10
举报
文章被收录于专栏:温安适的blog温安适的blog

kafka的第二篇,文末依旧是思维导图。

消费者组重平衡

弊端

影响Consumser端TPS

慢,效率低

发生时机

组成员数据发生变化

订阅主题数量发生变化

订阅主题分区数发生变化

优化配置,避免不必要的Rebalance

尝试解决:Consumer没能及时发送心跳请求,导致被踢出Group

session.timeout.ms 会话间隔

heartbeat.interval.ms 心跳间隔

session.timeout.ms >= 3* heartbeat.interval.ms 至少3轮的心跳请求。

尝试解决:Consumer 消费时间过长导致的

max.poll.interval.ms拉取消息的时间间隔

发生Rebalance时,由哪个线程通知其他消费者实例

0.10.1.0版本之前,在消费者主线程中

目前心跳线程,heartbeat.interval.ms 控制重平衡通知的频率

消费者组状态机

Empty

组内没有成员,可能存在已提交的位移数据,,而且这些位移未过期

Dead

组内没有成员,元信息已被协调者移除

PreparingRebalance

消费者组准备开始重平衡,所有成员都要重新加入该组

CompletingRebalance

消费者组所有成员已加入,正等待分配方案。该状态老一点的版本中杯称为AwaitingSync

Stable

稳定状态,已重平衡完成,组内成员正常消费数据

协调者端处理重平衡

协调者组件保存着当前向他注册过的所有组信息。
场景

新成员入组

组成员主动离组

组成员崩溃离组

重平衡时协调者对组内成员提交位移的处理

步骤

当重平衡开启时,协调者会给予成员一段缓冲时间,要求每个成员必须在这段时间内快速地上报自己的位移信息

然后再开启正常的 JoinGroup/SyncGroup 请求发送

重平衡流程

JoinGroup请求 和 SyncGroup请求。

第一个发送JoinGroup的成为领导者

领导者(消费者),收集所有成员的订阅信息,然后根据这些信息,指定具体的分区消费方案

无消息丢失配置

生产者部分

使用producer.send(msg,callback) callback 可以准确知道消息是否提交成功。

设置acks=all 所有副本都接收到消息。

设置retries为一个较大的值 重试防止网络抖动。

Broker部分

unclean.leader.election.enable=false , Broker端参数,禁止落后的Broker成为Leader。

replication.factor>=3, Broker端的参数 , 副本数量,冗余。防止消息丢失。

min.insync.replicas>1, Broker端的参数 , 至少要写入的最小副本数,提升消息持久性。

确保replication.factor > min.insync.replicas 副本数大于最小写入副本数,否则有一个副本挂了,集群就不可用了。

建议:replication.factor = min.insync.replicas + 1

消费者部分

确保消息消费完成再提交点位

副本机制

什么是副本

通常是分布式系统再多台网络互联的机器上保存有相同的数据拷贝。

好处

提供数据冗余 (kafka仅仅用到这个好处)

提高伸缩性

改善数据局部性

Kafka追随者副本不对外提供服务的原因

方便实现 Read-your-writes ,向Kafka成功写入消息后,马上使用消费者API去读取刚才生成的消息

方便实现单调读

In-sync Replicas (ISR)

同步副本集,包含Leader 与follower副本

判断Follower与Leader同步的标准

replica.lag.time.max.ms参数值,Follwer副本能落后Leader副本的最长时间间隔,默认为10s

拦截器

基本思想

不修改应用程序的逻辑的情况下,动态的实现一组可插拔的事件处理逻辑链。

使用场景

端到端系统性能检查、消息审计等多种功能在内的场景。

拦截点

生产者拦截器

发送消息前

消息提交成功后

消费者拦截器

消费消息前

提交位移后

注意事项

指定拦截器类时,一定要指定它们的全定限名

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 消费者组重平衡
    • 弊端
      • 发生时机
        • 优化配置,避免不必要的Rebalance
          • 尝试解决:Consumer没能及时发送心跳请求,导致被踢出Group
          • 尝试解决:Consumer 消费时间过长导致的
        • 发生Rebalance时,由哪个线程通知其他消费者实例
          • 消费者组状态机
            • 协调者端处理重平衡
              • 协调者组件保存着当前向他注册过的所有组信息。
              • 场景
              • 步骤
            • 重平衡流程
            • 无消息丢失配置
              • 生产者部分
                • Broker部分
                  • 消费者部分
                  • 副本机制
                    • 什么是副本
                      • 好处
                        • Kafka追随者副本不对外提供服务的原因
                          • In-sync Replicas (ISR)
                            • 判断Follower与Leader同步的标准
                            • 拦截器
                              • 基本思想
                                • 使用场景
                                  • 拦截点
                                    • 生产者拦截器
                                    • 消费者拦截器
                                  • 注意事项
                                    • 指定拦截器类时,一定要指定它们的全定限名
                                相关产品与服务
                                云联网
                                云联网(Cloud Connect Network,CCN)提供全网互联服务,助力您实现各地域的云上、云下多点互联。云联网的智能调度、路由学习等特性,可帮助您构建极速、稳定、经济的全网互联,轻松满足在线教育、游戏加速、混合云等全网互联场景下的极速体验。
                                领券
                                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档