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