【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,代表副本的分布

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

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

相关文章

学习Maven Web 应用

Maven Web 应用 本章节我们将学习如何使用版本控制系统 Maven 来管理一个基于 web 的项目,如何创建、构建、部署已经运行一个 web 应用。 创建 Web 应用 我们可以使用 maven-archetype-webapp 插件来创建一个简单的 Java web 应用。 打开命令控制台,…

数据库应用:Redis安装部署

目录 一、理论 1.缓存 2.关系型数据库与非关系型数据库 3.Redis 4.Redis安装部署 5.Redis命令工具 6.Redis数据库常用命令 7.Redis多数据库操作 二、实验 1.Redis安装部署 2.Redis命令工具 3.Redis数据库命令 4.Redis多数据库操作 三、问题 1.RESP连接CentOS 7 R…

【单片机】温控系统参数辨识及单片机PID控制

温控系统参数辨识及单片机PID控制 1. 温控系统组成2. matlab辨识系统参数2.1 采集阶跃响应信号导入matlab系统辨识模块 PID控制 1. 温控系统组成 半导体制冷片正向通电制冷,反向通电制热。系统采用半导体制冷片(帕尔贴)作为执行单元&#xf…

微信小程序 样式和全局配置

WXSS wxss 把屏幕分为750个物理像素,大屏大,小屏小,随着设备不一致自动适配 推荐使用iPhone6作为标准,1个rpx 0.5个px,把px乘以2就是rpx的参数 import 导入外部样式表 import /common/common.wxss 样式 权重一…

Vue2 第四节 计算属性,监视属性

1.计算属性 2.监视属性 3.计算属性与监视属性之间的关系 一.计算属性 定义:要用的属性不存在,要通过已有属性计算得来原理:底层借助了Object.defineproperty方法提供的getter和setterget函数什么时候会执行:初次读取的时候会执…

day47-SSM分页

SSM分页(增删改查登录注册) applicationContext.xml中加入mybatis-config.xml路径 mybatis-config.xml Mapper接口 Service接口及其实现类 Mapper.xml page.jsp personDetail.jsp addPerson.jsp updatePerson.jsp login.jsp regist…

搭建自己的Git服务器

环境 服务端:Ubuntu 22.04 客户端:Win11_x64 前提条件:需要确保在Windows机器上能够ping通Ubuntu服务器, 并且服务端与客户端均已安装了Git软件 服务端上的配置操作 以Ubuntu服务器作为Git服务端的运行环境,并方便后期免密推…

如何做好IT类的技术面试

目录 一、IT行业的招聘渠道 二、如何做好技术面试官 三、谈谈IT行业如何做好招聘工作 四、面试IT公司的小技巧 五、面试有哪些常见的问题 六、关于面试的一些建议 面试可能是我们每个人都必须会遇到的事情,而技术面试更具有专业性,以下会从几个方面…

openGauss学习笔记-23 openGauss 简单数据管理-时间/日期函数和操作符

文章目录 openGauss学习笔记-23 openGauss 简单数据管理-时间/日期函数和操作符23.1 时间日期操作符23.2 时间/日期函数23.3 TIMESTAMPDIFF23.4 EXTRACT23.5 date_part openGauss学习笔记-23 openGauss 简单数据管理-时间/日期函数和操作符 23.1 时间日期操作符 用户在使用时…

【Java 高频面试闯关秘籍】大梦谁先觉,平生我自知

一、mysql使用innodb引擎,请简述mysql索引的最左前缀如何优化orderby语句? 关键点: (1)如果排序字段不在索引列上,filesort有两种算法:mysql就要启动双路排序和单路排序 (2&#x…

解决分类任务中数据倾斜问题

大家好,在处理文本分类任务时,基准测试流行的自然语言处理架构的性能是建立对可用选项的理解的重要步骤。在这里,本文将深入探讨与分类相关的最常见的挑战之一——数据倾斜。如果你曾经将机器学习(ML)应用于真实世界的…

VS+QT+PCL点云显示转网格表面体窗体实现

程序示例精选 VSQTPCL点云显示转网格表面体窗体实现 如需安装运行环境或远程调试&#xff0c;见文章底部个人QQ名片&#xff0c;由专业技术人员远程协助&#xff01; 前言 这篇博客针对<<VSQTPCL点云显示转网格表面体窗体实现>>编写代码&#xff0c;代码整洁&…

watch避坑,使用computed进行处理数据

业务场景&#xff1a;在vue中监听el-input 中的字数有没有超过60&#xff0c;如果超过60字时将60后面的字变为 “>>” 符号&#xff0c;以此实现预览苹果手机推送摘要场景。 错误&#xff1a;开始的逻辑是使用watch监听&#xff0c;检查length超过60直接 加上符号&#x…

python 网络编程

TCP编程 客户端 创建TCP连接时&#xff0c;主动发起连接的叫做客户端&#xff0c;被动响应的叫做服务端。当定义一个Socket表示打开一个网络连接&#xff0c;创建一个Socket需要知道目标计算机的IP地址和端口号和对应的协议类型。 # 导入socket库: import socket# 创建一个s…

基于MSP432P401R爬坡小车【2020年电赛C题】

文章目录 一、任务清单1. 硬件部分2. 软件部分 二、OpenMV巡线三、舵机转向四、停止线识别五、技术交流 一、任务清单 1. 硬件部分 主控板&#xff1a; MSP432P401R数据显示&#xff1a; OLED电机&#xff1a; 霍尔编码器电机电池&#xff1a; 7.3V航模电池巡线&#xff1a; …

idea 里 controller service impl mapper xml 切换跳转快捷键

首先在controller层&#xff0c;对着接口点方法的方法上按着ctrl和鼠标左键&#xff0c;你会进入service层。 对着方法ctrlaltb不按鼠标&#xff0c;你会进入impl层。service层的方法上按ctrl和鼠标左键会回到controller&#xff0c;ctrlaltb不按鼠标也会进入到impl层,impl上的…

[Linux]线程基本知识

概念 进程 一个正在执行的程序&#xff0c;它是资源分配的最小单位 进程中的事情需要按照一定的顺序逐个进行 进程出现了很多弊端: 一是由于进程是资源拥有者&#xff0c;创建、撤消与切换存在较大的时空开销&#xff0c;因此需要引入轻型进程&#xff1b; 二是由于对称多…

C++:类和对象(下)---对类和对象深入一些的理解

文章目录 构造函数&#xff1f;初始化列表explicit关键字 匿名对象 构造函数&#xff1f; 初始化列表 前面已然介绍过构造函数&#xff0c;但并未完全结束&#xff0c;构造函数有很多种写法&#xff0c;有带缺省参数的&#xff0c;有全缺省的&#xff0c;不带缺省参数的…但用…

Linux下查找python路径

本地目前装了几个版本的python&#xff0c;这里记录下查找python路径的方法。 1&#xff1a;whereis命令 whereis python2&#xff1a;which命令 which python与whereis相似&#xff0c;但which会返回第一个找到的执行文件的位置。 3&#xff1a;find命令 find命令可以搜索系…

web流程自动化详解

今天给大家带来Selenium的相关解释操作 一、Selenium Selenium是一个用于自动化Web浏览器操作的开源工具和框架。它提供了一组API&#xff08;应用程序接口&#xff09;&#xff0c;可以让开发人员使用多种编程语言&#xff08;如Java、Python、C#等&#xff09;编写测试脚本&…