当前位置:网站首页>消息队列的技术选型
消息队列的技术选型
2022-08-02 14:14:00 【zhangyu丶】
消息队列企业级应用场景分析
- 消息队列:在消息的传输过程中保存消息的容器,生产者和消费者不直接通讯,依靠队列保证消息的可靠性,避免了系统间的相互影响。
- 消息队列主要角色:服务端、客户端<生产者、订阅者>
- 消息队列主要作用:业务解耦、异步调用、流量削峰
- 解耦优点:提升系统稳定性、通过广播消息避免多次调用、对于无需关注调用结果的场景可以通过消息队列异步处理
消息队列选型对比分析,为什么使用RocketMQ
| 功能对比 | 成熟度 | 顺序消息 | 延时消息 | 事务消息 | 消息过滤 | 消息查询 | 消费失败重试 | 批量发送 |
|---|---|---|---|---|---|---|---|---|
| kafka | 日志领域 | 支持 | 不支持 | 不支持 | 支持 | 不支持 | 不支持 | 支持 |
| RabbitMQ | 成熟 | 支持 | 不支持 | 不支持 | 不支持 | 不支持 | 支持 | 不支持 |
| RocketMQ | 成熟 | 支持 | 特定LV | 支持 | 支持 | 支持 | 支持 | 不支持 |
| 实用性 | 部署方式 | 集群管理 | 选主方式 | 主从切换 | 数据可靠性 | 性能 | 可用性 | 堆积能力 |
|---|---|---|---|---|---|---|---|---|
| kafka | 集群 | Zookeeper | 自动选举 | 自动切换 | 高 | 非常高 | 分布式、主从 | 非常好 |
| RabbitMQ | 集群 | Erlang天然支持 | 最早加入的节点 | 自动切换 | 高 | 中 | 主从 | 一般 |
| RocketMQ | 集群 | Name Server | 不支持 | 不支持自动切换 | 高 | 高 | 分布式、主从 | 非常好 |
- Kafka:系统间的数据流通道
- RabbitMQ:可靠消息传输
- RocketMQ:高性能可靠消息传输
MQ高可用及高扩展解决方案剖析
- RocketMQ 架构
- Broker主从部署,自身信息注册在 NameServer 中
- Client 从 NameServer 中获取 Broker 信息
- NameServer 节点相互独立,无数据交互
- 可靠性分析
- 同步刷盘:性能低,可靠性高
- 异步刷盘:性能高,可靠性低

- 异步复制
- 同步双写
- 可用性分析
- 主从模式 Master 宕机:Broker 可读不可写
- 集群搭建方式
- 单 Master 模式
- 多 Master 模式
- 多 Maste r多 Slave 模式-异步复制
- 多 Master 多 Slave 模式-同步双写
MQ服务注册与发现原理剖析
- 注册中心—NameServer设计
- 服务注册:Broker 注册自身信息
- 服务发现:Procucer/Consumer 寻找 Broker 信息
- 注册中心—NameServer设计优点
- 设计目标简单高效
- 高可用方案:相互独立多个节点
- 数据存储设计
- Cluster-<Broker1,Broker2>
- Broker1 -<MasterIP,SlaveIP>
- Topic-<Broker1,Broker2>
- Broker-heartbeat
边栏推荐
- 从FAST TCP到POWERTCP
- 深入理解负载均衡
- Run ns3 with multiple processes
- udp transparent proxy
- IDEA 单元测试报错:Class not found
- 指针/【类型】对指针加一能力的影响(&*ip ,*&ipd)
- Introduction to C language function parameter passing mode
- Software Testing Basics (Back)
- Based on the matrix calculation in the linear regression equation of the coefficient estimates
- 泰伯效应.
猜你喜欢
随机推荐
二叉排序树与 set、map
Knapsack Problem - Dynamic Programming - Theory
golang的内存相关内容
How does ns3 solve cross reference issue
计算机导论——数据库
第二十八章:解题技巧
Happy, 9/28 scene collection
Exotic curiosity-a solution looking - bit operations
为什么Volatile能保证双重检查锁的线程安全
lua编程
golang-reflect-method-callback
面试汇总
MMD->Unity一站式解决方案
Qt | 播放音频文件 QMediaplayer
冷读123
TypeScript
Unity插件-NGUI
win10无法识别蓝牙麦克风
灵活的区域定义
【离散化+前缀和】Acwing802. 区间和









