RocketMQ 三、工作原理笔记
第三章 RocketMQ工作原理一、消息的生产1.消息的生产过程Producer可以将消息写入到某Broker的某Queue中,过程如下
Producer发送消息之前,会先向NameServer发出请求来获取消息Topic的路由信息
NameServer返回该Topic的路由表及Broker列表
Producer根据代码中指定的Queue选择策略,从Queue列表中选出一个队列,用于后续存储消息
Producer对消息做一些特殊处理,例如,消息本身超过4M,则会对其进行压缩
Producer向选择出的Queue所在的Broker发出RPC请求,将消息发送到选择出的Queue
路由表:实际上是一个Map,key为Topic名称,value是一个QueueData的实例列表(所有涉及该Topic的BrokerName列表)
Broker列表:其实际上也是一个Map,key为brokerName,value为BrokerData; 一套BrokerName相同的Master-Slave小集群对应一个BrokerData; BrokerData中包含brokerName及一个m ...
MIT 6046 L1 学习笔记
MIT6.046算法设计 L1 学习笔记区间调度算法 Interval Scheduling / 贪心算法区间调度算法属于贪心算法;贪心算法是动态规划DP算法的一个特例,其需要满足更多的条件(整体的最优解可以通过一系列的局部最优解得到),相对的,贪心的效率比DP高
一、概念经典的贪心算法问题 Interval Scheduling(区间调度问题)。 给很多形如 [start, end] 的闭区间,算出这些区间中最多有几个互不相交的区间。
本质是求这些时间区间的最大不相交子集。
二、贪心解法1.从区间集合R中选择一个区间x,其是在R内结束时间最早的区间
2.从R中删除所有与x相交的区间
3.ans_count++,将x从R中剔除,重复1,2;直到R为空
12345678910111213141516171819202122public int intervalSchedule(int[][] intvs) { if (intvs.length == 0) return 0; // 按 end 升序排序 Arrays.sort(intvs, new Compar ...
recketmq配置dashboard连接问题的解决
在配置虚拟机内的rocketmq连接到win10下的dashboard时报错:
java.lang.RuntimeException: org.apache.rocketmq.remoting.exception.RemotingConnectException: connect to <null> failed
尝试一天修改各种配置无果,翌日重新尝试,仔细阅读日志,发现rocketmq RemotingConnectException: connect to [ip:9876] failed
解决方案关闭虚拟机centos的防火墙
1.查询防火墙状态
systemctl status firewalld
2.关闭防火墙
12systemctl stop firewalld #关闭防火墙systemctl disable firewalld #关闭防火墙开机自启
RocketMQ 一二、集群搭建理论与RAID常识
第2章 RocketMQ的安装与启动三、系统安装与启动与console图形化控制台的安装与启动省略实操步骤
在linux下配置好了broker和NameServer,就是连不上console,试了十来个小时就是连不上,暂时先跳过
四、集群搭建理论
数据复制与刷盘策略
复制策略复制策略是Broker的Master与Slave间的数据同步方式,分为同步复制和异步复制
同步复制: 消息写入master后,master会等待slave同步数据成功后才向producer返回成功ACK
异步复制: 消息写入master后,master立即向producer返回成功ACK,无需等待slave同步数据成功
刷盘策略刷盘策略指的是broker中消息的落盘方式,即消息发送到broker内存后消息持久化到磁盘的方式。分为同步刷盘与异步刷盘:
同步刷盘:当消息持久化到broker的磁盘后才算是消息写入成功。
异步刷盘:当消息写入到broker的内存后即表示消息写入成功,无需等待消息持久化到磁盘。
1)异步刷盘策略会降低系统的写入延迟,RT减小,提高了系统的吞吐量
2)消息写入到Broker的内存 ...
RocketMQ 一、概述与基本概念
第一章 RocketMQ概述一 、MQ概述MQ简介Message Queue消息队列,是一种提供消息队列服务的中间件,也称为消息中间件,是一套提供了信息生产,储存,消费全过程的API软甲系统
MQ用途1.流量削峰MQ可以将系统的超量请求暂存其中,以便后期系统可以慢慢处理,从而避免了请求的丢失或者系统宕机
2.异步解耦上游系统对下游系统的调用若为同步调用,则会大大降低系统的吞吐量与并发度,且系统耦合度太高;异步调用可以通过在上下游间添加一个MQ层来解决这些问题
3.数据收集分布式系统会产生海量数据流,如:业务日志,监控数据,用户行为等;针对这些数据流进行实时或批量采集汇总,然后对这些数据流进行大数据分析,是当前互联网平台的必备技术,通过MQ完成此类数据收集是最好的选择
第二章 RocketMQ的安装与启动一、基本概念1.消息 Message消息是消息系统所传输信息的物理载体,生产和消费数据的最小单位,每条消息必须属于一个主题
2.主题 TopicTopic表示一类消息的集合,每个主题包含若干条消息,每条消息只能属于一个主题,是RocketMQ进行消息订阅的基本单位。
一个生产者可以同时发 ...
Redis高级入门篇
Redis入门高级入门篇单点Redis的问题
数据丢失问题 —-Redis数据持久化
并发能力问题 —-主从集群,读写分离
故障恢复问题 —-Redis哨兵,健康监测/自动恢复
存储能力问题 —-搭建分片集群,利用插槽机制动态扩容
持久化1.RDB(Redis快照)RDB把内存中的所有数据都记录到磁盘中
执行时机RDB持久化在四种情况下会执行:
执行save命令
执行bgsave命令
Redis停机时
触发RDB条件时
1)save命令
save命令会导致主进程执行RDB,这个过程中其它所有命令都会被阻塞。只有在数据迁移时可能用到。
2)bgsave命令
这个命令执行后会开启独立进程完成RDB,主进程可以持续处理用户请求,不受影响。
其开始时会fork主进程得到子进程,子进程共享主进程内的内存数据,完成fork后读取内存数据并写入RDB文件
fork采用的是copy-on-write技术
当主进程执行读操作时,访问共享内存
当主进程执行写操作时,则会拷贝一份数据再执行写操作
3)停机时
Redis停机时会自动执行一次save命令,实现RDB持久化。
4)触发RDB条件 ...