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

目录

一 PD的架构与功能

PD架构

PD作用 

名词解释

路由功能

二 TSO的分配

概念

分配过程

性能问题

高可用问题

三 PD的调度原理

总流程

1 信息收集

 2 生成调度

3 执行调度

四 Label的作用

Label的配置

给TiKV打标签

PD配置


0 PD的架构与功能

PD架构

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

PD作用 

1 整个集群TiKV的元数据存储,TiDB的执行计划或者SQL语句如何知道去哪个Region中找到相应的数据,哪个region存储在哪个TiKV中

2 分配全局ID 和 事务ID  。例如table_id,index_id 事务ID

3 生成全局时间戳TSO 全局时钟 。例如事务开始,查询开始,事务结束的时间都是由PD授时

4  手机集群信息对Region进行调度,例如某些TiKV的Region较多,产生了热点,需要向其他TiKV进行调度

5 提供label,支持高可用

6 提供TIDB Dashboard

名词解释

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

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

leader :读写都在leader上,follower 也可以读 打开follower-read 

follower: leader  通过Raft 协议把日志传输给的Peer

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的信息过旧等都会产生Back Off

二 TSO的分配

概念

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

保证TSO单调递增

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

分配过程

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

谁会请求TSO ,比如 SQL,事务等。我们统称为TSO请求者 。

TSO请求者 向 PD Client  请求TSO。PD client 可以认为是 TiDB Server  和  PD 集群交互的中间代理模块。

TSO请求者请求PD CLient之后,PD CLient 立即返回给请求者一个 tsFuture 对象。标识 何时向PD发送请求。因为TSO在执行SQL的时候才会被用到,执行SQL之前还会经过解析辨析等过程。

PD Client 向 PD请求TSO的并发可能会很高,这个过程可能会有等待或者阻塞,如果一直等待TSO,可能会阻塞后续流程,另外又因为TSO在执行SQL的时候才会被用到,执行SQL之前还会经过解析编译优化等过程。 所以这一步是异步的。

SQL语句经过解析编译之后会调用tsFuture.wait方法,检测是否分配到了 TSO。如果此时PD也分配TSO ,就可以执行SQL了。

如果SQL语句还没完成解析编译,但此时TSO已经分配完成,PD Client就会一直等待看tsFuture.wait被调用,直到解析编译完成了。

性能问题

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

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

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

高可用问题

当我的PD leader挂了怎么办?

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

三 PD的调度原理

总流程

1 信息收集

TiKV  Server会周期性的向PD汇报心跳信息,里面包含:

  1. Store Heartbeat (TiKV 本身的心跳信息 ,包括 容量,剩余空间,读写流量等,通过这些信息大概可以知道TiKV的繁忙程度)
  2.  Region Heartbeat (每个Region都会向PD汇报 ,比如副本的分布状态 ,读写流量,这样就可以知道Region的繁忙程度 以及 Region在TiKV的分布是否均匀)

所以PD是通过心跳的信息收集获取这些信息

 2 生成调度

根据收集到的信息 生成Operator

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

3 执行调度

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

四 Label的作用

DC 数据中心

Rock 机柜

TIKV 服务器

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

DC1不可用后 Region2 不可用。

Region3 分布在不同机房的不同机柜上,是合理的分布方式。

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

