世界通讯!花飞花落花满天是谁写的_花落花飞花满天下句是什么
1、出自林黛玉的《葬花吟》。2、作品简介:3、《葬花吟》是清代文学家
RocketMQ 主从复制是 RocketMQ 高可用机制之一,数据可以从主节点复制到一个或多个从节点。
这篇文章,我们聊聊 RocketMQ 的主从复制,希望大家读完之后,能够理解主从复制的精髓。
图片
【资料图】
在 RocketMQ 的集群模式中,Broker 分为 Master 与 Slave,一个 Master 可以对应多个 Slave,但是一个 Slave 只能对应一个 Master。
每个 Broker 与 Name Server 集群中的所有节点建立长连接,定时注册 Topic 信息到所有 Name Server。
图片
Master 节点负责接收客户端的写入请求,并将消息持久化到磁盘上。而 Slave 节点则负责从 Master 节点复制消息数据,并保持与 Master 节点的同步。
1、同步复制图片
每个 Master 配置一个 Slave ,有多对 Master-Slave ,HA 采用同步双写方式,即只有主备都写成功,才向应用返回成功。
这种模式的优缺点如下:
优点:数据与服务都无单点故障,Master宕机情况下,消息无延迟,服务可用性与数据可用性都非常高;缺点:性能比异步复制模式略低(大约低10%左右),发送单个消息的 RT 会略高,且目前版本在主节点宕机后,备机不能自动切换为主机。2、异步复制图片
每个 Master 配置一个 Slave ,有多对 Master-Slave ,HA 采用异步复制方式,主备有短暂消息延迟(毫秒级),这种模式的优缺点如下:
优点:即使磁盘损坏,消息丢失的非常少,且消息实时性不会受影响,同时Master宕机后,消费者仍然可以从Slave消费,而且此过程对应用透明,不需要人工干预,性能同多 Master 模式几乎一样;缺点:Master 宕机,磁盘损坏情况下会丢失少量消息 。复制流程分为两个部分:元数据复制和消息数据复制。
主从服务器同步主题,消费者进度,延迟消费进度,消费者配置数据主从服务器同步消息数据二、元数据复制Slave Broker 定时任务每隔 10 秒会同步元数据,包括主题,消费进度,延迟消费进度,消费者配置。
图片
同步主题时, Slave Broker 向 Master Broker 发送 RPC 请求,返回数据后,首先加入本地缓存里,然后持久化到本地。
图片
三、消息数据复制下图是 Master 和 Slave 消息数据同步的流程图。
图片
1、Master 启动后监听指定端口;Master 启动后创建 AcceptSocketService 服务 , 用来创建客户端到服务端的 TCP 链接。
图片
RocketMQ 抽象了链接对象 HAConnection , HAConnection 会启动两个线程,分别用于读服务和写服务:
读服务:处理 Slave 发送的请求写服务:用于向 Slave 传输数据图片
2、Slave 启动后,尝试连接 Master ,建立 TCP 连接;
HAClient 是客户端 Slave 的核心类 ,负责和 Master 创建连接和数据交互。
图片
客户端在启动后,首先尝试连接 Master , 查询当前消息存储中最大的物理偏移量 ,并存储在变量 currentReportedOffset 里。
3、Slave 向 Master 汇报拉取消息偏移量;图片
上报进度的数据格式是一个 Long 类型的 Offset , 8个字节 , 非常简洁 。
图片
发送到 Socket 缓冲区后 , 修改最后一次的写时间 lastWriteTimestamp 。
4、Master 解析请求偏移量,从消息文件中检索该偏移量后的所有消息;当 Slave 上报数据到 Master 时,触发 SelectionKey.OP_READ 事件,Master 将请求交由 ReadSocketService 服务处理:
图片
当 Slave Broker 传递了自身 commitlog 的 maxPhyOffset 时,Master 会马上中断selector.select(1000),执行processReadEvent方法。
图片
processReadEvent 方法的核心逻辑是设置 Slave 的当前进度 offset ,然后通知复制线程当前的复制进度。
写服务 WriteSocketService 从消息文件中检索该偏移量后的所有消息(传输批次数据大小限制),并将消息数据发送给 Slave。
图片
5、Slave 接收到数据,将消息数据 append 到消息文件 commitlog 里 。图片
首先 HAClient 类中调用 dispatchReadRequest 方法 , 解析出消息数据 ;
图片
然后将消息数据 append 到本地的消息存储。
图片
四、 同步的实现从数据复制流程图,我们发觉数据复制本身就是一个异步执行的,但是同步是如何实现的呢?
Master Broker 接收到写入消息的请求后 ,调用 Commitlog 的 aysncPutMessage 方法写入消息。
图片
这段代码中,当 commitLog 执行完 appendMessage 后, 需要执行刷盘任务和同步复制两个任务。
但这两个任务并不是同步执行,而是异步的方式,使用了 CompletableFuture 这个异步神器。
当 HAConnection 读服务接收到 Slave 的进度反馈,发现消息数据复制成功,则唤醒 future 。
图片
最后 Broker 组装响应命令 ,并将响应命令返回给客户端。
五、总结RocketMQ 主从复制的实现思路非常简洁,Slave 启动一个线程,不断从 Master 拉取 Commit Log 中的数据,然后在异步 build 出 Consume Queue 数据结构。
核心要点如下:
1、主从复制包含元数据复制和消息数据复制两个部分;
2、元数据复制
Slave Broker 定时任务每隔 10 秒向 Master Broker 发送 RPC 请求,将元数据同步到缓存后,然后持久化到磁盘里;
3、消息数据复制
Master 启动监听指定端口Slave 启动 HaClient 服务,和 Master 创建 TCP 链接Slave 向 Master 上报存储进度Master 接收进度,消息文件中检索该偏移量后的所有消息,并传输给 SlaveSlave 接收到数据后,将消息数据 append 到本地的消息存储。4、同步的实现
当 commitLog 执行完 appendMessage 后, 需要执行刷盘任务和同步复制两个任务,这里用到了 CompletableFuture 这个异步神器。
当 HAConnection 读服务接收到 Slave 的进度反馈,发现消息数据复制成功,则唤醒 future 。最后 Broker 组装响应命令 ,并将响应命令 返回给客户端 。
关键词:
1、出自林黛玉的《葬花吟》。2、作品简介:3、《葬花吟》是清代文学家
高考分数出来后,网上出现了一些所谓“状元”放弃著名地方院校报考军校
新京报贝壳财经讯(记者朱玥怡)7月1日,贝壳财经记者获悉,协鑫集团旗
北京日报客户端|记者李洋7月2日一早,由小熊乐团带来的一曲《北京钟鼓
(一)不涉及财产关系的:2000元-30000元 件。上下浮动幅度:20%但收费额
vivo手机定位网站是https: yun vivo com cn方法如下:1、使用电脑或
暑期将至,部分短视频平台上出现了一系列“暑假最可怕”视频引发热议。
1、《朗文多功能分类词典》把英语词汇分类编排和详细解释,是英语写作
1、时空猎人神罚者技能搭配2、游戏亮点3、1、超强打击感4、2、职业个性
1、亚洲妈妈作为深受亚洲准妈咪喜爱的品牌之一,由日本资深孕妇内衣设
本报讯(庆阳融媒记者南力)为着力破解停车难、停车乱问题,近日,西峰
雅虎记者:八村塁去年就希望从奇才获得1500万平均年薪的合同,奇才,湖人
2023年瓷砖板块龙头股票有哪些?(7月1日),瓷砖板块龙头股票有哪些?
1、无为在歧路,儿女共沾巾。2、[译文]无需在岔路口分手时,像小儿女那
避暑?得是这样的吧:•凉快风和日丽少雨,深呼吸,空气好清新;• 短
Copyright 2015-2022 起点双创网 版权所有 备案号:皖ICP备2022009963号-12 联系邮箱: 39 60 29 14 2@qq.com
英飞拓(002528.SZ)近日走出大涨大跌的过山车行情 今日一字板跌停
英飞拓(002528 SZ)近日走出大涨大跌的过山车行情,此前走出3连涨停创下阶段新高,今日一字板跌停,录得连续2日跌停,大幅回吐此前涨幅,现
京基智农(000048.SZ)再度跌超6% 总市值失守百亿元大关
昨日跌停的京基智农(000048 SZ)再度跌超6%,盘中低见16 5元创5个月新低,总市值失守百亿元大关。公司控股股东京基集团7月4日通过大宗交易方
随着全光网络越织越密 如何进一步增强消费者和产业界的“获得感”?
近年来,在5G和宽带双千兆牵引下,新项目、新试点、新应用层出不穷。随着全光网络越织越密,如何进一步增强消费者和产业界的获得感?湖北日