RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ服务器是用Erlang语言编写的,支持多种客户端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。而群集和故障转移是构建在开放电信平台框架上的。所有主要的编程语言均有与代理接口通讯的客户端库。
RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ服务器是用Erlang语言编写的,而群集和故障转移是构建在开放电信平台框架上的。所有主要的编程语言均有与代理接口通讯的客户端库。
消息中间件是一种由消息传送机制或消息队列模式组成的中间件技术,利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成。
同步变异步
可以使用线程池解决,缺点:需自己实现线程池,而且强耦合
多数情况下是使用消息队列来解决
低内聚高耦合
解耦——减少强依赖
流量削峰——秒杀系统
通过消息队列设置请求最大值,超过阀值的抛弃或者转到错误界面.
rabbitmq采用信道通信。不采用tcp直接通信
1、tcp的创建和销毁开销大,创建3次握手,销毁4四次分手
2、高峰时成千上万条的链接会造成资源的巨大浪费,而且操作系统没秒处理tcp的数量也是有数量限制的,必定造成性能瓶颈
3、一条线程一条信道,多条线程多条信道,公用一个tcp连接。一条tcp连接可以容纳无限条信道(只要硬盘足够大),不会造成性能瓶颈。
核心作用就是:解耦,提速,广播,削峰