TiDB 数据库的计算 | PingCAP 文档中心

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
TiDB(“ Ti”代表Titanium)是一个开源的NewSQL数据库,它支持混合事务处理和分析处理(HTAP)工作负载。它与MySQL兼容,具有水平可伸缩性,强一致性和高可用性。 TiDB特点: 水平可伸缩性 TiDB只需添加新节点即可扩展SQL处理和存储。与仅纵向扩展的传统关系数据库相比,这使基础架构容量规划既简单又更具成本效益。 MySQL兼容语法 TiDB就像它是应用程序的MySQL 5.7服务器一样。您可以继续使用所有现有的MySQL客户端库,并且在许多情况下,您无需在应用程序中更改任何代码行。因为TiDB是从头开始构建的,而不是MySQL分支,所以请查看已知兼容性差异列表。 具有高度一致性的分布式事务 TiDB在内部将表分片为基于范围的小块,我们将其称为“区域”。每个区域的默认大小约为100MiB,并且TiDB在内部使用两阶段提交以确保以事务一致的方式维护区域。 云原生 TiDB旨在在公共,私有或混合云中工作,从而简化了部署,供应,操作和维护。 TiDB的存储层,称为TiKV,成为一个云计算原住民基金会在2018年会员项目TiDB平台的架构还允许SQL处理和存储在一个非常云友好的方式相互独立的缩放。 最小化ETL TiDB旨在支持事务处理(OLTP)和分析处理(OLAP)工作负载。这意味着,尽管您可能传统上已经在MySQL上进行了事务处理,然后将提取,转换和加载(ETL)数据提取到列存储中进行分析处理,但不再需要此步骤。 高可用性 TiDB使用Raft共识算法来确保数据高度可用,并在Raft组中的整个存储中安全地进行复制。如果发生故障,Raft组将自动为故障成员选出新的领导者,并自动修复TiDB集群,而无需任何手动干预。失败和自我修复操作对应用程序也是透明的。
### 回答1: TiDB数据中台开发架构是一种基于分布式数据库TiDB构建的数据中台解决方案。其主要特点是高可靠性、高可扩展性和高性能。 首先,TiDB是一种分布式数据库,具备水平扩展的能力。它可以通过添加新的节点来实现容量和性能的线性扩展,从而满足海量数据的存储和处理需求。这为数据中台的发展提供了坚实的基础。 其次,TiDB采用了一种分布式事务的架构,能够保证数据的一致性和可靠性。在数据中台的应用场景中,不同的业务模块需要进行数据的协同和协作,这就需要一个可靠的事务机制来确保数据的同步和一致性。 另外,TiDB支持多种运算模型,包括关系型数据库的SQL操作和分布式计算的MapReduce操作,满足不同的数据处理需求。这使得数据中台能够灵活地处理结构化和半结构化数据,并进行各种复杂的分析和挖掘。 此外,TiDB还提供了一套完整的数据管理工具,包括数据备份和恢复、监控和调度等功能,帮助用户更好地管理和运维数据中台。这些工具可以帮助用户快速建立和维护数据中台的基础设施,提高开发和运维效率。 总的来说,TiDB数据中台开发架构是一种基于分布式数据库TiDB构建的数据中台解决方案。通过其高可靠性、高可扩展性和高性能的特点,可以满足数据中台在存储和处理海量数据、实现数据协同和协作等方面的需求。同时,TiDB还提供了一套完整的数据管理工具,帮助用户更好地建立和维护数据中台的基础设施。 ### 回答2: TiDB数据中台开发架构是一种基于TiDB分布式数据库的架构,旨在实现数据的集中管理和统一维护。该架构将数据作为核心资源,通过构建数据管道和数据服务来实现数据的高效流转和使用。 首先,TiDB数据中台开发架构包括数据管道模块。这个模块主要负责数据的采集、加工和传输。数据可以来自多个源,包括在线交易系统、传感器设备、第三方数据接口等。通过数据采集组件,将数据实时或批量地收集到中台的数据湖中。然后,通过数据加工组件,将原始数据进行清洗、转换和整合,以满足业务需求。最后,通过数据传输组件,将加工后的数据发送给其他系统或用户。 其次,TiDB数据中台开发架构还包括数据服务模块。这个模块提供了基于中台数据的多种服务,包括数据查询、分析、挖掘和可视化。用户可以通过数据服务组件,根据自己的需求对中台数据进行查询和分析,以获取业务洞察。同时,数据服务还支持数据挖掘算法和机器学习模型的应用,用于进行数据挖掘和预测分析。此外,数据服务还可以将分析结果通过可视化组件展示给用户,以便更直观地理解数据。 最后,TiDB数据中台开发架构还包括数据安全和治理模块。这个模块主要负责数据的安全管理和合规性监控。通过数据安全组件,可以对数据进行权限控制和数据脱敏,以保护数据的安全性。同时,通过治理组件,可以对数据进行数据质量监控、数据血缘追溯和数据合规性检查,以提高数据的管理和使用效率。 总结来说,TiDB数据中台开发架构通过构建数据管道和数据服务,实现了数据的集中管理和统一维护。它以数据为核心,提供了数据的采集、加工、传输和服务等功能,帮助企业更高效地进行数据的管理和应用。 ### 回答3: TiDB数据中台开发架构是指以TiDB为核心,构建一个统一的数据中台平台,通过整合数据资源、提供丰富的功能和服务,支持多种应用场景的数据开发和数据应用。 首先,TiDB是一个分布式的关系型数据库,具有高可用、高性能和强一致性的特点。它能够处理大规模的数据存储和查询需求,并支持水平扩展,能够满足数据中台平台的高并发和大数据量处理的要求。 在TiDB数据中台的架构中,还包含了以下关键组件: 1. 数据接入层:负责将不同数据源的数据导入到TiDB中,如数据仓库、数据湖、实时数据流等。通过提供统一的接入接口和数据转换能力,将数据标准化、去重、清洗等,确保数据的质量和一致性。 2. 数据存储与计算层:包括TiDB、TiKV等核心组件,用于存储和处理数据。TiDB采用分布式的架构,将数据分片存储在多个TiKV节点上,通过Raft协议实现数据的分布式一致性。同时,TiDB还支持分布式事务和弹性伸缩,提供了强大的数据处理能力。 3. 数据服务层:提供丰富的数据服务和功能,比如数据查询、数据分析、数据挖掘等。通过对外暴露接口和提供标准化的数据模型,支持多种应用场景的数据开发和数据应用。 4. 数据治理层:用于管理和监控数据资源,包括数据质量、数据安全、数据准入等。通过数据治理策略和规则,确保数据的合规性和安全性。 5. 数据应用层:支持各种数据应用的开发和部署,包括数据可视化、数据报表、数据分析平台等。通过与其他工具和平台的集成,提供全面的数据解决方案。 总的来说,TiDB数据中台开发架构通过整合数据资源、提供丰富的功能和服务,实现了对数据的有效管理和利用。它具有高可用、高性能和强一致性的特点,能够支持多种应用场景的数据开发和数据应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DBA之路

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值