消息队列前世今生-Kafka、BMQ
业界消息队列:Kafka、PocketMQ、Pulsar、BMQ
- Kafka
- 使用场景:离线服务中使用
- 如何使用:创建集群、新增Topic、编写生产者逻辑、编写消费者逻辑
- 基本概念:Topic-业务场景;Offset,可理解为partition的唯一ID,严格递增;Replica,每个partition有多个Replice,会在一定程度上保持和partition中的leader一致
- Producer:批量发送:防止因单条消息阻塞、数据压缩:减少消息大小
- Broker:顺序写提高磁盘写入效率,减少寻道时间;消息索引;零拷贝
- Consumer:通过寻找协调者减少消耗Rebalance
4,5,6可以帮助Kafka提高吞吐或稳定性
Kafka缺点:运维成本高、负载不均衡场景解决方案复杂、没有自己的缓存,完全依赖PageCache、Controller和Coordinator和Broker在同一进程中,大量IO会造成性能下降
- BMQ:兼容Kafka、存算分离、云原生消息队列
- Partition状态机:保证对于任意分片在同一时刻只在一个Broker上存活
2.写文件流程
多机房部署: 每个机房都处理全部的partition