消息队列

RabbitMQ入门

放肆的年华 提交于 2019-12-22 04:08:49
主要内容 1、RabbitMQ简介 2、RabbitMQ安装及使用 3、RabbitMQ快速入门 4、交换机 RabbitMQ简介 各大主流中间件对比 ActiveMQ 是 Apache 出品,最流行的,能力强劲的开源消息总线,并且它一 个完全支持 J M S 规范的消息中间件。 其丰富的 API 、多种集群构建模式使得他成为业界老牌消息中间件,在中 小型企业中应用广泛! MQ 衡量指标:服务性能、数据存储、集群架构 Kafka RocketMQ 是阿里开源的消息中间件,目前也已经孵化为Apache顶级项目, 它是纯java开发,具有高吞吐量、高可用性、适合大规模分布式系统 应用的特点。 RocketMQ思路起源于Kafka,它对消息的可靠传输及事务 性做了优化, 目前在阿里集团被广泛应用于交易、充值、流计算、消息推 送、日志流式处理、binglog分发等场景 RabbitMQ是使用Erlang语言开发的开源消息队列系统,基于AMQP协议 来实现。 AMQP的主要特征是面向消息、队列、路由(包括点对点和发布 /订阅)、可靠性、安全。AMQP协议更多用在企业系统内, 对数据_致 性、稳定性和可靠性要求很髙的场景,对性能和吞吐量的要求还在其次。 结论: activiMq老牌消息中间件,api全面,但是吞吐量不大 Kafaka吞吐量大,但是数据无法保证不丢失,主要面向大数据

RabbitMQ入门

爱⌒轻易说出口 提交于 2019-12-22 01:40:26
目标: 1、RabbitMQ简介 2、RabbitMQ安装及使用 3、RabbitMQ快速入门 RabbitMQ简介 各大主流中间件对比 ActiveMQ 是 Apache 出品,最流行的,能力强劲的开源消息总线,并且它一 个完全支持 J M S 规范的消息中间件。 其丰富的 API 、多种集群构建模式使得他成为业界老牌消息中间件,在中 小型企业中应用广泛! MQ 衡量指标:服务性能、数据存储、集群架构 Kafka RocketMQ是阿里开源的消息中间件,目前也已经孵化为Apache顶级项目, 它是纯java开发,具有高吞吐量、高可用性、适合大规模分布式系统 应用的特点。 RocketMQ思路起源于Kafka,它对消息的可靠传输及事务 性做了优化, 目前在阿里集团被广泛应用于交易、充值、流计算、消息推 送、日志流式处理、binglog分发等场景 RabbitMQ是使用Erlang语言开发的开源消息队列系统,基于AMQP协议 来实现。 AMQP的主要特征是面向消息、队列、路由(包括点对点和发布 /订阅)、可靠性、安全。AMQP协议更多用在企业系统内, 对数据_致 性、稳定性和可靠性要求很髙的场景,对性能和吞吐量的要求还在其次。 结论: activiMq老牌消息中间件,api全面,但是吞吐量不大 Kafaka吞吐量大,但是数据无法保证不丢失,主要面向大数据 rokectMQ:吞吐量大

消息队列与RabbitMQ

夙愿已清 提交于 2019-12-22 00:27:01
文章目录 一.消息队列 1.1 通过异步处理提高系统性能 1.2 降低系统耦合性 1.3 常用的几种消息队列及其比较 ActiveMQ RabbitMQ kafka 二.RabbitMQ 1.简单队列 2.工作队列 3.发布/订阅 4.路由 5.主题交换机 6.远程调用过程RPC 本文借鉴了 新手也能看懂,消息队列其实很简单 中有关消息队列的部分内容 一.消息队列 消息队列是一个存放消息的容器,当我们需要使用消息的时候可以取出消息供自己使用。分布式系统中经常要使用到消息队列,使用消息队列主要是为了达成两个目的,第一点是通过异步处理提高系统性能,消息队列有削峰、减少响应所需时间的功能;第二点是降低系统耦合性。 1.1 通过异步处理提高系统性能 如上图,在不使用消息队列服务器的时候,用户请求后一直要等到数据库写入完成后才能响应,因此用户必须要等待很长时间,服务器的负载也会因此飙升。 但是在使用消息队列之后,用户的请求数据发送给消息队列之后立刻返回响应,然后数据库再从消息队列中读取数据写入数据库,这样用户请求处理的过程就变成了一个异步的过程。由于消息队列服务器处理速度快于数据库(消息队列也比数据库有更好的伸缩性),因此响应速度得到大幅改善。 通过以上分析我们可以得出消息队列具有很好的削峰作用的功能——即通过异步处理,将短时间高并发产生的事务消息存储在消息队列中,从而削平高峰期的并发事务。

Kafka安装教程(详细过程)

