Placement Driver

目录

PD架构

路由功能

TSO分配

时间窗口

调度

Label

例题


PD架构

PD由至少三个节点组成,并集成了ETCD,支持自动故障转移,无需担心单点故障 ;同时ETCD raft 保证数据一致性

三个PD节点中有一个leader,当leader出故障时根据raft协议重新选举

ps:*PD代表为PD leader(*标识leader)

store:集群中的的储存节点(一个TiKV node中有多个store,一个store中有多个region)
peer:region的副本,包括leader和follower

ps:region负责集群中一段连续是数据

元数据储存,用于相应数据的查找(对应的leader region在哪一个TiKV node上) 级调度region在TiKV上的分布,缓解热点

路由功能

当Executer收到SQL时,向TiKV Client发起请求,有TiKV Client向PD获取相关数据的位置(路由信息)

TSO分配

TSO=物理时间 physical time + 逻辑时间 logical time (不能交换顺序)

TSO是一个int64类型的数据,包括物理时间和逻辑时间

  • 物理时间 physical time:以毫秒为单位
  • 逻辑时间 logical time:将1ms分成262144个TSO

tsFuture:用于标识什么时刻请求TSO
tsFuture.wait:等待PD client从PD返回TSO

整个过程是一个异步过程

当SQL到达并向PD Client发起TSO请求,首先PD Client返回tsFuture对象(用于标识什么时刻请求TSO),同时PD Client向PD请求TSO,而SQL进入解析编译阶段;当解析编译完成,若TSO为分配,调用tsFuture.wait方法(等待PD client从PD返回TSO),直到从PD Client获取TSO

总结:

PD Client具有批处理功能用于为多个事务或SQL分配TSO

TiKV Client内的region cache用于缓存最近访问的region位置

时间窗口

时间窗口机制用于防止会话过多时PD生成过多TSO对持久化存储造成负担,导致IO瓶颈

一次分配一段时间的TSO,将一段时间的TSO放入缓存中

如图leader PD为三个会话分配了3s的TSO,此时也只需向PD存储一次

若PD leader宕机,raft选取新的leader;而原leader缓存丢失,只能重新开始下一段时间的tso分配

如上图,每次分配3s的TSO,下一次为703-706,若此时PD leader,而新的PD收到请求TSO,则在706-709中分配,故PD发出的TSO只会递增不会递减

调度

TiKV node和region每隔一段时间向PD发出心跳,PD根据心跳信息进行调度

  • Store Heartbeat:来自存储阶段TiKV node的心跳,含有region分布等信息
  • Region Heartbeat:来自存储阶段region的心跳,含有访问频率等信息

Balance Leader:读写均衡

Balance Region:存储均衡 

Hot region:可能热点region将其split成多个region发布在其他TiKV node,缓解热点
Region merge:合并过小的region,减小负载

Label

假设:DC代表数据中心,Rack代表机柜

其中假设Rack 4或DC 2不可用将导致整个Region 1不可用

同理,假设DC 1不可用,将导致Region 2不可用

(3副本情况下,如果副本中两个(超过一半的)region不可用则导致整个region不可用)

location-labels设置label层级,如图有三层,zone,rack,host

ps:location-labels中设置的label与现实中的物理设备没有直接联系,如根据配置Zone既可以代表机柜,也可以代表一个TiKV节点

isolation-level设置隔离级别,如图中设置隔离基本为zone,则region副本不应在同一个zone层上

server.label是设置存储单元的label,如上图中TiKV的labels为zone=1(1号数据中心),rack=1(1号机柜),host=1(1号服务器)

例题

1.下列关于PD (Placement Driver)架构和功能正确的是?

A.访问PD集群中的任何一个节点都可以获得TSO

B.TiKV会周期性地向PD上报状态

C.PD会周期性地查询TikV的状态,不需要TiKV上报,目的是为了高效

D.PD的调度功能只能平衡region的分布,无法对leader进行调度

答案:B

解析:A:只有访问作为leader的PD才能获取TSO;C:TiKV和Region

会周期性的发出含有自身状态的心跳给PD,而不是PD主动查询;D:PD的平衡包括region和leader

2.关于label,下列说法不正确的是?

A. label的本质是个调度系统,可以人为控制region副本的存放位置

B. label需要在PD和TiKV上进行配置

C. isolation-level要和数据中心(DC)对应,这样可以获得最大的可用性

D.如果某个region的所有副本不可用,有可能造成整个TiDB数据库不可用

答案: C

解析:A:label的机制就是将region分散化,避免集中存储,较低数据丢失的风险;B:label需要在TiKV(server.label)和PD(location-labels和isolation-level)上配置;C:isolation-level的设置应根据实际情况设定;D:如果该region存储元数据,例如数据库的用户名,密码等,则有可能造成整个TiDB数据库不可用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值