qidao123.com技术社区-IT企服评测·应用市场

标题: TiDB 数据库调度(PD)揭秘 [打印本页]

作者: 灌篮少年    时间: 2024-8-16 11:46
标题: TiDB 数据库调度(PD)揭秘
目录
一、PD 简介
        1.1 元数据管理
        1.2 调度决策
        1.3 全局服务
        1.4 集群设置与管理
二、TiKV 管理
        2.1 调度需求
        2.2 信息网络
三、TiDB server 管理
四、PD 集群主节点选取


一、PD 简介

        TiDB PD (Placement Driver) 是 TiDB 分布式数据库系统中的核心组件之一,负责整个集群的元数据管理和调度工作。PD 在 TiDB 架构中饰演着至关紧张的角色,确保了数据的精确分布、高可用性、以及资源的有效利用。

        PD 的功能如下:
        1.1 元数据管理

        存储集群全局元信息:PD 保存了 TiKV 集群的整体拓扑结构、每个 TiKV 节点的状态、以及数据在各个节点上的分布情况(即 Region 分布)等关键元数据。
        维护 Region 信息:Region 是 TiKV 中数据的最小分布单位,PD 负责记录每个 Region 的键值范围、副本位置、Leader 信息等,并动态调解 Region 分布以实现数据平衡。
        1.2 调度决策

        数据平衡:PD 根据预设的战略(如 Region 大小、副本数、地域分布等)定期进行数据平衡操作,通过迁移 Region 的副本来避免数据热点、保证资源利用率,并确保在节点故障时有足够的副本可用。
        故障恢复:当 TiKV 节点发生故障或网络隔离时,PD 负责检测并触发故障转移流程,重新推举 Leader,确保数据的高可用性。
        Region Split/Merge:根据数据增长和查询需求,PD 自动触发 Region 的分裂(Split)和合并(Merge)操作,以维持合理的 Region 大小,优化查询性能。
        1.3 全局服务

        全局唯一时间戳(Timestamp Oracle, TSO):PD 提供全局单调递增的时间戳服务,用于协调分布式事务中的时间顺序,确保事务的 ACID 特性。
        全局唯一 ID 分配:PD 分配全局唯一的 Region ID、Table ID、Index ID 等,确保在整个集群内标识符的唯一性。
        1.4 集群设置与管理

        设置变更:PD 存储并管理 TiKV、TiDB 等组件的设置信息,支持动态调解设置并通过 gRPC 接口推送变更。
        监控与告警:PD 网络集群的运行状态和性能指标,支持通过 Prometheus 等工具进行监控,并提供告警功能。
        Dashboard & CLI:提供图形化界面(TiDB Dashboard)和命令行工具(pd-ctl)供管理员查看集群状态、执行管理操作。
