【TiDB理论知识06】PD架构与作用

目录

一 PD的架构与功能

PD架构

PD作用 

名词解释

路由功能

二 TSO的分配

概念

分配过程

性能问题

高可用问题

三 PD的调度原理

总流程

1 信息收集

 2 生成调度

3 执行调度

四 Label的作用

Label的配置

给TiKV打标签

PD配置


一 PD的架构与功能

PD架构

PD集群至少由三个节点构成,PD通过集成了etcd支持自动故障转移,PD 通过etcd的raft保障数据的强一致性,所以在生产中建议奇数个。PD中会有leader角色,其实是个单点,只有在发生故障的时候才会发生选举。PD是TiDB数据库的总控,是整个集群的大脑

PD作用 

1 元数据的存储,,tidb的执行计划或者SQL语句他怎么知道去哪个Region中找到相应的数据,哪个region存储在哪个TiKV中

2 全局时钟 ,查询开始,事务开始结束的时间都是由PD授时

3 对Region进行调度,例如某些TiKV的Region较多,产生了热点,需要向其他TiKV进行调度

名词解释

Store :对应TiKV 实例,同一个服务器上部署多个TiKV,则这个服务器上有多个store。

Region:每个Region负责存储集群一段连续的数据默认96M.没份数据会在不同的TIKV存储多个副本,默认是3副本,每个副本叫peer,peer是有角色的,peer也特指raft中的成员

leader :读写都在leader上

follower:

raft Group :通过raft协议构成raft Group

multi Raft: 多个raft组构成multi Raft

以上就是PD需要管理的重要的一些概念

路由功能

路由功能,执行SQL的时候 ,SQL想要读取的数据所在的Leader Region在哪个TiKV上,是需要问PD的。TiDB server生成执行计划,传到Executor 执行器,然后执行器去执行执行计划,例如此时需要读取key=123,存储在region1 上的数据,TIKV Client 就是会去PD中问,PD 告诉这个Key的位置。

如果每次查询都要去PD中查询region的位置,难免会产生很多的网络开销,网络压力太大了,就会把key=123的位置从PD中取出来,然后缓存在TiKV Client的 Region Cache中。下次再读取就不用从PD中读取。但是这种方法虽然节约了网络开销,但如果key=123数据所在的Region发生了漂移,此时按cache中的位置去读,就会找不到数据,需要重新从PD中取出来 ,这种现象叫做 Back Off。back off 越多,读取的延迟越多。或者Region分裂,Leader的信息过旧等都会产生BackOff

二 TSO的分配

概念

需要为大量的事务提供TSO,事务都是并发的

保证TSO单调递增

TSO = physical time logical  time ,是一个int64的整型数,时钟精确到毫秒,logical  time  1ms分成 262144个TSO ,这个可以满足大多数场景的使用了

分配过程

 为我们提供服务的只是PD集群的中的Leader 角色。

谁会请求TSO ,SQL,事务等。

TSO 请求者 请求TSO ,并不是直接发送到PD,而是到 PD client 。PD client 可以认为是 TiDB Server  和  PD 集群交互的中间代理模块。

性能问题

如果SQL并发很高 ,所以有一个优化 ,PD client 会有一个批处理,会把100个SQL请求TSO的组合整一个请求,去PD中获取TSO。

无论是批处理还是,申请一次都需要进行一次持久化,会产生磁盘IO,并发越高 ,磁盘IO越大。如何处理了这个问题?

将一段TSO放到缓存中 磁盘IO 变为3秒一次

高可用问题

当我的PD leader挂了怎么办?

保证不了连续性 但是可以保证增长性

三 PD的调度原理

总流程

1 信息收集

TiKV  Server 会周期性的向PD汇报心跳信息,里面包含Store Heartbeat (TiKV 本身的心跳信息 ,包括 容量,剩余空间,读写流量等,通过这些信息大概可以知道TiKV的繁忙程度)和 Region Heartbeat  (每个Region都会向PD汇报 ,比如副本的分布状态 ,读写流量,这样就可以知道Region的繁忙程度 以及 Region在TiKV的分布是否均匀),所以PD是通过心跳的信息收集获取这些信息

 2 生成调度

