kafka
2020-05-13 22:53:24 133 举报
AI智能生成
Kafka 知识点总结
作者其他创作
大纲/内容
主题 topic
Consumer
Consumer Group
Kafka 提供的可扩展且具有容错性的消费者机制
可以有一个或多个 Consumer
同一个 GroupId
消息只能被同组内一个 Consumer 消费
Coordinator 协调者
Consumer Offset
消费进度
Map<GroupId, Partition, Offset>
zookeeper -> 内部主题
用户不可修改消息格式
自动创建
Compact 策略来定期清理过期消息
拦截器
消息审计
监控
Partitioning 分区
主题划分多个区
把数据分割在多个 Broker 上
每条消息只在一个分区上
负载均衡
轮询
随机
Key-ordering
同 Key 的消息有序
地理位置
高伸缩性 Scalability
Rebalance
本质上是一种协议,规定了一个 Consumer Group 下的所有 Consumer 如何达成一致,来分配订阅 Topic 的每个分区。
触发条件
组成员数发生变更
订阅主题数发生变更
订阅主题的分区数发生变更
问题
类似 STW 过程
所有 Consumer 重新分配
太慢
Coordinator 协调者
Rebalance 的执行者
避免
非必要 Rebalance 是因为未能及时发送心跳,导致 Consumer 被“踢出”Group 而引发的
非必要 Rebalance 是 Consumer 消费时间过长导致的
FGC
心跳分支来通知
Compress
发生位置
Broker
Consumer
Producer 端压缩、Broker 端保持、Consumer 端解压缩
Broker 重新压缩
压缩算法不一致
Broker 发生消息格式转换
monitor 监控
kafka-consumer-groups 脚本
关注 LAG
Kafka Java Consumer API
Kafka JMX 监控指标
records-lag-max
records-lead-min
lead 越小,可能要丢消息,kafka 会定期清理数据
Controller 控制器
第一个成功创建 /controller 节点的 Broker 会被指定为控制器。
主题管理(创建、删除、增加分区)
分区重分配
Preferred 领导者选举
集群成员管理(新增 Broker、Broker 主动关闭、Broker 宕机)
数据服务
分布式消息引擎
集群
Producer
Broker
Kafka 服务端
运行在多个集群上
Replication 备份
领导者副本
承担读写
追随者副本
同步
持久化
日志追加
高吞吐量
日志段
定时删除
Version
Apache
社区版
Confluent
集群监控、跨数据中心备份
Cloudera/Hortonworks
云版本,配合云使用
可靠性保障
语义 level
最多一次(at most once):消息可能会丢失,但绝不会被重复发送。
至少一次(at least once):消息不会丢失,但有可能被重复发送。
精确一次(exactly once):消息不会丢失,也不会被重复发送。
幂等 Idempotence
单分区幂等
单会话幂等
事务 transaction
跨会话、跨分区幂等
消息原子提交到分区
Replica 副本
本质就是一个只能追加写消息的提交日志
同一个分区下的所有副本保存有相同的消息序列
基于领导者(Leader-based)的副本机制
方便实现“Read-your-writes”
方便实现单调读(Monotonic Reads)
ISR In-sync Replicas
leader 副本也在其中
超过设置的落后时间,踢出 ISR
赶上可以加回
Unclean 领导者选举(Unclean Leader Election)
高水位 High Watermark
位移值等于高水位的消息也属于未提交消息。也就是说,高水位上的消息是不能被消费者消费的
Log End Offset 日志末端位移
1个主题
N 个分区
M 个备份
若干消息
收藏
0 条评论
下一页