TiDB学习4:Placement Driver

目录

1. PD架构

2. 路由功能

2. TSO

2.1 TSO 概念

2.2 TSO分配过程

2.3 TSO时间窗口

3. 调度

3.1 信息收集

3.2 生成调度(operator)

3.3 执行调度

4. Label 与高可用

4.1 Label 的配置

5. 小结


1. PD架构

PD是整个TiDB的总控,相当于集群的大脑

PD集成了etcd,支持故障转移,无需担心单点故障

PD通过etcd raft,保证数据强一致性

一个TiKV Node(一个TiKV实例)就是一个store

 一个Region的一个副本叫一个peer,一个Region包含多个peer

一个Region的多个副本构成raft group

多个raft group构成multi raft

PD主要功能

  • 整个集群 TiKV 的元数据存储
  • 分配全局 ID 和事务 ID(table id、index id)
  • 生成全局时间戳 TSO
  • 收集集群信息进行调度
  • 提供 label,支持高可用
  • 提供 TiDB Dashboard

2. 路由功能

执行sql时,想要读取的数据的Leader在哪个TiKV,需要问PD

执行计划传到executor,然后把请求发给TiKv Client,然后去PD上找在哪个TIKV上的Region取数据,然后PD告诉TiKV Client去哪个TiKV上去数据,就发送请求到TiKV把数据读出来,如果每次都用Key这样去读数据网络压力就会大,那么将读取出来的位置(在哪个TiKV)缓存到TiKV Client(Region Cache)中,比如Key=100缓存到Region Cache中,下一次就不用去PD中找Key=100在哪个region,直接在Region Cache读取,如果要读Leader发生了改变,比如从TIKV node1变到TiKVnode 2去了,TIKV node1会说我不是Leader了,要到TiKV node 2去读取,这叫back off,back off越多,读取延迟越高。

2. TSO

2.1 TSO 概念

TSO(int64) = physical time(unix物理时间,精确到毫秒) logical time(逻辑时间,能把1ms分成262144个TSO)

2.2 TSO分配过程

  1. 发送请求TSO给PD Client
  2. PD Client立即返回一个对象tsFuture(内存中的一个对象,标识了什么时刻请求了一个TSO)给TSO请求者,TSO请求者可以接着做解析编译生成执行计划
  3. 异步到PD Leader节点请求TSO,在PD Leader节点排队分配TSO,做完之后把TSO传回给PD Client
  4. 在请求的TSO来之前,如果解析编译完成了,tsFuture会调用tsFuture.wait方法等待TSO到来,如果PD Client在解析编译完成前就拿到了TSO则会时不时去看有没有调用tsFuture.wait方法,有的话就给TSO
  5. PD Client拿到TSO后,看见tsFuture.wait已经在等了,就立即把TSO给出来,这样一条sql语句既解析编译好了也拿到了TSO就可以开始执行了

        每条sql每次都去请求PD拿TSO会造成性能下降,批处理可以解决,比如1ms内有100个会话去请求TSO,这时候PD Client就会把这100个会话的sql请求变成一个批处理请求。PD会有一个批处理的限定时间段,比如5ms所有的会话为一个批处理,如果这个5ms之内只有一条sql,也会去PD请求。

2.3 TSO时间窗口

 

        PD生成的TSO会存在PD的持久化存储中,会产生IO,会话sql越多,PD的IO压力越大。

        为了解决IO压力大的问题,PD会先分配一段TSO在缓存中,比如分配3秒钟700~703在缓存中,此时持久化存储中TSO的开始时间是存的703,TiDB Server就到缓存中排队获取TSO,3秒都获取完了,再分配3秒706,所以时间窗口就是将一段TSO先分配到缓存供TiDB Server获取,减少PD IO压力。

        假设此时TiDB Server最新一次请求获取的TSO是704,刚好Leader PD宕机了,缓存里面的703~706都丢了 ,选出的新Leader PD会从706开始分配706~709到缓存中,704~706的都丢了,会产生一个小的断层,这是TSO的高可用性。

3. 调度

 总流程

3.1 信息收集

 

TiKV节点会周期性的去向PD报心跳,有两种心跳信息

  • store hearbeat:当前的容量、剩余空间、读写流量
  • region hearbeat:副本的分布状态、region读写流量

