rocketmq部署

rocketMQ基本概念

£可爱£侵袭症+ 提交于 2019-11-28 21:56:04
## RocketMQ 消息模型主要由 Producer、Broker、Consumer 三部分组成,其中Producer 负责生产消息,Consumer 负责消费消息,Broker 负责存储消息。  Broker 在实际部署过程中对应一台服务器,每个 Broker 可以存储多个Topic的消息,每个Topic的消息也可以分片存储于不同的 Broker。  Message Queue 用于存储消息的物理地址,每个Topic中的消息地址存储于多个 Message Queue 中。ConsumerGroup 由多个Consumer 实例构成。 ## 消息生产者(Producer)   负责生产消息,一般由业务系统负责生产消息。一个消息生产者会把业务应用系统里产生的消息发送到broker服务器。RocketMQ提供多种发送方式,同步发送、异步发送、顺序发送、单向发送。同步和异步方式均需要Broker返回确认信息,单向发送不需要。 ## 消息消费者(Consumer)   负责消费消息,一般是后台系统负责异步消费。一个消息消费者会从Broker服务器拉取消息、并将其提供给应用程序。从用户应用的角度而言提供了两种消费形式:拉取式消费、推动式消费。 ## 代理服务器(Broker Server)   消息中转角色,负责存储消息、转发消息

RocketMQ集群部署方式总结

我只是一个虾纸丫 提交于 2019-11-28 15:28:33
1、RocketMQ网络部署图 1.1 RocketMQ网络部署特点: NameServer是一个几乎无状态节点,可集群部署,节点之间无任何信息同步。相对来说,nameserver的稳定性非常高。原因有二: 1)nameserver互相独立,彼此没有通信关系,单台nameserver挂掉,不影响其他nameserver,即使全部挂掉,也不影响业务系统使用。无状态 2)nameserver不会有频繁的读写,所以性能开销非常小,稳定性很高。 Broker部署相对复杂,Broker四种集群方式 Broker分为Master与Slave(Slave不可写,但可读,类似于MySQL的主备方式),一个Master可以对应多个Slave,但是一个Slave只能对应一个Master,Master与Slave的对应关系通过指定相同的BrokerName,不同的BrokerId来定义,BrokerId为0表示Master,非0表示Slave。Master也可以部署多个。每个Broker与NameServer集群中的所有节点建立长连接,定时注册Topic信息到所有 NameServer。 1)单个master:这是一种风险比较大的集群方式,因为一旦Borker重启或宕机期间,将会导致这个服务不可用,因此是不建议线上环境去使用的。 2)多个master: 一个集群全部都是Master,没有Slave。  

RocketMQ各组件介绍

三世轮回 提交于 2019-11-28 05:47:16
Rocket 架构主要分为4部分: Producer 消息发布者,支持分布式集群部署。Produer 通过 MQ 负载均衡模块选择相应 Broker 中的 queue 进行消息投递,投递过程支持快速失败并且低延迟 Consumer 消息消费的角色,支持分布式集群方式部署。支持以push推,pull拉两种模式对消息进行消费。同时也支持集群方式和广播方式的消费,它提供实时消息订阅机制,可以满足大多数用户的需求 Nameserver NameServer:NameServer是一个非常简单的Topic路由注册中心,其角色类似Dubbo中的zookeeper,支持Broker的动态注册与发现。主要包括两个功能:Broker管理,NameServer接受Broker集群的注册信息并且保存下来作为路由信息的基本数据。然后提供心跳检测机制,检查Broker是否还存活;路由信息管理,每个NameServer将保存关于Broker集群的整个路由信息和用于客户端查询的队列信息。然后Producer和Conumser通过NameServer就可以知道整个Broker集群的路由信息,从而进行消息的投递和消费。NameServer通常也是集群的方式部署,各实例间相互不进行信息通讯。Broker是向每一台NameServer注册自己的路由信息,所以每一个NameServer实例上面都保存一份完整的路由信息

深入理解阿里分布式消息中间件之消息队列

主宰稳场 提交于 2019-11-27 14:01:21
1、为什么要使用消息队列? 分析:一个用消息队列的人,不知道为啥用,有点尴尬。没有复习这点,很容易被问蒙,然后就开始胡扯了。 回答:这个问题,咱只答三个最主要的应用场景(不可否认还有其他的,但是只答三个主要的),即以下六个字:解耦、异步、削峰 (1)解耦 传统模式: 传统模式的缺点: 系统间耦合性太强,如上图所示,系统A在代码中直接调用系统B和系统C的代码,如果将来D系统接入,系统A还需要修改代码,过于麻烦! 中间件模式: 中间件模式的的优点: 将消息写入消息队列,需要消息的系统自己从消息队列中订阅,从而系统A不需要做任何修改。 (2)异步 传统模式: 传统模式的缺点: 一些非必要的业务逻辑以同步的方式运行,太耗费时间。 中间件模式: 中间件模式的的优点: 将消息写入消息队列,非必要的业务逻辑以异步的方式运行,加快响应速度 (3)削峰 传统模式 传统模式的缺点: 并发量大的时候,所有的请求直接怼到数据库,造成数据库连接异常 中间件模式: 中间件模式的的优点: 系统A慢慢的按照数据库能处理的并发量,从消息队列中慢慢拉取消息。在生产中,这个短暂的高峰期积压是允许的。 2、使用了消息队列会有什么缺点? 分析:一个使用了MQ的项目,如果连这个问题都没有考虑过,就把MQ引进去了,那就给自己的项目带来了风险。 我们引入一个技术,要对这个技术的弊端有充分的认识,才能做好预防。要记住

