RabbitMQ简介
RabbitMQ简介
- 1、RabbitMQ简介
- 1.1、简介
- 1.2、相关网址
- 1.3、消息中间件(MQ=Message Queue)
- 1.4、常用的消息中间件
- 2、MQ(Message Queue)的应用场景
- 2.1、异步处理
- 2.2、系统解耦
- 2.3、流量削峰
- 2.4、日志处理
1、RabbitMQ简介
1.1、简介
RabbitMQ是一个广泛使用的消息服务器,采用Erlang语言编写,是一种开源的实现 AMQP(高级消息队列协议)的消息中间件;
RabbitMQ最初起源于金融系统,它的性能及稳定性都非常出色;
AMQP协议(http://www.amqp.org),即 Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计;
我们学的协议有哪些:(http、ftp)
1.2、相关网址
RabbitMQ官网:https://www.rabbitmq.com
Github:https://github.com/rabbitmq
1.3、消息中间件(MQ=Message Queue)
简单来说,消息中间件就是指保存数据的一个容器(服务器),可以用于两个系统之间的数据传递。
消息中间件一般有三个主要角色:生产者、消费者、消息代理(消息队列、消息服务器);
生产者发送消息到消息服务器,然后消费者从消息代理(消息队列)中获取数据并进行处理;
1.4、常用的消息中间件
目前比较主流的几个消息中间件:
- RabbitMQ
- kafka(大数据领域)
- RocketMQ(阿里巴巴开源)献给Apache组织
- pulsar(最近一两年流行起来的)
2、MQ(Message Queue)的应用场景
2.1、异步处理
下订单:下订单–》加积分–》发红包–》发手机短信
下订单—向MQ 发消息–》积分系统,红包系统,手机短信系统接收消息
同步是阻塞的(会造成等待),异步是非阻塞的(不会等待);
大流量高并发请求、批量数据传递,就可以采用异步处理,提升系统吞吐量;
2.2、系统解耦
多个系统之间,不需要直接交互,通过消息进行业务流转;
2.3、流量削峰
高负载请求/任务的缓冲处理;
2.4、日志处理
主要是用kafka这个服务器来做;
日志处理是指将消息队列用于在日志处理中,比如Kafka解决大量日志传输的问题;
loger.info(…)
ELK 日志处理解决方案:
loger.error(…) -->logstash收集消息–> 发送消息的kafka --> elastic search (es) -->Kibana ELK日志处理平台