根据收集到的信息 生成Operator

  •  均衡:读写均衡 ,存储均衡
  • 热点均衡
  • 集群拓扑
  • 缩容
  • 故障恢复 
  • Region merge

3 执行调度

将这些调度发送给region,然后执行这些调度

四 Label的作用

 DC: 数据中心

Rock 机柜

TIKV 服务器

看上面的图 发现不同的region分布对可用性是有影响的,比如上图中的Rock 4机柜损坏后,region1的两个副本不可用。

region不可用这么可怕吗?是的 比如某个region中存储了集群的元数据信息 information_schema,用户密码等,导致整个数据库不可用。

默认region是随机分布,PD只能保证同一个TiKV节点上不会有同一个region的两个Peer,但是不能保证region的分布。那如如何让region按自己的意愿分配呢?

通过打标签,为每个TiKV 实例设置一个标签 Label,用于表示这个TiKV在哪个机房,哪个机柜,哪个服务器上,这样PD 就会按照标签约定好的方式将Region分布到不同DC、不同机柜、不同的TiKV上。实际上我的标签是为了让PD 去感知集群的拓扑结构的。

Label的配置

Label的配置是要在两个组件上进行配置

给TiKV打标签

server.lables:{zone:"1",rack:"1",host:"1"}

zone代表DC 数据中心; rack 代表机柜 ;host代表服务器

PD配置

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

[replication]

isolation-level=''zone'

隔离级别设置 :zone,rack,host,代表副本的分布

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

GPT-4 模型详细教程

GPT-4(Generative Pretrained Transformer 4)是 OpenAI 的最新语言生成模型,其在各类文本生成任务中表现优秀,深受开发者和研究者喜爱。这篇教程将帮助你理解 GPT-4 的基本概念,并向你展示如何使用它来生成文本。 什么…

二叉树详解

这里写目录标题 前言树型结构(了解)树常见的概念树的表示形式(了解)树的应用 二叉树概念两种特殊的二叉树二叉树的性质(重要)二叉树的存储二叉树的基本操作 前言 本篇博客讲述了以下几个知识点 树的基本概念二叉树概念及特性二叉树的基本操作 树型结构…

DevExpress WPF Tree List组件,让数据可视化程度更高!(一)

DevExpress WPF Tree List组件是一个功能齐全、数据感知的TreeView-ListView混合体,可以把数据信息显示为REE、GRID或两者的组合,在数据绑定或非绑定模式下,具有完整的数据编辑支持。 DevExpress WPF 拥有120个控件和库,将帮助您…

一遍过JavaSE基础知识

文章目录 前言安装Java Development Kit (JDK)安装jdk配置开发环境验证是否安装配置成功 编写第一个Java程序hello world运行Java程序的流程 数据类型和变量数据类型变量 程序逻辑控制条件语句循环语句跳转语句 数组声明和创建数组访问数组元素数组长度遍历数组多维数组 面向对…

【亲测可用】Linux上安装Redis教程

一、下载并解压Redis 1、执行下面的命令下载redis: wget https://download.redis.io/releases/redis-6.2.6.tar.gz 2、解压redis: tar xzf redis-6.2.6.tar.gz 3、移动redis目录,一般都会将redis目录放置到 /usr/local/redis目录&#xff1a…

excel 生成sql技巧

"update 表名 set 字段名"&A2&" where 字段名"&B2&";"

Log4j源码解析

