文章目录

  • 前言
  • SCM HA相较于OM HA的区别点
    • SCM HA服务内存状态数据一致性的控制
    • Follower SCM内部管理服务的“失效”处理
    • SCM HA failover行为处理
    • SCM HA的整体架构图
  • 引用

前言


在前面的文章中,笔者写过关于Ozone OM HA实现的相关文章(Ozone OM服务HA原理分析),里面谈论了目前OM HA的一些实现细节以及OM HA如何搭建这类的说明性文章。但是一套完整,高可用的系统,它需要确保其服务整体的健壮性,目前Ozone依赖的SCM服务还没有实现HA,是一个单点的服务。Ozone社区在实现了OM HA之后,已经在设计考虑实现SCM的HA方案(相关JIRA:HDDS-2823),以此能够达到一个稳定可使用的Ozone发布版本。本文笔者根据目前社区JIRA上对SCM HA的部分设计要点,来聊聊关于Ozone SCM服务的HA,我们有哪些主要设计要点以及其与OM HA的不同之处。

SCM HA相较于OM HA的区别点


这里SCM是StorageContainerManager名称的简写,而OM是OzoneManager的简称。在Ozone服务中,SCM是底层提供存储能力的基础服务,OM则是其上的应用服务。对于OM这样的应用服务,它在实现HA时重要考虑的点在于Leader/Follower服务节点上db元数据状态的一致。了解Ozone OM的同学应该清楚,OM的元数据不是类似HDFS NameNode的纯内存的维护,而是用外部K-V db库做存储的,而这个db是以文件形式持久化在本地的。因此OM HA在实现中只要做到这个外部db的数据同步更新,基本上就算完成OM HA的核心操作了。

SCM HA服务内存状态数据一致性的控制

但是SCM HA如果要去实现的话,它需要考虑的东西就要复杂很多了。首先它同样有类似OM db这样的元数据需要去同步,在SCM中这类的数据有Container,Pipeline数据。另外SCM在内存中还维护着Container,Pipeline的状态数据,它们的状态数据是根据下面Datanode实时汇报上来进行更新的。这类状态数据实质上不会更新在db文件里去,因此在SCM HA的实现中,内存状态数据的一致性同样是一个需要关注和考虑的点。

对于SCM HA的内存状态一致性控制,笔者个人的倾向是同样利用Apache Ratis做内存状态的控制,要定义相应内存状态更新的StateMachine来做。OM HA目前实行有db transaction更新的StateMachine实现了,SCM HA的db更新可借鉴于此。

Follower SCM内部管理服务的“失效”处理


Ozone SCM内部包含许多管理服务类进行着Node,Container以及Pipeline的管理,此类服务在后面的Follower SCM内都应该"失效化",另外一种解释可以称之为“空跑”,不做任何实质的处理操作。我们只允许Leader SCM服务做请求操作处理,并同步replicate它的状态改变到Follower SCM上,这个状态改变包括

  • db transaction
  • 内存维护状态的update

这里提到的管理服务包括有以下几类:

  • ReplicationManager,以及类似此Manager类。
  • ReportHandler,以及类似此Handler类。

当然这里有人可能会说了,为什么我们不能维持Follower SCM中ReportHandler的功能,来做Container,Pipeline内存状态的更新呢?类似于HDFS NameNode那样呢?这里实质上有Container report信息到SCM服务的latency考量,以及此状态延时可能造成的后续问题还需要进一步地实现讨论。因此才有了前面小节提到的做到SCM服务间内存状态的完全一致性同步方案考虑。

SCM HA failover行为处理


SCM服务从单点模式变为HA模式,SCM服务本身Leader选举切换理应对其Client端(这里目前指的就是OM服务)来讲是透明的。SCM的做法和现有OM HA类似,Follower角色服务抛出异常并且附带当前的Leader角色的SCM地址id,然后Client进行返回结果SCM id的retry。

SCM HA的整体架构图

以下是社区SCM HA设计文档中 SCM HA的整体架构设计图:、

本文所阐述的SCM HA可详见下面的文档链接处。

引用


[1].https://issues.apache.org/jira/browse/HDDS-2823