消息队列及常见消息队列介绍

孤者浪人 提交于 2019-11-27 02:50:48
消息队列及常见消息队列介绍 一、消息队列(MQ)概述 消息队列(Message Queue),是分布式系统中重要的组件,其通用的使用场景可以简单地描述为: 当不需要立即获得结果,但是并发量又需要进行控制的时候,差不多就是需要使用消息队列的时候。 消息队列主要解决了应用耦合、异步处理、流量削锋等问题。 当前使用较多的消息队列有RabbitMQ、RocketMQ、ActiveMQ、Kafka、ZeroMQ、MetaMq等,而部分数据库如Redis、Mysql以及phxsql也可实现消息队列的功能。 二、消息队列使用场景 消息队列在实际应用中包括如下四个场景: 应用耦合:多应用间通过消息队列对同一消息进行处理,避免调用接口失败导致整个过程失败; 异步处理:多应用对消息队列中同一消息进行处理,应用间并发处理消息,相比串行处理,减少处理时间; 限流削峰:广泛应用于秒杀或抢购活动中,避免流量过大导致应用系统挂掉的情况; 消息驱动的系统:系统分为消息队列、消息生产者、消息消费者,生产者负责产生消息,消费者(可能有多个)负责对消息进行处理; 下面详细介绍上述四个场景以及消息队列如何在上述四个场景中使用: 2.1 异步处理 具体场景:用户为了使用某个应用,进行注册,系统需要发送注册邮件并验证短信。对这两个操作的处理方式有两种:串行及并行。 (1)串行方式:新注册信息生成后,先发送注册邮件

消息队列及常见消息队列介绍

纵饮孤独 提交于 2019-11-27 02:50:19
一、消息队列(MQ)概述 消息队列(Message Queue),是分布式系统中重要的组件,其通用的使用场景可以简单地描述为: 当不需要立即获得结果,但是并发量又需要进行控制的时候,差不多就是需要使用消息队列的时候。 消息队列主要解决了应用耦合、异步处理、流量削锋等问题。 当前使用较多的消息队列有RabbitMQ、RocketMQ、ActiveMQ、Kafka、ZeroMQ、MetaMq等,而部分数据库如Redis、Mysql以及phxsql也可实现消息队列的功能。 二、消息队列使用场景 消息队列在实际应用中包括如下四个场景: 应用耦合:多应用间通过消息队列对同一消息进行处理,避免调用接口失败导致整个过程失败; 异步处理:多应用对消息队列中同一消息进行处理,应用间并发处理消息,相比串行处理,减少处理时间; 限流削峰:广泛应用于秒杀或抢购活动中,避免流量过大导致应用系统挂掉的情况; 消息驱动的系统:系统分为消息队列、消息生产者、消息消费者,生产者负责产生消息,消费者(可能有多个)负责对消息进行处理; 下面详细介绍上述四个场景以及消息队列如何在上述四个场景中使用: 2.1 异步处理 具体场景:用户为了使用某个应用,进行注册,系统需要发送注册邮件并验证短信。对这两个操作的处理方式有两种:串行及并行。 (1)串行方式:新注册信息生成后,先发送注册邮件,再发送验证短信; 在这种方式下

浅谈消息队列及常见的消息中间件

我怕爱的太早我们不能终老 提交于 2019-11-27 02:50:00
消息队列 已经逐渐成为企业应用系统 内部通信 的核心手段。它具有 低耦合 、 可靠投递 、 广播 、 流量控制 、 最终一致性 等一系列功能。 当前使用较多的 消息队列 有 RabbitMQ 、 RocketMQ 、 ActiveMQ 、 Kafka 、 ZeroMQ 、 MetaMQ 等,而部分 数据库 如 Redis 、 MySQL 以及 phxsql 也可实现消息队列的功能。 正文 1. 消息队列概述 消息队列 是指利用 高效可靠 的 消息传递机制 进行与平台无关的 数据交流 ,并基于 数据通信 来进行分布式系统的集成。 通过提供 消息传递 和 消息排队 模型,它可以在 分布式环境 下提供 应用解耦 、 弹性伸缩 、 冗余存储 、 流量削峰 、 异步通信 、 数据同步 等等功能,其作为 分布式系统架构 中的一个重要组件,有着举足轻重的地位。 2. 消息队列的特点 2.1. 采用异步处理模式 消息发送者 可以发送一个消息而无须等待响应。 消息发送者 将消息发送到一条 虚拟的通道 ( 主题 或 队列 )上, 消息接收者 则 订阅 或是 监听 该通道。一条信息可能最终转发给 一个或多个 消息接收者,这些接收者都无需对 消息发送者 做出 同步回应 。整个过程都是 异步的 。 2.2. 应用系统之间解耦合 主要体现在如下两点: 发送者和接受者不必了解对方、只需要 确认消息 ;

