首页 > 代码库 > 消息中间件

消息中间件

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重要术语

 技术分享

14.rabbitMQ常用配置介绍

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

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

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

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

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

rabbitmq_node_ip_address:指定ip地址rabbitmq_node_port:指定端口号,more5672rabbitmq_config_file:配置文件的路径,注意配置文件后缀必须是.configrabbitmq_log_base:日志文件路径

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

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

15.rabbitMQ安装

wget http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpmrpm -ivh epel-release-6-8.noarch.rpmyum 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 startrabbitmqctl add_vhost test      # 创建vhostrabbitmqctl delete_vhost test   # 删除vhostrabbitmqctl list_vhosts         # 遍历所有虚拟主机信息rabbitmq ad_user test test      # 添加用户及密码rabbitmqctl set_permissions -p v_host test test ".*" ".*" "".*    # 绑定权限,并且具备读写的权限rabbitmqctl list_queues -p test # 显示所有队列

  

 

消息中间件