狂风中的少年 提交于 2019-12-21 22:17:07
安装前期准备: 1,准备三个节点(根据自己需求决定) 2,三个节点上安装好zookeeper(也可以使用kafka自带的zookeeper) 3,关闭防火墙 chkconfig iptables off 一、下载安装包 Kafka官网下载安装包 http://kafka.apache.org/downloads.html 我们下载第二种(已经被编译过的),将安装包存在在 /software/ 下 二、解压安装包 我选择将kafka安装在 /usr/local/ 这个目录下。 tar -zxvf /software/ kafka_2.11-0.9.0.1.tar.gz –C /usr/local/ 三、修改配置文件 备注:以下的配置文件是我自己的配置文件,你自己配置的时候根据自己的需求进行配置,并且以下只是部分配置项,可以根据自己的需求添加符合自己需求的配置项。官网有详细的配置解释,以下是官网部分配置项截图。 其实整个安装kafka的过程很简单,主要就是修改配置文件。配置文件在 /usr/local/kafka_2.11-0.9.0.1/config 这里 cd /usr/local/kafka_2.11-0.9.0.1/config 1, 修改server.properties #broker的全局唯一编号,不能重复 broker.id=0 #用来监听链接的端口

RabbitMQ入门

北战南征 提交于 2019-12-21 11:43:17
RabbitMQ 简介 各大主流中间件对比 ActiveMQ 是 Apache 出品,最流行的,能力强劲的开源消息总线,并且它一 个完全支持 J M S 规范的消息中间件。 其丰富的 API 、多种集群构建模式使得他成为业界老牌消息中间件,在中 小型企业中应用广泛! MQ 衡量指标:服务性能、数据存储、集群架构 Kafka RocketMQ 是阿里开源的消息中间件,目前也已经孵化为 Apache 顶级项目, 它是纯 java 开发,具有高吞吐量、高可用性、适合大规模分布式系统 应用的特点。 RocketMQ 思路起源于 Kafka, 它对消息的可靠传输及事务 性做了优化, 目前在阿里集团被广泛应用于交易、充值、流计算、消息推 送、日志流式处理、 binglog 分发等场景 RabbitMQ 是使用 Erlang 语言开发的开源消息队列系统,基于 AMQP 协议 来实现。 AMQP 的主要特征是面向消息、队列、路由(包括点对点和发布 / 订阅)、可靠性、安全。 AMQP 协议更多用在企业系统内, 对数据 _ 致 性、稳定性和可靠性要求很髙的场景,对性能和吞吐量的要求还在其次。 初识 RabbitMQ RabbitMQ是—个开源的消息代理和队列服务器,用来通过普通协议 在完全不同的应用之间共享数据, RabbitMQ 是使用 Erlang 语言来编写 的,并且 RabbitMQ 是基于

RabbitMQ 延时消息队列

别说谁变了你拦得住时间么 提交于 2019-12-21 07:04:08
一、简述 二、示例demo 单个延迟队列 多个延迟队列 一 、简述 延时消息在日常随处可见: 1、订单创建10min之后不发起支付,自动取消。 2、30min定时推送一次邮件信息。 最常用到方式为定时任务轮训,数据量小的时候使用没什么问题 而当有千万甚至上亿的数据量时就会出现数据读取的瓶颈,此时全表扫面进行处理一定是下下策。但是也有比较讨巧的方式,分享公司内部订单拆分的例子: 由于线上每天订单量50万+的增长量,单表早已无法吃撑这个增长的速度。采取的方式为订单归档:线上热数据保留2-3天的数据,其余都归档进入历史订单表中,这样热数据在200万以内。订单超过10min不支付即取消的功能,可以采取简单的扫表形式而不会出现数据读取性能的问题。 这样的方式很简单,但需要跟业务进行沟通妥协,本文会讲另一种方式即RabbitMQ延迟队列。RabbitMQ实际并没有直接实现延时队列,但可利用RabbitMQ提供的属性来模拟延时队列,甚至已经有的配套的插件 rabbitmq_delayed_message_exchange 下面先介绍使用到的RabbitMQ的属性。 1、消息的Time To Live (TTL) x-message-ttl:消息过期时间,超过过期时间之后即变为死信(Dead-letter)不会再被消费者消费。 设置消息TTL有两种方式: 创建队列时指定x-message-ttl

RPC框架的理解-------转载

℡╲_俬逩灬. 提交于 2019-12-21 04:34:56
RPC(Remote Procedure Call):远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的思想。 RPC 是一种技术思想而非一种规范或协议,常见 RPC 技术和框架有: 应用级的服务框架:阿里的 Dubbo/Dubbox、Google gRPC、Spring Boot/Spring Cloud。 远程通信协议:RMI、Socket、SOAP(HTTP XML)、REST(HTTP JSON)。 通信框架:MINA 和 Netty。 目前流行的开源 RPC 框架还是比较多的,有阿里巴巴的 Dubbo、Facebook 的 Thrift、Google 的 gRPC、Twitter 的 Finagle 等。 下面重点介绍三种: gRPC:是 Google 公布的开源软件,基于最新的 HTTP 2.0 协议,并支持常见的众多编程语言。RPC 框架是基于 HTTP 协议实现的,底层使用到了 Netty 框架的支持。 Thrift:是 Facebook 的开源 RPC 框架,主要是一个跨语言的服务开发框架。 用户只要在其之上进行二次开发就行,应用对于底层的 RPC 通讯等都是透明的。不过这个对于用户来说需要学习特定领域语言这个特性,还是有一定成本的。 Dubbo:是阿里集团开源的一个极为出名的 RPC 框架,在很多互联网公司和企业应用中广泛使用