3.2 生成调度(operator)

  • Balance
    • Leader(主要是读写,是不是均衡分布在所有的TIKV上)
    • Region(主要是存储压力,不要让某一个TiKV过多存储Region)
  • Hot Region(打散热点Leader region,让其分布在多个节点)
  • 集群拓扑
  • 缩容
  • 故障恢复Region merge(drop、delete、truncate等操作后,region较空,可以将空的regio进行合并)

3.3 执行调度

        PD直接将operator发送给想要改动的region(有一个等待队列,从这个队列中按照设定的速度将operator发送给region) ,region接到operator后做相应的调整(分裂、合并,调到其他节点等等)。

4. Label 与高可用

        DC1、DC2、DC3是3个独立的数据中心,Rack是机柜,Rack中是TiKV服务器。

        如果rack4或者DC2出问题了,Region1就可能不可用了(多数派不可用),如果DC1出问题了,Region2可能也不可用了,不管是坏一个机柜或者是坏一个数据中心都不影响Region3

        如果元数据存在某个Region中,刚好这个Region不可用了,那么整个数据库就不可用了,PD节点只能保证同一个TiKV节点上不能有同时有一个Region的两个peer,不能保证其他分布,PD是通过Label来知道哪一个TiKV在哪一个DC和在哪一个Rack,Label是为了让PD感知集群的拓扑结构。

4.1 Label 的配置

TiKV设置标签

server.labels: { zone: "1", rack: "2", host: "3" }

zone代表DC,rack代表Rack(机柜),host代表服务器

在PD这儿设置隔离级别参数

location-labels = ["zone", "rack", "host" ]

[replication]

isolation-level = "zone"(Region相同的副本在zone的这一层隔离)

5. 小结

  • PD 的架构与原理
  • TSO 的分配
  • 调度的原理与实现
  • label 与高可用的关系

来自TiDB官方资料 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/16038.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android 版本与 API level 以及 NDK 版本对应

采用 Android studio 开发 Android app 的时候,需要选择支持的最低 API Level 和使用的 NDK 版本,对应开发 app 的最低 SDK 版本: 在 app 的 build.gradle 文件里,对应于代码如下: 目前各版本的占有率情况如下&#xf…

PaddleSeg训练推理及模型转换全流程

文章目录 1、数据准备1.1 数据标注1.2 数据导出1.3 标签较验1.4 数据集整理1.5 标签可视化 2、 模型训练3、模型验证4、模型推理5、模型导出6、导出文件的推理7、将模型转换成onnx8、使用onnx进行推理 本文记录一下使用paddleseg进行语议分割模型对人体进行分割的使用流程。事实…

jmeter服务器性能监控分析工具ServerAgent教程

ServerAgent介绍:支持监控CPU,memory,磁盘,网络等,和JMeter集成,在JMeter的图形界面中,可以实时看到监控的数据,但是,它只能监控硬件资源使用情况。 不能监控应用服务 S…

MySQL:表的约束

文章目录 0.小知识,数据转化1.空属性(非空约束)2.默认值(default)3.comment(列描述)4.zerofill(显示约束)5.primary key(主键约束)6.auto_increment(自增长)7.unique(唯一键)8.foreign key (外键)9.综合表结构的设计 表…

安装qianfan大模型库,报错:ERROR: Command errored out with exit status 1

安装qianfan大模型库(pip install qianfan),报错:ERROR: Command errored out with exit status 1 分析错误,是加载 pycryptodome库时导致的 解决: 1、命令行中重新安装:>pip install pycry…

lspci 显示当前设备的PCI总线信息

lspci 显示当前设备的PCI总线信息 lspci 显示当前设备的PCI总线信息显示当前主机的所有PCI总线信息:以数字方式显示PCI厂商和设备代码同时显示数字方式还有设备代码信息以树状结构显示PCI设备的层次关系:更多信息 lspci 显示当前设备的PCI总线信息 lspc…

XXE(XML外部实体注入)

1、XXE原理 XXE(XML外部实体注入,XML External Entity) ,在应用程序解析XML输入时,当允许引用外部实体时,可构造恶意内容,导致读取任意文件、探测内网端口、攻击内网网站、发起DoS拒绝服务攻击、执行系统命…

01-Linux【准备篇】

一、学Linux的作用? 1.Linux下开发(部署)软件项目 2.Linux运维 二、Linux的强与弱 1.薄弱 个人桌面领域的应用 此领域是传统Linux应用薄弱的环节,近些年随着Ubuntu、fedora等优秀桌面环境的兴起,Linux在个人桌面领域的占有率在慢慢提高…

