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