![](https://img-blog.csdnimg.cn/de8e492bff51443c909dc6a3823fe81c.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
mq
文章平均质量分 87
目前主要对RocketMQ进行精讲,后续学习更深入kafka等消息队列也将放入这个栏目中
岁月玲珑
厚积薄发
展开
-
rabbitmq docker安装
1. 查看可以镜像https://hub.docker.com/docker search rabbitmq官网镜像2. 拉取镜像docker pull rabbitmq3. 查看镜像>docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEmysql latest 3218b38490ce 2原创 2022-02-22 22:27:51 · 856 阅读 · 0 评论 -
0. 【RocketMq安装】
1. 官方下载地址http://rocketmq.apache.org/dowloading/releases/使用最新的4.8的版本2. 环境要求Linux64位系统JDK1.8(64位)源码安装需要安装Maven 3.2.x3. 目录介绍bin:启动脚本,包括shell脚本和CMD脚本conf:实例配置文件 ,包括broker配置文件、logback配置文件等lib:依赖jar包,包括Netty、commons-lang、FastJSON等4. RocketMQ的windo原创 2021-11-23 02:23:00 · 1873 阅读 · 0 评论 -
1. RocketMq基础入门
RocketMq基础入门http://rocketmq.apache.org/dowloading/releases/docker 搭建rocketmq为什么要用消息中间件?应用解耦流量削峰数据分发通过消息队列可以让数据在多个系统更加之间进行流通。数据的产生方不需要关心谁来使用数据,只需要将数据发送到消息队列,数据使用方直接在消 息队列中直接获取数据即可接口调用的弊端,无论是新增系统,还是移除系统,代码改造工作量都很大使用 MQ 做数据分发好处,无论是新增系统,还是移除原创 2021-11-26 02:21:34 · 1074 阅读 · 0 评论 -
2. RocketMQ内部原理
RocketMQ内部原理Domain Model领域模型(Domain Model)是对领域内的概念类或现实世界中对象的可视化表示。又称概念模型、领域对象模型、分析对象模型。它专注于分析问题领域本身,发掘重要的业务领域概念,并建立业务领域概念之间的关系。MessageMessage 是 RocketMQ 消息引擎中的主体。messageId 是全局唯一的。MessageKey 是业务系统(生产者)生成的,所以如果要结合业务,可以使用MessageKey 作为业务系统的唯一索引另外 Message原创 2021-11-26 02:32:01 · 1220 阅读 · 0 评论 -
3. RocketMQ的高可用
RocketMQ 的高可用RocketMQ 中的高可用机制RocketMQ 分布式集群是通过 Master 和 Slave 的配合达到高可用性的。Master 和 Slave 的区别:在 Broker 的配置文件中,参数 brokerId 的值为 0 表明这个 Broker 是 Master,大于 0 表明这个 Broker 是 Slave,同时 brokerRole 参数也会说明这个 Broker 是 Master 还是 Slave。Master 角色的 Broker 支持读和写,Slave 角原创 2021-11-27 01:35:29 · 1298 阅读 · 0 评论 -
4. RocketMQ源码分析之Namesrv
RocketMQ 源码分析之Namesrv源码分析的内容点是比较多,当然我们不可能把 RocketMQ 所有的源码都读完,所以我们把核心、重点的源码进行解读。需要解读的源码如下:1、RocketMQ源码分析之整体架构2、RocketMQ源码分析之NameServer3、RocketMQ源码分析之Remoting4、RocketMQ源码分析之Producer5、RocketMQ源码分析之Store6、RocketMQ源码分析之Consumer7、RocketMQ源码分析之内存映射8、Roc原创 2021-11-29 01:06:44 · 337 阅读 · 0 评论 -
5. RocketMQ源码分析之Producer
RocketMQ源码分析之ProducerProducer启动流程DefaultMQProducer producer = new DefaultMQProducer("group");producer.start();// DefaultMQProducer.javapublic void start() throws MQClientException { this.setProducerGroup(withNamespace(this.producerGroup)); //t原创 2021-11-30 00:13:43 · 807 阅读 · 0 评论 -
6. RocketMQ源码分析之Store
RocketMQ源码分析之Store读Store源码前的思考当topic数量增多到100+时,kafka的单个broker的TPS降低了1个数量级,而RocketMQ在海量topic的场景下,依然保持较高的TPS?kafka如果是topic比较少tps会有上万的TPS,但是topic比较多就会下降到1~2千的TPS。但是 Rocket在topic比较多,就算上万个topic也能保持很高的TPSCommitLog的”随机读”对性能的影响?RocketMQ是基于文件存储,所有消息的本体都保存在原创 2021-11-30 01:22:38 · 1302 阅读 · 0 评论 -
7. 源码分析之堆外内存
源码分析之堆外内存 我们根据之前了解可以,一般情况下RocketMQ是通过MMAP内存映射,生产时消息写入内存映射文件,然后消费的时候再读。但是RocketMQ还提供了一种机制。我们来看下。 TransientStorePool,短暂的存储池(堆外内存)。RocketMQ单独创建一个ByteBuffer内存缓存池,用来临时存储数据,数据先写入该内存映射中,然后由commit线程定时将数据从该内存复制到与目标物理文件对应的内存映射中。 RocketMQ引入该机制主要的原因是提供一种内存锁定,将当前原创 2021-11-30 02:02:08 · 566 阅读 · 0 评论 -
8. 源码分析之ConsumeQueue
源码分析之ConsumeQueue消息发送时数据在ConsumeQueue的落地 连续发送5条消息,消息是不定长,首先所有信息先放入 Commitlog中,每一条消息放入Commitlog的时候都需要上锁,确保顺序的写入。当Commitlog写成功了之后。数据再同步到ConsunmeQueue中。 并且数据一条条分发,这个是一个典型的轮询。 Queue Offset 代表一个Queue中的第几条消息 Logic Offset就是Queue Offset*20 因为每一条Consum原创 2021-11-30 02:29:30 · 487 阅读 · 0 评论 -
9. 源码分析之消息消费
源码分析之消息消费Rebalance(针对集群消费模式)(1)消费Group下的所有消费者(2)Topic的所有Queue队列(3)Queue分配策略触发时机(1)消费者启动(2)消费者加入或者退出消费组(3)定时触发Rebalance(10s)举例 假设,一个topic中有4个队列,有一个Producer往4个队列中发数据,在集群消费中,在一个消费者分组中如果只有一个消费者。那么这个消费者肯定会消费4个队列,不然就会漏数据。 如果加入了一个Consumer2,这个时候就会触发一个原创 2021-11-30 21:59:01 · 1269 阅读 · 0 评论 -
10. RocketMQ其他功能和常见问题
RocketMQ 其他功能消息轨迹暂略配置Broker 端服务器开启配置:traceTopicEnable=truetraceTopicEnable=true RocketMQ 集群中每一个 Broker 节点均用于存储 Client 端收集并发送过来的消息轨迹数据。因此,对于 RocketMQ 集群中的 Broker 节点数量并无要求和限制。 对于消息轨迹数据量较大的场景,可以在 RocketMQ 集群中选择其中一个 Broker 节点专用于存储消息轨迹,使得用户普通的消息数据与消原创 2021-11-30 23:31:42 · 1498 阅读 · 2 评论 -
11. RocketMQ性能优化
RocketMQ 性能优化JVM 层面STW监控暂停 rocketmq-console(最新源码移动了位置,rocketmq-dashbroad, 下载链接0. RockerMq安装有) 这个是官方提供了一个 WEB 项目,可以查看 rocketmq 数据和执行一些操作。但是这个监控界面又没有权限控制,并且还有一些消耗性能的查询操作,如果要提高性能,建议这个可以暂停。 一般的公司在运维方面会有专门的监控组件,如 zabbix 会做统一处理。 或者是简单的 shell 命令 监控原创 2021-12-01 00:54:14 · 2052 阅读 · 0 评论 -
kafka 2.1.1 关闭命令包 -> No kafka server to stop
1.网上多数方案是修改PIDS=$(ps ax | grep -i 'kafka\.Kafka' | grep java | grep -v grep | awk '{print $1}')成:PIDS=$(jps -lm | grep -i 'kafka.Kafka' | awk '{print $1}')这个完全安装jdk机器上是可以的,但是有些生产机器没有jdk,只有jr...原创 2020-02-23 23:39:48 · 310 阅读 · 0 评论