Hbase异步复制和同步复制解析
背景
Hbase是一个KV数据库,自然和Mysql以及Redis等会涉及到复制的问题,也有主从集群的概念,那么本文就来看下Hbase的复制逻辑
Hbase复制实现
首先我们先在回顾下,在Hbase实现中,每个RegionServer上面会包含多个Region,操作日志Hlog文件是RegionServer级别的,也就是这个RegionServer上的所有Region共享的,我们后面会看到Hbase这种操作日志没有设置成Region级别带来的复制的复杂度实现
异步复制
我们一开始理解的Hbase异步复制就是类似Mysql等一样,就是异步把二进制操作日志发送到从节点就可以了。
就是图中上半部分所示的一样,但是事实上,Hbase中实现异步复制比图中上半部分所示的要复杂的多,为什么呢?
因为其中涉及到Region可以在不同的RegionServer中进行迁移,当Region从RegionServer0迁移到RegionServer1时,之前Hlog0上面的操作日志和迁移后Hlog1上面的操作日志会同时发送给从节点,此时有好几个RegionServer会同时发送日志给从节点,这里就导致了消息的顺序错乱的问题,由于消息的顺序错乱包含insert和del之间的顺序错乱,从而也会导致数据的一致性问题.
那么Hbase这里是如何解决这个问题的呢?答案是Hbase会为每个Region在zookeeper中保存一个当前Region已经推送到的Position的值,假设记作:lastSequenceId,这个是Region级别的,不同RegionServer在判断是否发送这个Region的Hlog给从节点的时候就首先需要判断:这台RegionSever上的Hlog的这个Region的偏移Position是否大于lastSequenceId,如果是就发送,如果不是,就休眠循环等待即可,这样每个时刻只会有一个RegionServer把Hlog信息发送给从节点,自然从节点就不会有顺序问题了.
不过这里还需要解决另一个问题:Region在从RegionServer0迁移到RegionServer1之后,他在RegionServer1的Hlog中的偏移positon要比他在RegionServer1的Hlog中的位置要大,所以Hbase在Region发生迁移的时候会生成一个Barrier的东西,目的就是这个,可以参考上图中的下半部分
其实从上面可以看出如果我们保持操作日志时是按照Region级别生成日志文件的话,Region迁移导致的这些问题就可以迎刃而解,这样Hbase的异步复制就和Mysql等异步复制一不一样了,仅仅从复制的角度考虑的话,这样实现是更好的一种方案
异步复制最大的问题就是主从没法完全保持数据的一致性,当主节点宕机时,从节点的数据一般是有延迟的,那么如果想要主节点宕机后,从节点接管时数据是一致的,hbase如何实现的呢?答案是可以使用同步复制方案
Hbase的同步复制
hbase实现同步复制的原理并不复杂,无非是在写操作写入HLog日志后同步写一份数据到从节点的RemoteWAL日志中,如下图所示:

当从节点接管读写操作时,他会首先应用RemoteWAL日志到集群上面,这样自然从节点的数据就会自然和主节点的数据保持一致了
相关文章:
Hbase异步复制和同步复制解析
背景 Hbase是一个KV数据库,自然和Mysql以及Redis等会涉及到复制的问题,也有主从集群的概念,那么本文就来看下Hbase的复制逻辑 Hbase复制实现 首先我们先在回顾下,在Hbase实现中,每个RegionServer上面会包含多个Regi…...
TIKTOK海外直播公会如何申
在“清朗行动”的规范化整治下,国内秀场直播俨然成为了“夕阳行业”,早已度过了野蛮生长的阶段。随着直播公会内卷竞争加剧,公会的生存也愈发艰难,有的娱乐主播甚至纷纷转行做起了电商,可见国内娱乐直播行业的惨淡。 …...
6.springcloud微服务架构搭建 之 《springboot集成Gateway》
5.springcloud微服务架构搭建 之 《springboot集成Hystrix》 目录 1.gateway介绍 2.项目引入gateway 3.yml配置gateway参数 5.自定义全局Filter 6.测试 1.gateway介绍 服务网关(Spring Cloud Gateway)是Spring Cloud官方推出的 第二代网关框架&#…...
[N1CTF 2018]eating_cms_
目录 信息收集 代码审计 parse_url解析漏洞 信息收集 进入即是登录页面,抓包一看应该是SQL注入,但是空格、%、|等等啥的都被waf了,不太好注入,先信息收集一波 花一分钟扫下目录,发现一个viminfo和register.php Viminfo文件…...
《Spring系列》第13章 Aop切面(二) 代理创建
前言 本篇文章主要介绍AOP的源码,要想看懂AOP,那么就看AOP给容器中注入了什么组件,这个组件什么时候工作,这个组件的功能是什么? EnableAspectJAutoProxy会向IOC容器中注入一个后置处理器,它会在Bean的创…...
算法-贪心
贪心算法1信息学竞赛课堂贪心算法2贪心法实际生活中,经常需要求一些问题的“可行解”和“最优解”,这就是所谓的“最优化”问题。一般来说,每个最优化问题都包含一组“限制条件”和一个“目标函数”,符合限制条件的问题求解方案称…...
【数据结构与算法】树(Tree)【详解】
文章目录前言树一、树的基本概念1、树的定义2、基本术语3、树的性质二、树的存储结构1、双亲表示法2、孩子表示法3、孩子兄弟表示法二叉树一、二叉树的概念1、二叉树的定义2、几个特殊的二叉树3、二叉树的性质4、二叉树的存储结构二、遍历二叉树1、先序遍历2、中序遍历3、后序遍…...
OSPF------LSA 详解
LSA头部 [r1]display ospf lsdb 链路状态老化时间(Link-State Age) 16bits,单位s当该LSA被始发路由器产生时,该值被设置为0,之后随着该LSA在网络中被洪泛,老化时间逐渐累积。(但是不能让它一直增长&#x…...
js加解密入门
首先,让我们简单介绍一下百度公司的文心一言。文心一言是百度公司推出的一项文本生成工具,它可以根据给定的主题或关键词生成一句简短而富有启发性的文字。在我们的加密和解密方法中,我们将利用文心一言的特点来生成随机的字符串,…...
vue+Echarts导入自定义地图
在vue项目先安装echarts //在vue文件中的<script>中引入 import * as echarts from "echarts"; import geoJson from ../assets/map/Fmap.json; //自定义地图的位置 import * as topojson from "topojson-client"; //使用组件topojson-client自定…...
dp-组合总和 Ⅳ
给你一个由 不同 整数组成的数组 nums ,和一个目标整数 target 。请你从 nums 中找出并返回总和为 target 的元素组合的个数。题目数据保证答案符合 32 位整数范围。示例 1:输入:nums [1,2,3], target 4输出:7解释:所…...
46-堆
目录 1.概念 2.表示 3.三大操作 4.代码实现最大堆(基于数组,编号从0开始) 4.1.根据孩子节点k获取当前父节点的索引 4.2.根据父节点k求左孩子节点下标 4.3.根据父节点k求右孩子节点下标 4.4.判空 4.5.toString()方法 4.6.判断数组中…...
Mysql高可用高性能存储应用系列3 - mysqld_multi配置主从集群
概述 主从复制要解决的问题,1)写操作锁表,影响读操作,影响业务。2)数据库备份。3)随着数据增加,I/O操作增多,单机出现瓶颈。 主从复制就是从服务器的主节点,复制到多个从节点,默认采用异步的方…...
天干地支(Java)
题目描述 古代中国使用天干地支来记录当前的年份。 天干一共有十个,分别为:甲(jiǎ)、乙(yǐ)、丙(bǐng)、丁(dīng)、戊(w)、己&a…...
码住,虹科工业树莓派应用小tips
在应用虹科工业树莓派进行项目开发的过程中,我们会应用到各种功能,部分功能看似不起眼,但是在实际应用开发过程中却非常重要。接下来虹科分享几个工业树莓派在应用过程中经常会遇到的几个问题,并分享解决方案,帮助大家…...
美国新规-带绳窗帘亚马逊ANSI/WCMA A100.1-20测试标准详解
亚马逊要求所有有线窗帘都经过测试,符合下列特定法规或标准要求: 商品法规/标准要求带绳窗帘以下所有项: 显示检测结果符合 ANSI/WCMA A100.1-2018(带绳窗帘商品的美国国家安全标准)的检测报告。 美国消费品安全委员…...
【华为OD机试 2023最新 】 模拟商场优惠打折(C++)
题目描述 模拟商场优惠打折,有三种优惠券可以用,满减券、打折券和无门槛券。 满减券:满100减10,满200减20,满300减30,满400减40,以此类推不限制使用; 打折券:固定折扣92折,且打折之后向下取整,每次购物只能用1次; 无门槛券:一张券减5元,没有使用限制。 每个…...
前端直接生成GIF动态图实践
前言去年在博客中发了两篇关于GIF动态生成的博客,GIF图像动态生成-JAVA后台生成和基于FFmpeg的Java视频Mp4转GIF初探,在这两篇博客中都是采用JAVA语言在后台进行转换。使用JAVA的同学经过自己的改造和开发也可以应用在项目上。前段时间有朋友私下问&…...
2023年Java岗面试八股文及答案整理(金三银四最新版)
春招,秋招,社招,我们Java程序员的面试之路,是挺难的,过了HR,还得被技术面,小刀在去各个厂面试的时候,经常是通宵睡不着觉,头发都脱了一大把,还好最终侥幸能够…...
centos8上安装redis
一、安装前准备 在安装Redis之前,需要确保CentOS 8系统已经安装了EPEL存储库和Redis的依赖库。 安装EPEL存储库 EPEL存储库是一个由Fedora项目提供的额外软件包仓库,包含了许多常用的软件包。在CentOS 8系统上,可以通过以下命令安装EPEL存储…...
STM32开发环境搭建:Keil5 MDK安装与驱动配置全指南
1. Keil5 MDK安装前的准备工作 第一次接触STM32开发的朋友,往往会在环境搭建这一步卡住。我刚开始玩STM32的时候,光是安装Keil就折腾了大半天。现在回想起来,其实只要提前做好这几项准备,整个过程会顺利很多。 首先说说硬件准备。…...
11,2kw双向储能变换器:基于PFCLLC结构的工业应用仿真研究
11,2kw双向储能变换器仿真,已工业应用。 pfcllc结构,可整流,可逆变。 整流模式下,pfc为单相pwm整流器,输入电压220V,50Hz,llc输出电压55V。 逆变模式下,llc输入电压55V&a…...
JS 入门通关手册(35):执行上下文、调用栈与作用域链深度解析
一、什么是执行上下文?执行上下文(Execution Context)是 JS 代码运行时的环境,JS 引擎会为每一段可执行代码创建一个上下文,用来管理变量、作用域、this 指向等。简单理解:一段代码在哪里跑、能访问什么、t…...
告别手动重启!用宝塔PM2管理器实现Node.js热更新(2023最新配置指南)
2023终极指南:用宝塔PM2打造Node.js热更新开发流水线 每次保存代码都要手动重启服务?还在为部署中断用户体验而头疼?作为经历过数百次深夜紧急部署的全栈开发者,我总结出一套零中断热更新方案。只需15分钟配置,让你的N…...
【PCIE系列】深入解析接收端检测:从电路原理到实战验证
1. PCIE接收端检测机制的核心原理 当你把一根USB线插入电脑时,系统瞬间就能识别到设备连接——这种看似简单的操作背后,隐藏着PCIE接收端检测的精妙机制。作为硬件工程师,我经常需要调试这种看似简单实则复杂的链路检测问题。接收端检测本质上…...
ROS 2 手眼标定完整方案
我给你整理ROS 2 中最稳定、最常用、工业级可用的手眼眼标定包,包含安装、使用、命令、区别,直接照着用就行。 一、ROS 2 首选手眼标定包:easy_handeye2 github 地址:https://github.com/IFL-CAMP/easy_handeye2 这是 easy_hand…...
4步永久保存青春记忆:GetQzonehistory让QQ空间备份如此简单
4步永久保存青春记忆:GetQzonehistory让QQ空间备份如此简单 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 在数字时代,我们的青春记忆常常散落在各种社交平台中…...
新手挖洞实录:我是如何通过一个Vue站点的逻辑缺陷拿到Shell的
从零到一的渗透实战:一位安全新手的Vue站点突破之旅 第一次成功getshell的感觉,就像在黑暗中摸索许久后突然找到开关——那种豁然开朗的兴奋感至今难忘。作为刚踏入安全领域的新人,我决定记录下这段从资产发现到最终突破的完整历程ÿ…...
告别手动配置:用快马AI生成openclaw自动化安装与环境管理脚本
作为一名经常需要配置各种开发环境的程序员,我深刻体会到手动安装工具的繁琐。最近在搭建一个爬虫项目时需要用到openclaw,发现传统安装方式存在几个明显的效率痛点: 版本查找耗时:需要反复在官网和文档间切换,确认最…...
告别单调闪烁!用GD32F303的TIMER高级功能玩转PWM:实现S形曲线呼吸灯与多灯同步效果
解锁GD32F303定时器高阶玩法:S形曲线PWM与多灯协同控制艺术 呼吸灯效果在嵌入式设备中早已司空见惯,但大多数实现仍停留在简单的线性渐变阶段。当LED亮度以恒定速率变化时,人眼会感知到明显的"机械感"——就像早期数字音乐缺少模拟…...