消息队列及常见消息队列介绍

怎甘沉沦 提交于 2019-11-27 02:49:39
一、消息队列(MQ)概述 消息队列(Message Queue),是分布式系统中重要的组件,其通用的使用场景可以简单地描述为: 当不需要立即获得结果,但是并发量又需要进行控制的时候,差不多就是需要使用消息队列的时候。 消息队列主要解决了应用耦合、异步处理、流量削锋等问题。 当前使用较多的消息队列有RabbitMQ、RocketMQ、ActiveMQ、Kafka、ZeroMQ、MetaMq等,而部分数据库如Redis、Mysql以及phxsql也可实现消息队列的功能。 二、消息队列使用场景 消息队列在实际应用中包括如下四个场景: 应用耦合:多应用间通过消息队列对同一消息进行处理,避免调用接口失败导致整个过程失败; 异步处理:多应用对消息队列中同一消息进行处理,应用间并发处理消息,相比串行处理,减少处理时间; 限流削峰:广泛应用于秒杀或抢购活动中,避免流量过大导致应用系统挂掉的情况; 消息驱动的系统:系统分为消息队列、消息生产者、消息消费者,生产者负责产生消息,消费者(可能有多个)负责对消息进行处理; 下面详细介绍上述四个场景以及消息队列如何在上述四个场景中使用: 2.1 异步处理 具体场景:用户为了使用某个应用,进行注册,系统需要发送注册邮件并验证短信。对这两个操作的处理方式有两种:串行及并行。 (1)串行方式:新注册信息生成后,先发送注册邮件,再发送验证短信; 在这种方式下

RocketMQ与Kafka对比

拈花ヽ惹草 提交于 2019-11-26 21:18:14
RocketMQ与Kafka对比(18项差异) 淘宝内部的交易系统使用了淘宝自主研发的Notify消息中间件,使用Mysql作为消息存储媒介,可完全水平扩容,为了进一步降低成本,我们认为 存储部分可以进一步优化,2011年初,Linkin开源了Kafka这个优秀的消息中间件,淘宝中间件团队在对Kafka做过充分Review之 后,Kafka无限消息堆积,高效的持久化速度吸引了我们,但是同时发现这个消息系统主要定位于日志传输,对于使用在淘宝交易、订单、充值等场景下还有诸 多特性不满足,为此我们重新用Java语言编写了RocketMQ,定位于非日志的可靠消息传输(日志场景也OK),目前RocketMQ在阿里集团被广 泛应用在订单,交易,充值,流计算,消息推送,日志流式处理,binglog分发等场景。 为了方便大家选型,整理一份RocketMQ与Kafka的对比文档,文中如有错误之处,欢迎来函指正。 vintage.wang@gmail.com 数据可靠性 RocketMQ支持异步实时刷盘,同步刷盘,同步Replication,异步Replication Kafka使用异步刷盘方式,异步Replication/同步Replication 总结:RocketMQ的同步刷盘在单机可靠性上比Kafka更高,不会因为操作系统Crash,导致数据丢失。

rocketmq集群部署(多master多slave异步)

戏子无情 提交于 2019-11-26 16:13:48
一、最近公司在做队列的技术选型,经过调研,决定使用rocketmq作为整个架构的队列层,我们之前的公司是用RabbitMQ,集群部署参考我之前的文章: RabbitMQ集群部署 ;rocketmq集群由NameServer和Broker两种角色组成,NameServer是无状态的可以横向部署多台达到消除单点的目的;Broker分多master、多master多slave同步、多master多slave异步这三种部署方案,一般生产环境都使用的是多master多slave异步这种方案,关于这三种方案的优缺点对比如下: 多Master模式(2m-noslave) : 一个集群无Slave,全是Master,例如2个Master或者3个Master 优点:配置简单,单个Master宕机或重启维护对应用无影响,在磁盘配置为RAID10时,即使机器宕机不可恢复情况下,由于RAID10磁盘非常可靠,消息也不会丢(异步刷盘丢失少量消息,同步刷盘一条不丢)。性能最高。 缺点:单台机器宕机期间,这台机器上未被消费的消息在机器恢复之前不可订阅,消息实时性会受到受到影响。 多Master多Slave模式,异步复制(2m-2s-async) : 每个Master配置一个Slave,有多对Master-Slave,HA采用异步复制方式,主备有短暂消息延迟,毫秒级。 优点:即使磁盘损坏,消息丢失的非常少