潮玩宇宙Dapp游戏:密室大逃杀的魅力探索

在潮玩宇宙这片充满创意与激情的虚拟世界中,一款名为“密室大逃杀”的Dapp游戏凭借其独特的玩法和紧张刺激的氛围,迅速成为了玩家们热衷的焦点。这款游戏不仅融合了传统的密室逃脱元素,还巧妙地结合了区块链技术,为玩家带来了全新…

docker不删除容器更改其挂载目录

场景:docker搭建的jenkins通常需要配置很多开发环境,当要更换挂载目录,每次都需要删除容器重新运行,不在挂载目录的环境通常不会保留。 先给一个参考博客docker不删除容器,修改容器挂载或其他_jenkins 修改容器挂载do…

linux中最常用的文件管理命令

linux中最常用的文件管理命令 linux中最常用的文件管理命令最常用的且没有之一的 ls命令格式不加任何参数使用-l显示更多细节使用-t按照时间排序使用-r按照时间逆序使用-S根据文件大小排序 查看庐山真面貌的cat实例 :简单显示内容实例 :显示行号 -n实例 …

React 其他 Hooks

其他 Hooks useRef 可用于获取 DOM 元素 const ScrollRef useRef(null)ScrollRef.current useContext (先回顾一下之前的 Context 知识,借用之前 ppt 和源码) Hooks 中使用 useContext 来获取 context 的值 // 父组件创建 contextexpor…

20232801 2023-2024-2 《网络攻防实践》实践十一报告

#20232801 2023-2024-2 《网络攻防实践》实践十一报告 1.实践内容 (1)web浏览器渗透攻击 使用攻击机和Windows靶机进行浏览器渗透攻击实验,体验网页木马构造及实施浏览器攻击的实际过程。 (2)取证分析实践—网页木马…

抖音运营_抖音推荐算法的机制

目录 一 抖音流量推荐算法机制 二 4大关键指标 三 完播率 1 黄金3秒 2 内容严谨 3 期待感 4 用户痛点 5 通俗易懂 四 转发量 1 分享需求 2 分享快乐 3 共情表达 4 正义传播 五 评论量 1 话题性 2 争议性 3 参与感 4 评论回评 六 点赞量 1 情感共鸣 2 用户喜…

【Flutter】AppBar、TabBar和TabBarView

🔥 本文由 程序喵正在路上 原创,CSDN首发! 💖 系列专栏:Flutter学习 🌠 首发时间:2024年5月26日 🦋 欢迎关注🖱点赞👍收藏🌟留言🐾 目…

FTP协议——BFTPD基本操作(Ubuntu+Win)

1、描述 本机(Win10)与虚拟机(Ubuntu22.04.4)上的BFTPD服务器建立FTP连接,执行一些基本操作。BFTPD安装教程:FTP协议——BFTPD安装(Linux)-CSDN博客 2、 步骤 启动BFTPD。启动文件…

Python文件操作(Excel、PDF、XML、Word)

大家好,在现代数据驱动的世界中,对于数据的处理和管理是至关重要的。Python作为一种强大而灵活的编程语言,提供了丰富的工具和库来处理各种文件格式。本文将探讨Python中的文件操作,重点介绍如何使用Python处理Excel、PDF、XML和W…

RabbitMQ最全使用教程-小白也能看懂

1、队列: 点对点的通信(point - to - point): 消息发送者发送消息,消息代理将其放入到一个队列中,消息接收者从队列中获取消息内容,消息读取后被移除出队列。 2、主题: 发布publish/订阅subscribe 消息通信: 发布者发送消息到主题,多个接收者(订阅者)订阅…

装备制造项目管理软件:奥博思PowerProject项目管理系统

数字化正逐步改变着制造方式和企业组织模式。某制造企业领导层透露,在采用数字化项目管理模式后,企业的发展韧性更加强劲,构筑起了竞争新优势,企业产品研制周期缩短25%,生产效率提升18%。 随着全球经济的发展&#xf…

简单好用的文本识别方法--付费的好用,免费的更有性价比

文章目录 先说付费的进入真题,免费的来喏!PixPin微信 先说付费的 直达网址!!! 进入真题,免费的来喏! PixPin 商店里就有 使用示例: 可以看到:贴在桌面上的图片可以复制图片中的文字,真的很…