再谈消息队列技术

怎甘沉沦 提交于 2019-12-21 04:25:17
上周,我们举办了第二届技术沙龙,我这边主要演讲了消息队列技术的议题,现分享给大家: 在我们团队内部,随着消息应用中心(任务中心)的广泛应用,有时候我们感觉不到消息队列的存在,但这不影响消息队列在高可用、分布式、高并发架构下的核心地位。 消息队列都应用到了哪些实际的应用场景中? 一、再谈消息队列的应用场景 异步处理:例如短信通知、终端状态推送、App推送、用户注册等 数据同步:业务数据推送同步 重试补偿:记账失败重试 系统解耦:通讯上下行、终端异常监控、分布式事件中心 流量消峰:秒杀场景下的下单处理 发布订阅:HSF的服务状态变化通知、分布式事件中心 高并发缓冲:日志服务、监控上报 但是,我们对消息队列的底层技术和原理还是不了解,那么我们马上开始吧… 二、消息队列的一些基本概念和简单原理 1. Broker Broker的概念来自与Apache ActiveMQ,通俗的讲就是MQ的服务器。 2. 消息的生产者、消费者 消息生产者Producer:发送消息到消息队列。 消息消费者Consumer:从消息队列接收消息。 3. 点对点消息队列模型 消息生产者向一个特定的队列发送消息,消息消费者从该队列中接收消息; 消息的生产者和消费者可以不同时处于运行状态。 每一个成功处理的消息都由消息消费者签收确认(Acknowledge)。如图: 4. 发布订阅消息模型 -Topic

消息队列的理解

主宰稳场 提交于 2019-12-21 03:49:43
1.什么是消息队列:消息队列是消息在传输过程中储存消息的容器。消息队列管理器在将消息从它的源传递到目标时充当着中间人的角色。如果发送消息过程中,接受者不能够接收消息,那么消息队列会保留消息。 2.为什么需要消息队列:消息队列主要有三个作用:异步,削峰,解耦。 主要是为了解决高并发情况下,由于大量的请求一起发送,这时候同步执行的话,往往会阻塞程序,因此我们需要进行异步处理,缓解系统压力,也可以削峰。 另外,如果几个系统在处理业务的时候耦合性很大,那么只要其中一个系统出问题,其他系统也无法工作,消息队列还可以解耦和。 因此消息队列是大型分布式系统中必不可少的中间件,一般用到的消息队列有rabbitMQ,redis. 当然,消息队列也有缺点 系统可用性降低:比如如果用redis来作为中间人,如果redis挂了,那么整个系统就不能用了,解决方法可以考虑用集群。 系统复杂度增加:多增加了MQ队列,使得整个系统的复杂度提高。 一致性问题:操作多个系统的时候,可能会出现有一两个系统操作不成功过就返回数据,结果造成一致性问题。 3.rabbitmq跟redis来作消息队列的区别? 1.可靠性: redis:没有相应机制保证消息的消费,当消费者消费失败,消息丢失 rabbitmq:具有消息消费确认,如果消费者消费失败,会自动返回队列中 2.持久化: redis:将整个redis实例持久化在磁盘中

Springboot集成RabbitMQ的延时队列

不想你离开。 提交于 2019-12-21 02:57:04
Springboot集成RabbitMQ的延时队列 一、延时队列 二.下载并且安装erlang和RabbitMQ 三.代码实现 3.1.新增依赖 3.2.修改application.yml 3.3.配置队列 3.4 发送消息 3.5 消费消息 3.6 测试队列 3.7 测试结果 一、延时队列 延时队列的使用场景:1.未按时支付的订单,30分钟过期之后取消订单;2.给活跃度比较低的用户间隔N天之后推送消息,提高活跃度;3.过1分钟给新注册会员的用户,发送注册邮件等。 实现延时队列的方式有两种: 通过消息过期后进入死信交换器,再由交换器转发到延迟消费队列,实现延迟功能; 使用rabbitmq-delayed-message-exchange插件实现延迟功能; 注意: 延迟插件rabbitmq-delayed-message-exchange是在RabbitMQ 3.5.7及以上的版本才支持的,依赖Erlang/OPT 18.0及以上运行环境。 由于使用死信交换器相对曲折,本文重点介绍第二种方式,使用rabbitmq-delayed-message-exchange插件完成延迟队列的功能。 二.下载并且安装erlang和RabbitMQ 1.erlang下载地址 :http://www.erlang.org/downloads 2.RabbitMQ下载地址:http://www