首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >TIDB 中的REGION 是如何进行管理和协调的

TIDB 中的REGION 是如何进行管理和协调的

作者头像
AustinDatabases
发布2021-10-15 14:54:40
8170
发布2021-10-15 14:54:40
举报
文章被收录于专栏:AustinDatabasesAustinDatabases

熟悉TIDB 的同学都知道,TIDB 中的数据库存储节点是TIKV ,而这里TIKV 仅仅是数据的一个“物理”的存储地,并不是一个数据单位,TIKV的数据单元用Region来表达,那么一个TIKV 可以存储多个region,TIKV 和Region之间的关系是什么,之间的性能关系又是什么。

这里引入一个概念,raft group , 在TIDB 中每一个region都是通过raft group, 来进行管理的。每个region 以及其副本都是通过 raftgroup来进行管理和协调的,多个 region 自然就有多个 raft group 来进行管理,这里给众多的raft group 一个名字 MultiRaft。

raft group 是通过并发处理机制来进行工作的,其中主要的功能有两个

1 normal

2 control

Normal 主要是处理自身region本身的任务,包含自身的消息队列,control主要的功能是针对整体REGION的状态以及调整进行工作。

借助官方的raftstore workflow 的图,整体处理region的系统组成了一个raftstore的模块,来针对整体模块的读写进行处理,region的状态进行处理, 并且定时的检查各个region的状态。

Raftstore 中存在两个机制,

1 raftBatchSystem

2 applyBatchSystem

其中raftBatchSystem 处理与raft有关的一些工作,如日志的下发,日志的写入,和region 的状态变化。当日志写入后,applyBatchsystem会将日志变为实际的数据写入KV 的region中。

从上图我们可以看出,数据写入的步骤

1 日志先写入系统中

2 在确认日志写入到系统中后,应用日志将数据写入到KV的region中

3 在确认日志写入到系统中后,将数据发送给其他的KV的region副本

Raftstore 同时也控制Regionde 分裂和融合,根据数据的增加将数据分割成多个段落,或者合并相邻的两个段落的数据,这样的操作也会通过4个步骤来完成 raft propose commit apply 四个流程。

除了完成上述的任务, 每个Region 本身也遵从RAFT协议,Leader region也有租约,raftstore在租约内收到请求会在Region leader节点进行写操作,再次以外raftstore还需要保证在进行region分割时基于key value的数据不会被拆分到2个region中,通过coprocessor 来保证。

总结:

TIKV 中包含raftstore模块, 主要功能负责日志的写入,数据的写入,数据的副本传输,region的分割和合并,保证数据读取和写入在租约期的安全,和region分割时key:value的完整性。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-10-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AustinDatabases 微信公众号,前往查看

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

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档