学习
实践
活动
工具
TVP
写文章
专栏首页腾讯云数据库(TencentDB)CynosDB技术详解——存储集群管理
原创

CynosDB技术详解——存储集群管理

前言

CynosDB是架构在CynosFS之上的分布式关系数据库系统,为最大化利用存储资源,平衡资源之间的竞争,检查资源使用情况,需要一套高效稳定的分布式集群管理系统(SCM: Storage Cluster Manager),SCM使用Etcd作为存储,利用Etcd Raft算法完成SCM Leader的选举,对外提供HTTP API 查询CynosFS 状态,负责CynosFS调度,其包含两类调度:

lPool调度:对SCM 中所有Pool进行调度,每个Pool的调度将根据其状态,产生相关调度操作,包括Pool的初始化,Pool自动扩缩容,以及Pool的销毁等。

lSegment Group调度: 每个Pool内有一个SG调度器,负责该Pool内所有SG的调度,根据每个SG的状态,产生相关的调度操作,包括增减副本,Leader切换,副本迁移,副本离线等。

相关组件和名词解释如下:

lDBEngine:数据库引擎,支持一主多从。

lDB Cluster Manager(DCM):数据库集群管理,其负责一主多从DB集群的HA管理。

lStorage ServiceStorage Node(SN):Storage Service是个逻辑概念,泛指实际提供服务的Storage Node。SN则是1个具体的服务进程,负责日志的处理、BLOCK数据的异步回放、读请求的多版本支持等,同时还负责将WALLOG备份到Cold Backup Storage。

lSegment(Seg):Storage Service管理数据块BLOCK和日志的最小单元(大小为10GB),也是数据复制的实体。通过一致性协议(Raft)进行同步,形成Segment Group(SG)

lPool:多个SG从逻辑上构成一个连续的存储数据BLOCK的块设备,供上层的Distributed File System分配使用。Pool和Seg Group是一对多的关系。

lStorage Cluster Manager(SCM):负责管理Storage Service,维护Pool和SG的对应关系,以及Segment Group内部成员的调度。

数据模型

SCM数据模型包含4类信息:API信息,系统信息,调度信息,存储服务信息

lAPI信息(API Info):SCM对外提供服务的接口,包括SCM自身运行情况,Pool信息,以及Storage Service信息等,提供RESTFul风格的接口(管理类接口)和GRPC接口(数据交互类)。

l系统信息(System Info):SCM自身运行的全局配置信息,以及多个SCM主从Member信息,此外还包括外部系统访问的地址ClientUrls和Member之间的访问地址PeerUrls等信息。

l调度信息(Schedule Info):SCM内部调度的作业信息和状态信息,包括Pool和SG的调度信息,以及相关调度产生的任务,这些任务将会通过心跳下发给Storage Service。

l存储服务(Store Info):SCM保存的Storage Service信息、调度的状态信息、Storage Service上报的统计信息以及内部作业定期计算产生的统计信息等,主要包括Pool信息,Storage Service元数据及Storage Service运行时统计信息,以及SG相关信息。

I/O模型

SCM Master主要与如下模块进行交互:

lStorage Service:进行资源调度,接收心跳,下发命令等交互

lDistributed File System:为其提供对应Pool和pool下所属SG的信息,以帮助其完成读写请求的正确路由

lDCM:为其提供包括创建Pool,查看Pool信息,以及SG调度情况等接口。

lSCM Slave:通过Etcd同步SCM的数据,包括调度信息和资源信息等,维护高可用性的心跳信息。

对上图的详细说明:

1.SN注册到SCM,SN的物理布局信息通过标签组labels(每个标签label采用key-value键值对表示)进行定义,标签名依次是Region->Zone->Rack->Host,标签值是具体部署的物理信息,如北京->北京一区->rack_01->host_01。一个SN负责处理一个SSD设备上的数据读写。

