rocketmq

2019年8月笔记

南楼画角 提交于 2019-11-29 04:52:11
深入分析SpringBoot源码如何内嵌Tomcat容器? https://mp.weixin.qq.com/s/JueJkwjaBWQx63G2dOGTrA 1.Redis缓存穿透,缓存击穿,缓存雪崩原因+解决方案 https://www.cnblogs.com/midoujava/p/11277096.html 2.使用Redis创建分布式锁 https://mp.weixin.qq.com/s/udqV8X5pEMqaTYG1wFqSDQ 3.分布式之Redis的三大衍生数据结构 https://juejin.im/post/5d47eb4f6fb9a06ade10f6a1 4.有关 Redis 缓存的一些应用场景及踩过的坑 https://symonlin.github.io/2019/07/29/redis-1/ 基于redis的分布式锁实现 http://blueskykong.com/2018/01/06/redislock/ https://wudashan.cn/2017/10/23/Redis-Distributed-Lock-Implement/ 一文读懂RocketMQ消息存储原理 https://mp.weixin.qq.com/s/Dc4divfU__DM9FLZ_T6_dg Spring Boot Tomcat配置 https://www

Centos7安装RocketMQ4.4

拈花ヽ惹草 提交于 2019-11-29 03:21:57
网上的教程坑贼鸡儿多 一、安装maven RocketMQ依赖maven打包,所以先要在虚拟机中安装maven,我使用的是v3.3.9。 1:进入指定目录下载maven 包 1 cd /usr/local 2 3 wget http://mirrors.hust.edu.cn/apache/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz 2:解压并重新命名文件夹 1 tar -zxvf apache-maven-3.3.9-bin.tar.gz 2 3 mv apache-maven-3.3.9 /usr/local/maven3 3:修改仓库地址为阿里云,不修改下载依赖的时候总报超时 1 cd /usr/local/maven3/conf 2 3 vim settings.xml 在中间偏下的位置添加<mirror>标签(默认是注释的) 1 <mirror> 2 <id>alimaven</id> 3 <name>aliyun maven</name> 4 <url>http://maven.aliyun.com/nexus/content/groups/public/</url> 5 <mirrorOf>central</mirrorOf> 6 </mirror> 4:配置环境变量 1 vim /etc

(转)RocketMQ工作原理

廉价感情. 提交于 2019-11-28 22:10:23
原文: https://blog.csdn.net/lyly4413/article/details/80838716 1.消息中间件的发展: 第一代以ActiveMQ为代表,遵循JMS(java消息服务)规范 第二代以RabbitMQ为代表是一个有Erlang语言开发的AMQP(高级消息队列协议)的开源实现 第三代以kafka为代表,是一代高吞吐、高可用的消息中间件,以及RocketMQ RocketMQ的特点: 1.RocketMQ 是一款分布式、队列模型的消息中间件,具有以下特点: 2.能够保证严格的消息顺序 3.提供丰富的消息拉取模式 4.高效的订阅者水平扩展能力 5.实时的消息订阅机制 6.亿级消息堆积能力 7.分布式高可用的部署架构,满足至少一次消息传递语义 8.提供 docker 镜像用于隔离测试和云集群部署 9.提供配置、指标和监控等功能丰富的 Dashboard 选用理由: a.强调集群无单点,可扩展,任意一点高可用,水平可扩展。 b.海量消息堆积能力,消息堆积后,写入低延迟。 c.支持上万个队列 d.消息失败重试机制 e.消息可查询 f.开源社区活跃 g.成熟度(经过双十一考验) RocketMQ物理部署结构: rocketMQ几个概念: producer:消息生产者,生产者的作用就是将消息发送到 MQ,生产者本身既可以产生消息,如读取文本信息等

Kafka、RabbitMQ、RocketMQ消息中间件的对比—— 消息发送性能

