可以实时处理大量数据,满足各种需求场景.
- Hadoop 批处理系统。
- Storm/Spark 流式处理引擎
- web/nginx,访问日志
- 消息服务
开放统一接口给consumer
hadoop,hbase等.
装载到hadoop,数仓etl做离线分析和数据挖掘.
- Partition副本选举Leader
消息消费offset记录,consumer-offset
Rebalance机制
消费者数量和消费分区有变化的时候。kafka会重新分配消息分区的关系,重启后分区又会归还给其他的消费者.
- 以下几种情况均会触发rebalance
consumer,消费组分区partitation,Topic.
要尽量避免rebalance,实在要触发也尽量避开高峰期.
因为消费组无法送kafka消费消息,会对kafka的tps产生影响,比如有数百个那么rebalance会很耗时.
- ISR && OSR
In Sync Replicas (所有与leader副本保持一定程度同步的副本在内组成ISR)
osd 和 leader副本同步情况滞后太多的副本组成osr.
正常情下: follower副本都应该与leader副本保持一定程度的同步.
offset偏移高低水位.
日志分段存储:
规定了一个段位的log文件最大为1g大小
一个segment可以有 index(稀疏索引,log消息体,timeindex(时间位移))
- Partition副本选举Leader机制
- 消费者消息Offset
Rebalance分区分配策略
写入方式, push到Broker.
消息路由,根据分区算法选择存储到哪一个partition.
HW和LEO详解
0 1 all 三种模式.
日志分段存储
.index 根据这个定位offset(kafka的稀疏索引)
.log 消息存储文件,存放offset和消息体
(每次都会往分区发送4k的消息,记录一条当前消息的发送时间戳,对应的offset)
.timeindex 消息发送时间索引