2.DCM开始创建Pool,SCM接收到创建操作后,保存该Pool的元数据信息到Etcd上,然后把该Pool加入到内部调度队列。

3.Pool调度器:定期从调度队列上获取各个Pool来调度,调度包括Pool的初始化(分配第一个SG),根据Pool状态及使用情况进行扩缩容,以及Pool的销毁。

4.SG调度器:每个Pool下对应一个SG调度器,负责该Pool内所有SG的调度,包括SG的初始化,增减副本,SG内leader切换,迁移等,通过装箱算法选择最佳Storage Node作为该SG的成员以及整个存储资源的调度。

5.Distributed File System会定期同步SG的使用情况,Pool信息到SCM,并从SCM获取该Pool的所有SG信息以及SG的变更情况(如SG内leader切换)。

调度原理

通过SCM发送心跳信息来驱动的,包括Store Node(SN)心跳和Segment Group(SG)心跳,心跳消息采用Protobuf V3定义,GRPC进行交互,由SN发起,SCM负责接收,接收到心跳信息后,将根据SN运行情况产生相关的调度命令,并通过心跳响应信息下发给SN,SN接收命令,并执行命令,然后更新相应的状态信息,通过下一次心跳发送给SCM。

Pool调度

Pool调度将对SCM所有Pool进行调度,每隔5秒轮询一次所有的Pool,检查是否有新的Pool加入,检测每个Pool的状态,根据Pool状态进行调度,如初始化,扩缩容和销毁等。

Pool状态包括:UNINITIALIZE,NORMAL,DISABLE,DELETE,其调度状态包括:INITIATING,EXPANDING,EXPANDED,IDLE。Pool调度状态变更如下:

扩容过程如下:

1.当前Pool存在SG0,新增SG1并对SG1进行初始化。

2.当Pool调度器检查到Pool需扩容时,更新其状态为EXPANDING,并持久化该Pool信息,然后添加一个SG的元数据到Pool的SG内部调度队列中,并持久化到Etcd中,SG的ID从0开始编号,依次递增,保持连续性,避免产生空洞,采用一次扩展一个SG的方式,完成后更新其状态为EXPANDED。

3.该Pool的SG调度器进行调度,检测到有新SG,对该SG进行初始化,补充副本。

4.当Pool调度器检查到该Pool的状态为EXPANDED,判断该新的SG是否创建完成(补充完所有副本),如创建完成则更新Pool的调度状态为IDLE,否则忽略本次调度。

调度状态需进行持久化,当SCM发生主从切换时,能恢复到崩溃时的调度状态。

Pool缩容是扩容的逆过程,从id最大的SG开始往0方向收缩,以免产生空洞,具体的操作由SG调度器执行每个SG回收。

Pool释放是对该Pool的所有SG进行释放,回收将从从id最大的SG开始回收,回收过程将通过心跳信息下发指令给SN,具体的操作由SG调度器执行每个SG的回收。

SG调度

CynosDB每个Pool都对应一个SG调度器,每个调度器按1秒轮询一次该Pool内的所有SG,每个Segment Group之间是相互隔离的,其调度不受影响,调度主要通过SN的心跳和SG心跳完成的,调度包括segment的添加,删除,切主等。

SG状态包括:UNINITIALIZE,NORMAL,DISABLE。

Segment调度状态包括:UNINITIALIZE,INITIATING,ALLOCATING,ALLOCATED,BOOTSTRAPPING,ADDING,ADDED,REMOVING,RELEASING,调度状态如下:

SN心跳:SCM接收store的统计信息,然后下发Segment操作(分配和销毁Segment)和SG操作(启动和销毁Segment Group)给Store,然后Store执行操作,而Store操作的结果通过GRPC API汇报给元数据。如分配一个Segment给某个Pool的SG过程:

1.保存Segment的元数据信息到KV系统中。

2.接收到Store的心跳信息。

3.下发分配Segment信息。