Log4j源码解析 主要流程 Logger logger Logger.getLogger(Main.class); 1、通过Logger.getLogger(Class clazz) 或 Logger.getLogger(String name)进入。 2、加载LogManager进jvm, 执行静态代码块执行初始化, 创建出RepositorySelector实例及LoggerRepository实例(Hierarchy…

ansible自动化运维(二)剧本、角色编写实战

😘作者简介:一名运维工作人员。 👊宣言:人生就是B(birth)和D(death)之间的C(choise),做好每一个选择。 🙏创作不易,动动小…

【学习篇】SAE J1939协议—常用到的知识点

前言:以下关于SAE J1939协议知识点的学习均抄录自书籍,侵权请联系删除。 故障诊断 SAE J1939诊断应用层定义了用于诊断服务的报文帧,诊断报文(DM)提供了用于车辆进行诊断和维修的功能。 诊断故障代码定义 SAE J193…

C语言每日一题:5.至少是其他数字的两倍+两个数组的交集。

第一题:至少是两倍其他数字的最大数 第一题: 思路一: 1.需要我们返回最大数值的下标,所以先循环遍历我们的这个数组记录一下最大的数值和下标位置。 2.使用qsort排序(总是存在唯一的最大整数) 3所以排序之…

Java编程实现遍历两个MAC地址之间所有MAC的方法

Java编程实现遍历两个MAC地址之间所有MAC的方法 本文实例讲述了java编程实现遍历两个MAC地址之间所有MAC的方法。分享给大家供大http://家参考,具体如下: 在对发放的设备进行后台管理时,很多时候会用到设备MAC这个字段,它可以标识唯一一个设备。然而在数…

安全渗透--正则表达式

什么是正则表达式? 正则表达式是一组由字母和符号组成的特殊文本,它可以用来从文本中找出满足你想要的格式的句子。 一个正则表达式是一种从左到右匹配主体字符串的模式。 “Regular expression”这个词比较拗口,我们常使用缩写的术语“regex…

16K个大语言模型的进化树;81个在线可玩的AI游戏;AI提示工程的终极指南;音频Transformers课程 | ShowMeAI日报

👀日报&周刊合集 | 🎡生产力工具与行业应用大全 | 🧡 点赞关注评论拜托啦! 🤖 LLM 进化树升级版!清晰展示 15821 个大语言模型的关系 这张进化图来自于论文 「On the Origin of LLMs: An Evolutionary …

uniapp 微信小程序 预览pdf方法

效果图: 1、在小程序中 // #ifdef MP */ 是区分运行的环境,在小程序中可使用如下方法uni.downloadFile({url: item.link,//文件地址success: function (res) {var filePath res.tempFilePath;uni.openDocument({filePath: filePath,showMenu: false…

spring 存储对象 + 获取对象

前言 本篇在spring中如何使用五大类注释与方法注释将对象加入IOC容器中,了解如何使用注释来获取容器中的Bean对象,如有错误,请在评论区指正,让我们一起交流,共同进步! 文章目录 前言1.通过注释将类加入IoC…

大数据Flink(五十):流式计算简介

文章目录 流式计算简介 一、数据的时效性 二、流式计算和批量计算

260. 只出现一次的数字 III

题目描述: 主要思路: 首先通过抑或的方式可以将所有两个的数字全部排除,得到两个单个数字的异或值。 接下来将当前得到的异或值取最低一位的1。 分析异或值的每一位,为1的肯定是两个数中一个有一个没有。于是可以通过这一特性将两…

【Java编程案例】面向对象实现模拟物流快递系统

文章目录 一、案例目标二、案例分析1. 交通工具类2. 保养接口3. 专用运输车类4. 定位功能接口5. 快递类 三、测试类四、总结 在现代社会,网购已经成为人们生活的重要组成部分。当用户在购物网站中下订单后,订单中的货物经过一系列的流程,最终…

2023十大最牛编程语言排行榜以及各语言的优缺点

文章目录 ⭐️ 2023年7月十大编程语言排行榜⭐️ 十大值得学习编程语言概要🌟 Python🌟 C/C🌟 Java🌟 C#🌟 JavaScript🌟 Swift🌟 Ruby🌟 GO(Golang)&#x1…

ElasticSearch Window Linux部署

文章目录 一、Window 集群部署二、Linux 单节点部署三、Linux 集群部署 一、Window 集群部署 创建 elasticsearch-cluster 文件夹,在内部复制三个elasticsearch服务 修改集群文件目录中每个节点的 config/elasticsearch.yml 配置文件 # -----------------------…