TIDB-PD概念

概念

store:對(duì)應(yīng)存儲(chǔ)節(jié)點(diǎn),這里的節(jié)點(diǎn)指的是TIKV實(shí)例,不是物理主機(jī)

peer/region/raft group:region是集群內(nèi)部的一段連續(xù)數(shù)據(jù),也是調(diào)度的最小單位,默認(rèn)96M。每一份數(shù)據(jù)會(huì)有三個(gè)不同的副本,每一個(gè)副本就是一個(gè)peer,這三個(gè)副本就構(gòu)成了一個(gè)region的raft group。對(duì)于region來(lái)說(shuō),我們會(huì)把所有的key按照字節(jié)進(jìn)行排序,排序過(guò)后會(huì)產(chǎn)生一個(gè)大大的sort map,然后對(duì)著一個(gè)大大的sort map進(jìn)行拆分,把大的sort map拆分成為一個(gè)個(gè)的region。

leader/follower/learner:對(duì)應(yīng)region的三種不同角色,leader負(fù)責(zé)對(duì)外提供讀寫服務(wù),follower從leader處通過(guò)raft協(xié)議同步數(shù)據(jù),learer是一種特殊的角色,不參與投票

region split:region的分裂,比如在對(duì)表從mysql同步到tidb的時(shí)候涉及到對(duì)表的大量insert操作,這個(gè)時(shí)候region的分裂會(huì)影響導(dǎo)入的速度,可以通過(guò)tidb Lightning提高處理速度。

pending/down:對(duì)于region的特殊狀態(tài),pending狀態(tài)表示與leader 的數(shù)據(jù)差異較大,不能被選舉。長(zhǎng)時(shí)間沒(méi)有收到對(duì)應(yīng)peer的信息那么peer的狀態(tài)就會(huì)被標(biāo)記為down

scheduler:調(diào)度策略,主要有balance-leader-scheduler/balance-region-scheduler/hot-region-scheduler和evict-leader-scheduler。

調(diào)度流程

? ? 對(duì)region進(jìn)行調(diào)度一般有信息收集、生成調(diào)度、執(zhí)行調(diào)度三個(gè)流程

? ? 信息收集,主要是通過(guò)tikv周期性發(fā)送給PD的心跳信息來(lái)獲取,心跳有兩種一種是storeheart記錄了store的容量、空閑空間、流量等等信息;另外一種是region heartbeat記錄了region層面的信息。

? ? 生成調(diào)度,根據(jù)需求(比如具體的調(diào)度策略是leader優(yōu)先還是region優(yōu)先)、限制和從PD采集的信息,綜合分析后生成調(diào)度計(jì)劃,這里提到的限制主要有不選擇狀態(tài)異常的副本、pending狀態(tài)的不能作為leader、不直接干掉leader等等~~~

? ? 執(zhí)行調(diào)度,在調(diào)度被生成之后剩下的就是對(duì)調(diào)度的執(zhí)行了,在執(zhí)行對(duì)應(yīng)的operation的時(shí)候是不會(huì)直接執(zhí)行的,而是先放入到執(zhí)行等待隊(duì)列里面,然后用一定的并發(fā)去執(zhí)行。

關(guān)于Balance

????Region 負(fù)載均衡調(diào)度主要依賴?balance-leader?和?balance-region?這兩個(gè)調(diào)度器,雖然說(shuō)他們兩者的目的都是把region調(diào)度走,讓region的分布變得合理,但是兩個(gè)調(diào)度的側(cè)重點(diǎn)是不一樣的,前者更加關(guān)心對(duì)負(fù)載的分布,希望將leader分開(kāi)以便于分散客戶端的讀寫壓力,但是后者則側(cè)重于對(duì)存儲(chǔ)空間的分配,大家都存一樣多的數(shù)據(jù)才是王道,這兩個(gè)的側(cè)重點(diǎn)不一樣。不管是哪一種調(diào)度器,都是具有對(duì)region的打分實(shí)現(xiàn),比如說(shuō)對(duì)于balance-leader的打分算法就較為簡(jiǎn)單,就是通過(guò)對(duì)leader的size(注意是size,不是count)打分實(shí)現(xiàn)的。

????當(dāng)然,在打分的過(guò)程中是肯定可以調(diào)整權(quán)重的,可以通過(guò)設(shè)置region或者主機(jī)的權(quán)重控制對(duì)region的調(diào)度。

關(guān)于集群拓?fù)涓兄?/h1>

? ? 為什么要感知?為了通過(guò)調(diào)度使不同 Region 的各個(gè)副本盡可能分散,保證高可用和容災(zāi)。

? ? 怎么感知?主要還是通過(guò)pd在后臺(tái)不斷的對(duì)region做掃描分析來(lái)實(shí)現(xiàn)對(duì)region拓?fù)涞母兄?/p>

? ? 誰(shuí)去做?負(fù)責(zé)這個(gè)工作的組件叫做replicachecker,它的作用就是去分析region的拓?fù)錉顟B(tài),但是他依賴于lcation-lables這個(gè)變量的配置。

region狀態(tài)指標(biāo)和查詢

operation狀態(tài)指標(biāo)

? ? scheduler operaction create:operation創(chuàng)建的情況

? ? operation finish duration:OP的耗時(shí)情況

? ? operation step duration,op中不同操作的耗時(shí)情況

? ? 要查看這些指標(biāo)可以在grafana或者通過(guò)operater show的方式進(jìn)行查看。

balance狀態(tài)指標(biāo)?

????Store Leader/Region score:展示每個(gè) Store 的得分

????Store Leader/Region count:展示每個(gè) Store 的 Leader/Region 數(shù)量

????Store available:展示每個(gè) Store 的剩余空間

? ? 查看這些指標(biāo)依然可以通過(guò)grafana-->PD-->statistics-->balance頁(yè)面做查看

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容