4.接收到分配Segment信息,进行本地操作,操作完成后直接通过grpc汇报分配结果给元数据。

SG心跳:SCM获取SG的心跳信息,更新SG的元数据信息,然后根据SG的状态,产生相应操作(如添加,删除副本)或空操作,通过心跳的响应信息反馈给SN,如有下发操作,SCM通过下一次心跳信息来检查本次操作是否成功,如往某个SG中添加一个副本的过程:

1.SCM接收到SG上报的心跳信息,更新该SG的信息到KV系统。

2.SCM通过响应下发添加Segment请求给SG。

3.SG接收到请求后,向该SG加入新的Segment,添加后,更新SG信息,下一次心跳周期发送更新后的SG信息.

4.SCM接收到SG的心跳信息,检查添加Segment操作是否成功。

装箱算法

假设SCM中存在Region1,该Region1存在Zone1,Zone2两个区域,Zone1有三个机架Rack1,Rack2,Rack3,存在三个主机Host1,Host2,Host3,每个主机有4个SN,每个SN保存已分配的Segment,选择一个Store作为SG 副本分四个步骤:筛选,过滤,打分,比较。

1.筛选:根据Pool注册的标签信息(为一组Key-Value数组),如[{REGION:Region1},{ZONE:Zone1}],选择出可用的PoolStores1集合,如{S1,S2,S3,S4,S5...,S12}。

2.过滤:从PoolStores1集合中过滤不符合规则的store信息,如根据其状态(在线,离线),工作负载(空闲,忙碌),使用率(CPU,内存,磁盘,网络等),以及该Store已在该SG中等进行过滤,得到PoolStores2集合{S1,S2,S4,S7,S8,S9,S10,S12}。

3.打分:假设SG0的segment所在的store的集合为{S5,S3},其中S5为leader所在的store,对PoolStores2中的store进行打分,遍历PoolStores,针对每个pStore,遍历SGStores,比较pStore和sgStore的位置,计算pStore的分值pScore,遍历完SGStores后,得到该pStore在该SG上的分值pScore的总分值,即{100,100,100,100,100,200,200,200}。

4.比较:如选择的Stores的分数相同,则按Store上Segment数量进一步比较,数量少的为选择的Store,如选择出Store10作为为SG0{S5,S3}的另一个副本。

--DONE--

CynosDB现已正式开启公测,公测期间可获得3个月免费使用权,入口请戳:https://cloud.tencent.com/act/event/cynosdb.html?from=10287更多数据库前沿技术可关注 我们公众号:腾讯云数据库CDB。发布会PPT下载请移步腾讯云数据库公众号,见下方二维码,关注后回复“腾讯云新品发布会资料”即可下载

原创声明,本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

登录 后参与评论
0 条评论

