-
RocketMQ
- 同步复制、异步刷盘 - 复制:主从节点之间的数据复制过程、刷盘:应用程序常驻内存数据刷到磁盘的过程
- 生产者&消费者模型
- RocketMQ核心概念零拷贝技术
- 分布式事务
- 双主双从高性能集群
-
Kafka - 不支持批量和广播消息,运维难度大,文档比较少
-
RabbitMQ - 使用Erlang开发,阅度和修改源码难度大
-
ActiveMQ - 吞吐量不高
-
ZeroCopy零拷贝技术
-
文件读取并发送出去的4次copy
image.png -
ZeroCopy - kernel直接把disk的data传输给socket,而不通过应用程序的传输
image.png
-
-
为啥使用消息队列 - 异步、解耦、削峰填谷
-
怎么避免重复消费 - RocketMQ不保证,需在业务端去重
-
RocketMQ高性能原因 - 顺序写、随机读、零拷贝
-
RocketMQ如何保证消息的顺序执行 - 发送到同一个Topic的同个queue里面,RocketMQ可以保证FIFO
-
RocketMQ如何保证消息的可靠性传输
- Producer端 - 不采用oneway发送(只负责发送消息,不等待回应)、使用同步或者异步方式发送、做好重试
- Broker端 - 双主双从架构,NameServer需要多节点
- Consumer端 - 消息消费务必保留日志、消费端务必做好幂等性处理
-
消息堆积了10个小时,有几千万条消息待处理,现在怎么办?
- 编写临时处理分发程序,从旧topic快速读取到临时新topic中,新topic的queue数量扩容多倍,然后再启动更多consumer进行在临时新的topic里消费
网友评论