日志收集项目总结

  • producer

  • kafka cluster

    • brocker
    • topic
    • partition
    • replication
  • consumer

    • consumer group

image-20240301110311912

  1. 生产者从kafka集群获取分区leader信息

  2. 生产者将消息发送给leader

  3. leader 将消息写入本地磁盘

  4. follower从leader拉去消息数据

  5. follower将消息写入本地磁盘,向leader发送 ACK

  6. leader收到所有的follower的ACK后,向生产者发送ACK

选择 partition 的原则

  1. 指定partition
  2. 若没指定partition,但设置了数据的key,根据key的值hash出对应的partition
  3. 若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/日志收集项目总结/
作者
Forrest
发布于
2024年3月1日
许可协议