二、TiKV 管理

        TiKV 集群是 TiDB 数据库的分布式 KV 存储引擎,数据以 Region 为单位进行复制和管理,每个 Region 会有多个副本 (Replica),这些副本会分布在不同的 TiKV 节点上,其中 Leader 负责读/写,Follower 负责同步 Leader 发来的 Raft log。

        须要思量一了局景:
        以上题目和场景如果多个同时出现,就不太容易办理,因为须要思量全局信息。同时整个系统也是在动态变化的,因此须要一个中心节点,来对系统的整体状态进行把控和调解,所以有了 PD 这个模块。
        2.1 调度需求

        对以上题目进行分类和整理,可以分为两个题目:
        1. 作为一个分布式高可用系统,必须满足以下要求

        2. 作为一个精良的分布式系统,要思量的方面如下

        满足第一类需求后,整个系统将具备强大的容灾功能。满足第二类需求后,可以使得系统整体的资源利用率更高且合理,具备精良的扩展性。
        为了满足这些需求,起首须要网络足够的信息,比如每个节点的状态、每个 Raft Group 的信息、业务访问操作的统计等;其次须要设置一些战略,PD 根据这些信息以及调度的战略,制定出尽量满足前面所述需求的调度计划;末了须要一些根本的操作,来完成调度计划。
        2.2 信息网络

        调度依赖于整个集群的信息网络,简朴来说,调度须要知道每个 TiKV 节点的状态以及每个Region 的状态。TiKV 集群会向PD汇报两类信息,TiKV 节点信息和 Region 信息。每个 TiKV 节点会定期向 PD 汇报节点的状态信息。
        TiKV节点(Store)与PD之间存在心跳包,一方面PD通过心跳包检测每个Store是否存活,以及是否有新加入的Store;另一方面心跳包也会携带这个Store的状态信息,主要包括:

        TiKV Store 的状态具体分为 Up,Disconnect,Offline,Down,Tombstone。各状态的关系如下:
        Up:表示当前的 TiKV Store 处于提供服务的状态。
        Disconnect:当 PD 和 TiKV Store 的心跳信息丢失超过 20 秒后,该 Store 的状态会变为 Disconnect 状态,其时间超过 max-store-down-time 指定的时间后,该 Store 会变为 Down 状态。
        Down:表示该 TiKV Store 与集群失去毗连的时间已经超过了 max-store-down-time 指定的时间,默认 30 分钟。超过该时间后,对应的 Store 会变为 Down,而且开始在存活的 Store 上补足各个 Region 的副本。
        Offline:当对某个 TiKV Store 通过 PD Control 进行手动下线操作,该 Store 会变为 Offline 状态。该状态只是 Store 下线的中心状态,处于该状态的 Store 会将其上的全部 Region 搬离至其它满足搬迁条件的 Up 状态 Store。当该 Store 的 leader_count 和 region_count (在 PD Control 中获取) 均表现为 0 后,该 Store 会由 Offline 状态变为 Tombstone 状态。在 Offline 状态下,克制关闭该 Store 服务以及其所在的物理服务器。下线过程中,如果集群里不存在满足搬迁条件的其它目标 Store(比方没有足够的 Store 能够继续满足集群的副本数目要求),该 Store 将一直处于 Offline 状态。
        Tombstone:表示该 TiKV Store 已处于完全下线状态,可以利用 remove-tombstone 接口安全地清算该状态的 TiKV。

         每个 Raft Group 的 Leader 会定期向 PD 汇报 Region 状态。每个 Raft Group 的 Leader 和 PD 之间存在心跳包,用户汇报 Region 状态,主要包括以下信息:

        PD 不停的通过这两类心跳消息网络整个集群的信息,再以这些信息作为决策的依据。
        除此之外,PD 还可以通过扩展的接口担当额外的信息,用来做更准确的决策。比如当某个 Store 的心跳包制止的时间,PD 并不能判断这个节点是临时失效照旧永久失效,只能经过一段时间的等候(默认是 30 分钟),如果一直没故意跳包,就以为该 Store 已经下线,再决定须要将这个 Store 上面的 Region 都调度走。
三、TiDB server 管理

        PD 怎样管理和监控 TiDB Server,一下是主要内容:

四、PD 集群主节点选取

        PD(Placement Driver)集群本身也是由多个 PD 节点组成,它们通过 Raft 协议形成一个共识组,共同维护集群的元数据和进行决策。在 PD 集群内部,主节点(Leader)的选取同样遵循 Raft 协议的推举机制。
        关于 Raft 选主请参考往期文章:Raft共识算法向导者推举流程揭秘-CSDN博客
        总结来说,TiDB 中 PD 集群选取主节点是通过 Raft 一致性协议的推举机制实现的。在推举过程中,候选节点争取大多数节点的投票,赢得推举的节点成为主节点,负责处理处罚集群的元数据管理和调度决策。这种机制确保了 PD 集群在面临节点故障时能够快速恢复服务,维持集群的高可用性和数据一致性。

往期经典推荐:
深入浅出 TiDB MVCC:揭秘分布式数据库中的多版本并发控制-CSDN博客
TiDB内核解密:揭秘其底层KV存储引擎怎样玩转键值对_tidb 的key value是怎样做到的-CSDN博客
揭开Spring Bean生命周期的神秘面纱-CSDN博客
探析Drools规则引擎的工作原理_drools引擎执行过程?-CSDN博客
Raft日志复制技能及成员变更原来是这样的-CSDN博客

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 qidao123.com技术社区-IT企服评测·应用市场 (https://dis.qidao123.com/) Powered by Discuz! X3.4