Files
logseq/pages/Kafka.md

1.4 KiB
Raw Blame History

  • 高吞吐量每秒10几万
  • 高扩展性
  • 持久性
  • 容错性
  • 高并发
  • 为什么快?
    • 顺序写入磁盘,减少磁盘寻址
    • 支持批量发送消息,积累到一定量再发送,减少网络开销
    • 零拷贝,直接从磁盘发送到网络套接字
    • 支持对消息压缩
  • pull模型
    • 消费者自己记录消费状态,每个消费者独立地顺序拉取分区数据
    • 消费者可以按照任意顺序消费消息,可以重置到旧的偏移量处理之前的消息
    • 支持消费者组可以多个消费者通通消费一个topic
    • 如果没有数据消费使会出传入一个时长参数timeout
  • 消费顺序
    • 生产者发送消息到指定分区通过自定义分区器实现为消息指定相同的key
    • 消费者单线程消费同一分区
    • 对消息进行编号或者添加时间戳
  • 消息积压
    • 增加消费者,但是不能超过分区数量
    • 增加主题分区数量,重新平衡消费者
  • 分区数决定了同组消费者个数的上限
  • 高可用
    • 多个broker组成一个集群
    • 创建一个topic然后划分为多个partitiion各自存放一部分数据放在不同的broker上面
  • 消息确认机制
    • ack=0最不可靠发送后无法知道是否到达broker
    • ack=1等待leader确认消息但是不等待副本的确认
    • ack=-1最可靠等待所有副本同步完成才确认