笔记之RocketMQ技术内幕(一)

本文介绍了RocketMQ在分布式系统中的应用,包括解耦、异步处理和削峰的优点,同时也探讨了消息重复消费与系统可用性的问题。通过保证幂等性和采用多台消息服务器、NameServer的机制来防止单点故障,确保高可用性。
摘要由CSDN通过智能技术生成
一. 使用消息队列的优缺点
  1. 优点
    三个主要原因:解耦、异步、削峰
  • 解耦:多个模块或多个系统之间相互调用,但不需要同步调用接口,可以使用MQ异步化解耦。生产者只需要将数据发送到MQ不用去管给谁消费,而消费者只需要从MQ中获取数据。
  • 异步:使客户端的响应更加迅速
  • 削峰:系统每天的并发访问量只有一小段时间会暴增,如果只使用MySQL,这些数据请求会直接请求到MySQL,可能导致MySQL扛不住这么大的并发而崩溃,而MQ可以减少数据库的压力。
  1. 缺点
  • 导致系统的可用性降低:如果MQ挂掉,可能导致整个系统崩溃
  • 导致系统的复杂性增高:需要保证消息不会被重复消费,保证如何处理消息丢失的情况等待
  • 一致性问题:生产者成功将数据发送到消息队列就返回成功,但消费者不一定成功消费
二. 消息中间件的设计思路

一般基于主题的订阅发布机制。生产者发送某主题的消息到消息服务器,消息服务器将此消息持久化;消费者订阅特定的主题,消息服务器根据订阅信息将消息push到消费者或者消费者主动pull消息。这样的好处是实现解耦,生产者只用关注于将消息发送到消息队列,消费者需要消费消息只需要从消息队列获取,但可能会降低系统的可用性,系统依赖的外部系统越多,那么就会使得系统越复杂,如果消息服务器崩溃,会造成整个系统都不可用。

三. 如何解决消息被重复消费?

如果保证了消息队列的幂等性,那重复消

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值