一文讲解高并发下RabbitMq消息中间件你应该介么玩!

什么是削峰限流

场景:

秒杀活动,一般会因为流量过大,导致应用挂掉,为了解决这个问题,一般在应用前端加入消息队列。

作用:

  1. 可以控制活动人数,超过此一定阀值的订单直接丢弃(我为什么秒杀一次都没有成功过呢)
  2. 可以缓解短时间的高流量压垮应用(应用程序按自己的最大处理能力获取订单)

高并发下RabbitMq消息中间件应该如何玩?阿里资深架构师一文讲解

什么是应用解耦

场景:

双11是购物狂节,用户下单后,订单系统需要通知库存系统,传统的做法就是订单系统调用库存系统的接口。

缺点:

当库存系统出现故障时,订单就会失败

高并发下RabbitMq消息中间件应该如何玩?阿里资深架构师一文讲解

案例分析

某购票网站

2014年及以前由于某购票网站架构设计不好,经常出现网站并发访问量大时出现网站崩溃

小米官网抢购手机:

使用“消息队列中间件”设计,先抢先得,尽管你提交了抢购请求,但不一定抢得到

电商平台的“秒杀抢购”:

采用了“消息队列中间件”技术,在高并发环境下充当重要角色

高并发下RabbitMq消息中间件你应该介么玩

高并发下RabbitMq消息中间件应该如何玩?阿里资深架构师一文讲解

消息队列

消息队列(Message Queue,简称 MQ),高可用分布式集群技术,提供消息发布订阅、消息轨迹查询、定时(延时)消息、资源统计、监控报警等一系列消息云服务,是企业级互联网架构的核心产品

高并发下RabbitMq消息中间件应该如何玩?阿里资深架构师一文讲解

消息队列MQ知识树

消息队列做为互联网削峰限流、应用解耦等重要手段,应该掌握的以下这些知识。

高并发下RabbitMq消息中间件应该如何玩?阿里资深架构师一文讲解

为什么选择RabbitMq

  1. ZeroMQ : 扩展性好,开发比较灵活,采用C语言实现,不能数据持久化
  2. ActiveMQ: 历史悠久的开源项目,已经在很多产品中得到应用,对队列数较多的情 况支持不好,容易出现丢消息. 4000并发
  3. Redis 做为一个基于内存的K-V数据库,其提供了消息订阅的服务,可以当作MQ来使用,目前应用案例较少,且不方便扩展
  4. RocketMQ: 阿里巴巴的MQ中间件,在其多个产品下使用,可查询的资料相当少,不全面
  5. RabbitMQ :结合erlang语言本身的并发优势,性能较好,管理端页面功能丰富,消息延迟微秒级,支持多种语言且支持AMQP客户端

RabbitMq原理透析

高并发下RabbitMq消息中间件应该如何玩?阿里资深架构师一文讲解

RabbitMq的绑定方式(Topic Exchange, Direct Exchange, Fanout Exchange )

Topic Exchange:路由键匹配,发送消息到 topic 交换器时,它会根据路由键通配符匹配去寻找绑定到此交换器上的匹配成功的队列,然后投递消息

RabbitMq原理小结

交换器、路由键、队列:

RabbitMq并不是把消息直接发送到队列里面的,而是先发送到了交换器,交换器再根据路由键把我们的消息投递到对应的队列

每种交换器定义了不同的路由算法来把消息投递到对应的队列

消息队列购票原理

高并发下RabbitMq消息中间件应该如何玩?阿里资深架构师一文讲解

对于高并发下RabbitMq消息中间件的使用,这位大咖也有讲解的视频,在这免费分享给大家,有需要的朋友可以在这免费领取

视频教学的内容包括:

  1. 削峰限流、解耦作用
  2. 有限资源完成高并发购票
  3. RabbitMq原理透析
  4. 购票完整闭环流程
  5. 单元测试与多线程高并发测试

高并发下RabbitMq消息中间件应该如何玩?阿里资深架构师一文讲解

关于RabbitMq还有一些剖析,已经整理成文档资料,由于篇幅限制就没有全部展现出来,截图如下所示:

高并发下RabbitMq消息中间件应该如何玩?阿里资深架构师一文讲解

同时还免费分享更多Java架构进阶学习视频及学习文档资料,希望对您有所帮助!

有需要的朋友可以在这免费领取

高并发下RabbitMq消息中间件应该如何玩?阿里资深架构师一文讲解

发布了83 篇原创文章 · 获赞 31 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/lonely_bin/article/details/103164810