本秂侑毒 提交于 2019-11-28 22:09:02
中间件小哥 浏览 228 2016-04-08 11:21:09 摘要 引言 分布式系统中,我们广泛运用消息中间件进行系统间的数据交换,便于异步解耦。现在开源的消息中间件有很多,前段时间我们自家的产品 RocketMQ (MetaQ的内核) 也顺利开源,得到大家的关注。 那么,消息中间件性能究竟哪家强? 带着这个疑问,我们中间件测试组对常见的三类消息产品(Kafka、... 引言 分布式系统中,我们广泛运用消息中间件进行系统间的数据交换,便于异步解耦。现在开源的消息中间件有很多,前段时间我们自家的产品 RocketMQ (MetaQ的内核) 也顺利开源,得到大家的关注。 那么,消息中间件性能究竟哪家强? 带着这个疑问,我们中间件测试组对常见的三类消息产品(Kafka、RabbitMQ、RocketMQ)做了性能比较。 Kafka是LinkedIn开源的分布式发布-订阅消息系统,目前归属于Apache定级项目。Kafka主要特点是基于Pull的模式来处理消息消费,追求高吞吐量,一开始的目的就是用于日志收集和传输。0.8版本开始支持复制,不支持事务,对消息的重复、丢失、错误没有严格要求,适合产生大量数据的互联网服务的数据收集业务。 RabbitMQ是使用Erlang语言开发的开源消息队列系统,基于AMQP协议来实现。AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)

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 18:06:36
https://blog.csdn.net/fenglibing/article/details/92378090 原文路径 搜索RocketMQ的镜像,可以通过docker的hub.docker.com上进行搜索,也可以在Linux下通过docker的search命令进行搜索,不过最近防火墙升级后,导致国外的网站打开都很慢,通过命令搜索反而会更加方便,操作Docker命令一定要是root用户或者具有root权限的用户。查询操作如下: docker search rocketmq 可以得到如下的结果: 镜像倒是蛮多的,不过看来看去没有一个是官方发布的,我就随便选一个吧,如foxiswho/rocketmq,以下是一个查看当前镜像所有的版本shell命令: curl https://registry.hub.docker.com/v1/repositories/foxiswho/rocketmq/tags\ | tr -d '[\[\]" ]' | tr '}' '\n'\ | awk -F: -v image='foxiswho/rocketmq' '{if(NR!=NF && $3 != ""){printf("%s:%s\n",image,$3)}}' ———————————————— 下面的就是分步启动nameserver和broker。 启动NameServer:

如何调整MQ的吞吐量

夙愿已清 提交于 2019-11-28 18:04:46
1. kafka和RocketMQ一个cosumer可以消费多个分区/队列 (平摊) 比如有8个分区/队列,三个消费者机器,那么每个消费者消费的分区/队列的个数分别是 3、3、2: 2. 单机多线程消费: RocketMQ 设置某一个单例的consumer 对象的Pool Thread Num 来实现多线程消费,内部实现了一个ThreadPoolExcutors(setConsumeThreadMin、setConsumeThreadMax); kafka里面的consumer是线程不安全的,只能在一个thread里面pull,但是可以同时创建多个线程,每个线程里面实例化一个consumer实现多线程消费。无论是Kafka还是RocketMQ,他们同时消费的能力是受限于分区或者队列的数量。 但是单机多线程消费一定要控制好线程数量,避免数量设置的过多导致CPU负载过高,就失去了MQ的削峰填谷的作用. 3. 根据消费服务的机器配置、消费速度、容忍的消费延时 “反推”应该配置多少分区. 机器配置高,消费速度快 ,cpu总是闲着,那么就增加分区,然后增加kafka单机cosumer数量 机器配置差,消费速度慢,消费延时太高了,那么也增加分区,然后服务扩容几台机器 来源: https://my.oschina.net/u/4129361/blog/3098239

rocketmq配置文件详解

跟風遠走 提交于 2019-11-28 15:29:34
附加:如果有多个master,那么每个master配置的名字应该一样,要不然识别不了对方,不知道是一个集群内部的 所属集群名字:brokerClusterName=rocketmq-cluster broker名字,注意此处不同的配置文件填写的不一样(按配置文件文件名来匹配) brokerName=broker-a 0 表示Master, > 0 表示slave brokerId=0 此处许手动更改 (此处nameserver跟host配置相匹配,9876为默认rk服务默认端口)nameServer 地址,分号分割 附加:broker启动时会跟nameserver建一个长连接,broker通过长连接才会向nameserver发新建的topic主题,然后java的客户端才能跟nameserver端发起长连接,向nameserver索取topic,找到topic主题之后,判断其所属的broker,建立长连接进行通讯,这是一个至关重要的路由的概念,重点,也是区别于其它版本的一个重要特性 namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876 在发送消息时,自动创建服务器不存在的Topic,默认创建的队列数 defaultTopicQueueNums=4 是否允许Broker 自动创建Topic,建议线下开启,线上关闭

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 13:44:31
操作步骤 1.搭建rocketmq服务 2.生产者-微服务(发送-队列消息) 3.消费者-微服务(处理-队列消息) 1.搭建rocketmq服务 下载: https://www.apache.org/dyn/closer.cgi?path=rocketmq/4.5.1/rocketmq-all-4.5.1-bin-release.zip # 解压至: /usr/local/rocketmq-all-4.5.1-bin-release # 启动/关闭服务: rocketmq # 启动: /usr/local/rocketmq-all-4.5.1-bin-release/bin/mqnamesrv -c /usr/local/rocketmq-all-4.5.1-bin-release/conf/namesrv.properties -n "192.168.1.180:6500" & # 设置自定义端口: 6500 -n /usr/local/rocketmq-all-4.5.1-bin-release/conf/namesrv.properties # 文件内容是: listenPort=6600 # 关闭: /usr/local/rocketmq-all-4.5.1-bin-release/bin/mqshutdown namesrv mqbroker: # 启动: