学习RabbitMQ(五)

1.消息中间件简介

消息中间件是在消息的传输过程中保存消息的容器。消息中间件在将消息从它的源中继到它的目标时充当中间人的作用。队列的主要目的是提供路由并保证消息的传递,如果发送消息时接受者不可用,消息队列会保留消息,知道可以成功传递它为止,当然,消息队列保持消息也是有期限的。

2.消息中间件特点

 - 采用异步处理模式

    消息发送者可以发送一个消息而无须等待响应。消息发送者将消息发送到一条虚拟的通道(主题或队列

上,消息接受者则订阅或是监听通道。

   - 应用程序和应用程序调用关系为松耦合关系

    发送者和接受者不必了解对方、只需要确认消息

    发送者和接受者不必同时在线

3.消息传递服务模型

4.消息队列的作用

解耦,异步,缓冲,收集,队列,存储

5.消息中间件的传递模型

 - 点对点模型(PTP)

    每个消息只用一个消费者

    发送者和接受者没有时间依赖

    接受者确认消息接受和处理成功

 - 发布-订阅模型(Pub/Sub)

 每个消息可以有多个订阅者

 客户端只有订阅后才能接收消息

 持久订阅和非持久订阅

6.发布-订阅模型特点

  - 发布者和订阅者有时间依赖:接受者和发布者只有建立订阅关系才能收到消息

  - 持久订阅:订阅关系建立后,消息就不会消失,不管订阅者是否都在线

  - 非持久订阅:订阅者为了接受消息,必须一直在线,当只有一个订阅时约等于点对点模式

 7. 互联网消息中间件应用场景

     1.网站用户注册,注册成功后会发送邮件确认或短信(异步)

        填写注册信息--用户注册服务--消息中间件--邮件服务|短信服务

     2.日志进行集中收集,用于计算PV,用户行为分析

        应用服务|应用服务|--消息中间件--pv分析服务|行为分析服务

     3.数据复制

        将数据从源头复制到多个目的地,一般是要求顺序或者保证因果序列

        用于跨机房数据传输、搜索、离线数据计算

        DB--DB Sync--Broker--Search|hadoop|DB

      4. 延迟消息发布和暂存

        把消息中间件当成可靠的消息暂存地

        定时进行消息投递,比如模拟用户秒杀访问,进行系统性能压测

     5.消息广播

        缓存数据同步更新

        往应用推送数据

8.消息中间件分类

  1.推消息模型(push):消息生产者将消息发送给消息传递服务,消息传递服务又将消息推给消费者--场景:交易,注册

  2.拉消息模型(pull):消费者请求消息服务接受消息,消息生产者从消息中间拉该消息--场景:行为分析,PV计算

 

9.metaq消息中间件(pull)

metaq是一款完全的队列模型消息中间件,服务器使用java语言编写,可在多种软硬件平台上部署。客户端支持java/c++编程语言。单台服务器可支持1万以上各消息队列,通过扩容服务器,队列数几乎可任意横向扩展。每个队列都是持久化,长度无限(取决于磁盘空间大小),并且可从队列任意位置开始消费

官网:http://metaq.taobao.org

10.metaq特点

    1.生产者、服务器和消费者都可分布式

    2.消息存储顺序读写

    3.性能极高,吞吐量大

    4.支持消息顺序

    5.客户端pull,随机读,批量拉数据

    6.数据迁移,扩容对用户透明

    7.消费状态保存在客户端

11.rabbitMQ

是一个在AMQP协议标准基础上完整的,采用Erlang实现的工业级的消息队列MQ服务器

12.rabbitMQ架构--运行原理

13.rabbitMQ重要术语

   1.sever(broker):接受客户端连接,实现AMQP消息队列路由功能的进程

   2.Virtual Host:其实是一个虚拟概念,类似于权限控制组,一个Virtual Host里面可以有若干个Exchange 和Quece,但是权限控制的最小粒度是Virtual Host

   3.Exchang:接受生产者发送的消息,并根据Binding规则江消息路由给服务器中的队列,Exchange Type 决定了Exchange路由消息的行为,例如:在Rabbitmq中,

        Exchange Type有direct ,fanout和topic三种,不用类型的exchange路由的行为是不一样的

   4.Message Queue:消息队列,用于存储还未被消费者消费的消息

   5.Message:由Header和Body组成,Header是由生产者添加的各种属性的集合,包括Message是否被持久化,由那个Message Queue接受,优先级是多少等,而Body是真正需要传输的APP数据

   6.Binding key:所谓绑定就是将一个特定的exchange 和一个特定的queue绑定起来,绑定关键字为bindinkey

14.rabbitMQ常用配置介绍

    一般情况下,rabbitMQ的默认配置就足够了,如果希望特殊配置的话,有2个途径

   1.环境变量的配置文件rabbitmq-env.conf

   2.配置信息的配置文件rabbitmq.config

注意,这2个文件默认是没有的,如果需要必须自己创建

   1.rabbitmq-env.conf这个文件的位置是确定和不能改变的,位于:/etc/rabbitmq目录下,这个目录需要自己创建

 
1
2
3
4
rabbitmq_node_ip_address:指定ip地址
rabbitmq_node_port:指定端口号,more5672
rabbitmq_config_file:配置文件的路径,注意配置文件后缀必须是.config
rabbitmq_log_base:日志文件路径

    2.rabbitmq.config这是一个标准的erlang配置文件,它必须符合erlang配置文件的标准。erlangtuple,结构为{key,value},key为atm类型,value为一个term,其中关键参数为:

 
1
2
3
1.tcp_listerners设置rabbimq的监听端口,默认为5672
2.disk_free_limit磁盘低水位线,鄀磁盘容量低于指定值则停止接收数据
3.vm_memory_high_watemark,设置内存低水位线,若低于该水位线,则开启流控机制,默认值是0.4,即内存总量的40% 

15.rabbitMQ安装

 
1
2
3
4
5
6
7
8
9
10
11
12
13
wget http: //mirrors .ustc.edu.cn /fedora/epel/6/x86_64/epel-release-6-8 .noarch.rpm
rpm -ivh epel-release-6-8.noarch.rpm
yum install rebbitmq-server -y
/usr/lib/rabbitmq/bin/rabbitmq-plugins list
/usr/lib/rabbitmq/bin/rabbitmq-plugins enable rabbitmq_management
/etc/init .d /rabbitmq-server start
 
rabbitmqctl add_vhost test      # 创建vhost
rabbitmqctl delete_vhost test   # 删除vhost
rabbitmqctl list_vhosts         # 遍历所有虚拟主机信息
rabbitmqctl add_user test test      # 添加用户及密码
rabbitmqctl set_permissions -p test test test ".*" ".*" ".*"    # 绑定权限,并且具备读写的权限
rabbitmqctl list_queues -p test # 显示所有队列

  

 

转载于:https://www.cnblogs.com/wuhg/p/10114427.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值