火影推荐程序连载-11RabbitMQ系列随笔——介绍及安装

  • 时间:
  • 浏览:
  • 来源:互联网

一、RabbitMQ介绍

        RabbitMQ是由erlang开发的AMQP(Advanced Message Queuing Protocol)的开源实现。他是高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间性设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,消费者亦然。

        RabbitMQ支持多种客户端,如:.net、java、c、php等。支持ajax,在用于在分布式系统中存储转发消息能起到至关重要的作用 ,并且在易用性、扩展性、高可用性等方面也表现不俗。

二、RabbitMQ作用

       博主认为RabbitMQ在程序世界中主要起到以下3个至关重要的作用(不足之处望大神斧正)。

       1、解耦

             举个例子:假如你在网上买了一件商品(这个过程很复杂,我们这里只说部分操作),这时候系统需要通知库存该商品减1。那么这个时候系统可能会调用接口处理这个过程(过程本身没有任何问题),在这个过程中应用系统和库存之间存在了一个较为高的耦合,显然这种高耦合的操作对于一个订单系统来说是不可接受的,频繁的请求可能会导致系统效率极低甚至崩溃。这个时候MQ就能解决我们的问题,我们将订单消息发送给MQ服务队列中,库存系统只需要获取MQ服务队列中的订单信息进行处理,这个时候应用系统和库存之间并没有任何耦合关系。由于MQ异步处理机制可以提应用系统的效率,集群的使用可以解决订单并发问题。

       2、异步

            首先我们来看一张图(在官网获取)

            在下图中,“ P”是我们的生产者,“ C”是我们的消费者。中间的框是一个队列-RabbitMQ代表使用者保留的消息缓冲区。可以看到P把消息发送给hello这个缓冲区,C想多久处理就多久处理。

           

        3、削峰

            此削峰不是天龙八部里面的萧峰(^_^)。何为削峰,削峰你可以解读为“流量削峰”、“削峰限流”等。如何削峰

            举个例子:我们还是以订单系统为例。假如有一场秒杀活动(这个时候你的系统流量是少有的高峰期),原本你的系统1秒能处理10w条数据,但是在处于流量高峰的时候,系统数据远远不只10w条,这个时候可能造成服务器压力过大、数据处理出现问题等。MQ恰恰可以解决该问题,前面第2点异步也介绍到MQ有一个缓冲区,我们可以利用这个缓冲区做流量削峰处理。我们只需要在业务处理板块做好数据处理限流操作即可。那么有人又要问了如果秒杀人数超过商品人数怎么办。同理也可以使用MQ解决问题,在MQ中我们可以对商品设置一个峰值,只要超过这个峰值,就会提示商品已抢完等信息(这点类似抢红包)。如下图

三、RabbitMQ安装(客户端)

          具体安装过程博主在这里不在赘述,说几点注意事项。

  string e =www.qiaoheibpt.com "abc";
  
  //这里e还是使用字符串的留存性,且使用的还是a的地址。证明c分配的内存引用并没有放入常量池替换
  
  Assert.True(www.yachengyl.cn string.ReferenceEquals(a, e));
  
  Assert.False(www.feihongyul.cn string.ReferenceEquals(c, e));
  
  string f www.baihuayl7.cn= "abc" + "abc";
  
  string g www.jintianxuesha.com= a + b;
  
  string h =www.jujinyule.com "abcabc";
  
  //f在编译期间确定,实际还是从常量池中获取
  
  //IsInterned 表示从常量池中获取对应的字符串,获取失败返回null
  
  //a+b实际上是发生了字符串组合运算,内部重新new了一个新的字符串,所以f,g引用地址不同
  
  Assert.False(string.ReferenceEquals(www.xinxingyulep.cn, g));
  
  Assert.True(string.ReferenceEquals(www.baihua178.cn string.IsInterned(www.lecaixuangj.cn), h));
  
  Assert.True(string.ReferenceEquals(www.yixinpt2.cn f,www.pinguo2yl.com h));

          1、在安装RabbitMQ之前必须先安装Erlang,没错是要先安装Erlang仔细的朋友可能已经发现,在文章的开头我们已经说过RabbitMQ是由erlang开发,所以要先安装Erlang环境。下载地址和MQ一样。

          2、安装完Erlang之后安装MQ(无脑下一步就行)。

          3、安装完成之后一定要先激活并且重启。如图

                

          打开上图红框中的应用,依次执行rabbitmq-plugins enable rabbitmq_management、net stop RabbitMQ && net start RabbitMQ命令。

          4、MQ默认端口15672、默认用户密码均为guest。

          5、如果要建立新的用户,最好设置为Admin权限。

          安装成功之后使用http://localhost:15672打开MQ客户端,出现下图证明客户端安装成功

                 

          看到这里是不是有一种对MQ豁然开朗的感觉。

下一篇:RabbitMQ系列随笔——.NET MQ实战练习。

本文链接http://element-ui.cn/article/show-118152.aspx