日志收集项目总结
producer
kafka cluster
- brocker
- topic
- partition
- replication
consumer
- consumer group
生产者从kafka集群获取分区leader信息
生产者将消息发送给leader
leader 将消息写入本地磁盘
follower从leader拉去消息数据
follower将消息写入本地磁盘,向leader发送 ACK
leader收到所有的follower的ACK后,向生产者发送ACK
选择 partition 的原则
- 指定partition
- 若没指定partition,但设置了数据的key,根据key的值hash出对应的partition
- 若partition和key都没有设置,采用轮询的方式,即每次取一小段时间的数据写入某一个partition,下个时间段写入下一个partition
ACK的应答机制
- 0 表示 producer不需要等到集群的ACK,就能继续发送数据给集群。这时的安全性最低
- 1 表示 producer 只需要等到Leader的ACK就能继续发送数据
- all 表示 producer需要等待Leader和所有的followers的ACK,确保leader的数据和其副本数据同步。这时的安全性最好,但效率最低
partition的结构
partition在服务器上的表现形式就是一个个的文件夹。每个partition的文件夹下面会有多组 segment文件,每个segment文件包含了 .index
、,log
、.timeindex
文件。其中.log
文件用于存储message,.index
和.timeindex
文件用于索引,检索消息
使用场景
消息队列
追踪网站活动
Metrics
zookeeper
ETCD
日志收集项目总结
http://example.com/2024/03/01/日志收集项目总结/