相关文章

  • Ansible部署RHCS存储集群详解

    提示:Red Hat Ceph存储还支持在Red Hat OpenStack平台计算节点上部署OSDs、MONs、RGWs,但不支持部署mon和osd。

    星哥玩云
  • 数据源管理 | Kafka集群环境搭建,消息存储机制详解

    Kafka集群中有一个broker会被选举为Controller,Controller依赖Zookeeper环境,管理集群broker的上下线,所有topic的...

    知了一笑
  • 采用虚拟存储技术_虚拟存储管理

    虚拟地址空间—–分配给进程的虚拟内存 虚拟地址—–在虚拟内存中指令或数据的位置,该位置可以被访问,仿佛它是内存的一部分。

    全栈程序员站长
  • 详解Android数据存储技术

    学习Android相关知识,数据存储是其中的重点之一,如果不了解数据,那么让你跟一款没有数据的应用玩,你能玩多久呢?答案是这和没有手机几乎是差不多的。我们聊QQ...

    达达前端
  • 虚拟存储管理技术概念_虚拟内存管理

    主存和辅存共同构成了虚拟存储器。对于应用程序员来说,虚拟存储器是透明的。虚拟存储器即对磁盘存储器进行抽象,将磁盘存储器组织成一个连续的存储器,将主存看成是磁盘存...

    全栈程序员站长
  • 基于 kubernetes 构建 Docker 集群管理详解

    Kubernetes 是Google开源的容器集群管理系统,基于Docker构建一个容器的调度服务,提供资源调度、均衡容灾、服务注册、动态扩缩容等功能套件,目前...

    刘天斯
  • 如何基于Swift开源技术构建云存储集群

    随着云计算、移动通信、IoT的发展,传统的块设备和文件系统的方式访问面临着越来越多的局限,对象存储应运而生。对象存储使得应用或端设备直接通过web或http访问...

    段立功
  • CynosDB for PostgreSQL 架构浅析

    作者介绍:林锦,腾讯云数据库团队高级工程师,曾任云计算初创公司系统架构师,从事分布式系统研发7年,2017年加入腾讯云,从事NewSQL研发工作,目前主要负责C...

    腾讯云数据库 TencentDB
  • CNCF最终用户技术雷达:Kubernetes集群管理

    加利福尼亚州旧金山——2021 年 6 月 23 日——为云原生软件构建可持续生态系统的云原生计算基金会 ®(CNCF®)今天宣布了第五个 CNCF 最终用户技...

    CNCF
  • 【 DCOS 】织云 CMDB 管理引擎技术详解

    在私有云的环境里,所有基础架构设施均由用户自行管理。那么,为大型企业构建数百上千台服务器规模的私有云后,如何对这些网络设备和服务器进行自动化管理呢?

    织云平台团队
  • 操作系统 内存管理 虚拟存储技术与虚拟页式存储管理方案的实现

    基本思想:利用大容量的外存来扩充内存,产生一个比有限的实际内存空间大得多的、逻辑的虚拟内存空间,简称虚存。

    Meng小羽
  • 腾讯云新一代自研数据库CynosDB技术详解——架构设计

    CynosDB是腾讯云新一代分布式数据库,100%兼容MySQL和PostgreSQL,支持存储弹性扩展,一主多从共享数据,性能更是超越社区原生MySQL和Po...

    腾讯云数据库 TencentDB
  • 技术干货 | 搜索那点事儿:Lucene文件存储和读取技术详解

    作者简介 ---- 刘光敏: 达观数据搜索组研发技术人员,负责搜索引擎架构的设计和研发,搜索集群健康状况监控模块的开发及维护等。 ---- Lucene是一个...

    达观数据
  • Oracle数据库,详解Oracle自动存储管理ASM

    ASM是Automatic Storage Management(自动存储管理)的缩写。ASM是一个集成的高性能的文件系统和卷管理器。Oracle将所有的存储分...

    用户1289394
  • 深度揭秘腾讯云数据库技术7年变迁史

    早在上个世纪 50、60 年代,“数据”二字就已不再是简单的数字信息而已。随着信息技术的不断发展,在计算机应用领域,计算机存储和处理的对象逐渐广泛,表示这些对象...

    腾讯云数据库 TencentDB
  • 操作系统虚拟存储管理实验报告_虚拟存储器技术

    版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内...

    全栈程序员站长
  • 诚邀参会丨数据库技术探索及行业应用

    数据是企业的核心资产,数据库作为数据的载体,承担着至关重要的角色。它的性能、稳定性、可靠性、容灾以及安全成为企业应用的首要考量要素。数据库从技术上是如何实现以及...

    腾讯云数据库 TencentDB
  • 活动报名丨数据库技术探索及行业应用

    数据是企业的核心资产,数据库作为数据的载体,承担着至关重要的角色。它的性能、稳定性、可靠性、容灾以及安全成为企业应用的首要考量要素。数据库从技术上是如何实现以及...

    腾讯大数据

扫码关注腾讯云开发者

领取腾讯云代金券