Ozone SCM HA设计浅谈相关推荐

  1. Ozone SCM HA模式下的请求处理过程

    文章目录 前言 SCM HA和OM HA的区别 SCM HA基于InvocationHandler的请求处理 SCM HA请求处理过程图 参考链接 前言 在前面的文章中,笔者阐述过关于Ozone SC ...

  2. OOD面向对象设计浅谈

    來源:http://dev.csdn.net/htmls/59/59377.html OOD面向对象设计浅谈 前言 OOD指面向对象设计,在软件设计生命周期中发生于OOA之后期或者之后,OOA与OOD ...

  3. Lily-w131 wifi模块天线分集硬件设计浅谈

    wifi模块天线分集 Lily-w131 wifi模块天线分集硬件设计浅谈 引用百度百科天线分集的概念.天线分集是使用两个接收信道,它们受到的衰落影响是不相关的:两者在某一时刻同时经受某一深衰落点影响 ...

  4. c语言程序与设计教学设计,浅谈C语言程序设计课程的教学设计

    C语言程序设计课程是一门计算机专业程序设计语言类的基础课程,如何将枯燥复杂的语法.单调抽象的函数让学生们有兴趣学习.研究.文章通过在C语言程序设计这门课教学的设计,浅谈了自己的见解和方法. 大多数计算 ...

  5. 计算机考研跨设计,浅谈2012年计算机跨考视觉转达设计考研经历

    浅谈2012年计算机跨考视觉转达设计考研经历 2012年考研基本尘埃落定,回想这一路走来其实过得还挺快的,准备了一年的时间总算是有个比较好的结果.准 作者 娇儿kf 次阅读 2012-06-27 20 ...

  6. IC设计- 浅谈各种验证 - 功能验证,形式验证,原型验证

    浅谈逻辑仿真,形式验证及硬件仿真 随着硬件设计复杂性的不断增加,为了能够最大程度的使得验证收敛,验证方法也越来越多,今天我们针对常见的几种验证方法做一些简单的分析,指出它们的常用应用环境以及一些优缺点 ...

  7. 一起谈.NET技术,C#权限管理和设计浅谈

    权限管理是很多软件中相当重要的一个模块它的设计的好坏直接影响到软件的安全性.权限管理的可扩展性和易操作性 以及代码中权限判断的复杂程度和效率等方面.此文主要想和大家分享的是这段时间,对权限管理和设计的 ...

  8. 优惠劵系统库存设计浅谈

    优惠劵系统活动库存一般分为:总库存和日库存.在一个用户来领取优惠劵时,需要判断当前剩余总库存和日库存是否充足,如果充足则进行库存扣减,否则提示用户领取失败.总库存和日库存的扣减是一个原子操作,要么都成 ...

  9. 荒野乱斗角色设计浅谈

    荒野乱斗,英文名:Brawl Stars,是 芬兰手游公司Supercell于2017年出品的手机游戏.2018年12月12日全球上线 ,发售后第一周收入超过1000万美元,上线仅2个月,全球范围内( ...

  10. java final 修改_“无法改变的设计”——浅谈Java中的final关键字

    在Java中,final关键字可以用来修饰类.变量(包括成员变量和局部变量).方法,下面从这三个方面分别说明. final方法 当一个方法被final修饰时,表明这个方法不能被子类重写. 下面程序试图 ...

最新文章

  1. linux服务器配置php mysql,Linux系统如何安装配置Apache+PHP+MySQL服务器环境
  2. 初学Struts遇到的坑爹问题
  3. 四因素三水平正交表_做论文要用正交表?我打包送给你
  4. java数学计算表达式_Java初学者:内建函数计算简单的数学表达式
  5. Python爬虫使用浏览器的cookies:browsercookie
  6. 基于visual Studio2013解决面试题之0504单链表逆序
  7. 机器学习中的分类模型和回归模型
  8. hive 窗口函数 应用场景与实战详解
  9. B站(IT速成之JAVA速成班 300分钟算法面试)跟做笔记
  10. vue项目中通过cdn引入资源并配置
  11. 【CSS】css 给盒子添加四周阴影
  12. linux系统上安装python工具的步骤
  13. Centos7+LAMP+owncloud+数据库读写分离
  14. 如何在苹果手机上安装自制的AD证书
  15. 打印机简体打出繁体处理方法
  16. L1-6 福到了 (模拟)
  17. 4g网络设置dns地址_大型网络监控如何设置ip地址?如何选择交换机?
  18. 可重构/大规模智能反射表面reconfigurable/large intelligent surface综述
  19. Python多进程:超时进程的处理与终止
  20. 计算机资源管理论文,计算机专业教育资源管理系统毕设论文.doc

热门文章

  1. H+ Hplus html解决contabs.js未加载完毕时 点击会跳转至菜单框架外的bug
  2. [IntelliJ IDEA + EduTools] 从零开始编写一套 Java 教材(一)
  3. python解释器需要另外安装吗_Python解释器安装
  4. 启动startUML的时候报错“Exception EOleSysError in module StarUML.exe at 000AD559.
  5. ../bin/testCurveFitting 出现的错误以及解决办法
  6. Java程序员必备的一些流程图/架构图(拿走不谢)
  7. 百度智能云人脸库的创建与使用
  8. 批量旋转很多张图片,可以设置自定义的旋转角度
  9. Proteus仿真Arduino的Proteus Library文件下载
  10. 【工具】[Listary]好用到哭的快速搜索工具