RabbitMQ

RabbitMQ的好处

解耦

服务只向消息服务器发消息, 不考虑谁要数据

下游要数据, 从消息服务器订阅

削峰

高峰时排队处理数据, 减轻瞬时压力

异步

将消息写入消息队列,非必要的业务逻辑以异步的方式运行,加快响应速度

为什么使用消息队列?

通过一个 MQ,发布订阅消息这么一个模型,A 系统跟其它系统彻底解耦

通过MQ存储发送异步写入请求, 加速响应时间

高峰期积压请求, 预防MySQL爆掉

缺点

可用性降低

复杂度提高

一致性问题

如何保证消息队列的高可用?

普通集群模式, 单纯提高吞吐量

镜像集群模式, 指定数据同步到所有节点

Kafka 的高可用性

Kafka 一个最基本的架构认识:由多个 broker 组成,每个 broker 是一个节点。创建一个 topic,这个 topic 可以划分为多个 partition,每个 partition 可以存在于不同的 broker 上,每个 partition 就放一部分数据

一个 topic 的数据,是分散放在多个机器上的,每个机器只放一部分数据

Kafka 0.8 以后,提供了副本(HA)机制。每个 partition 的数据都同步到其它机器上,形成自己的多个 replica 副本。replica 会选举一个 leader 出来,生产和消费只跟 leader互动 ,其他 replica 只是 follower。写的时候,leader 会负责把数据同步到所有 follower 上去,读的时候直接读 leader 上的数据即可。

写数据的时候,生产者就写 leader,leader 将数据落地写本地磁盘,其他 follower 自己从 leader  pull 数据。一旦所有 follower 同步完成,就发送 ack 给 leader,leader 收到所有 follower 的 ack 之后,就会返回写成功的消息给生产者。

消费的时候,只从 leader 读,但只有当一个消息已经被所有 follower 都同步成功返回 ack 的时候,这个消息才会被消费者读到。

Kafka、ActiveMQ、RabbitMQ、RocketMQ 有什么优缺点?

特性ActiveMQRabbitMQRocketMQKafka
单机吞吐量万级,比 RocketMQ、Kafka 低一个数量级同 ActiveMQ10 万级,支撑高吞吐10 万级,高吞吐,一般配合大数据类的系统来进行实时数据计算、日志采集等场景
topic 数量对吞吐量的影响topic 可以达到几百/几千的级别,吞吐量会有较小幅度的下降,这是 RocketMQ 的一大优势,在同等机器下,可以支撑大量的 topictopic 从几十到几百个时候,吞吐量会大幅度下降,在同等机器下,Kafka 尽量保证 topic 数量不要过多,如果要支撑大规模的 topic,需要增加更多的机器资源
时效性ms 级微秒级,这是 RabbitMQ 的一大特点,延迟最低ms 级延迟在 ms 级以内
可用性高,基于主从架构实现高可用同 ActiveMQ非常高,分布式架构非常高,分布式,一个数据多个副本,少数机器宕机,不会丢失数据,不会导致不可用
消息可靠性有较低的概率丢失数据基本不丢经过参数优化配置,可以做到 0 丢失同 RocketMQ
功能支持MQ 领域的功能极其完备基于 erlang 开发,并发能力很强,性能极好,延时很低MQ 功能较为完善,还是分布式的,扩展性好功能较为简单,主要支持简单的 MQ 功能,在大数据领域的实时计算以及日志采集被大规模使用

中小型公司,RabbitMQ;大型公司,用RocketMQ

大数据领域的实时计算、日志采集, Kafka

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值