<span id="l42vo"></span>
<progress id="l42vo"><big id="l42vo"></big></progress>
  • <th id="l42vo"></th>
    <rp id="l42vo"></rp>
    <em id="l42vo"><strike id="l42vo"></strike></em>
    <li id="l42vo"></li>
    <label id="l42vo"><object id="l42vo"><input id="l42vo"></input></object></label>
  • 教育行業A股IPO第一股(股票代碼 003032)

    全國咨詢/投訴熱線:400-618-4000

    TiDB為什么要進行調度?調度的基本需求是什么?

    更新時間:2021年10月21日16時53分 來源:傳智教育 瀏覽次數:

    好口碑IT培訓

      TiKV 集群是 TiDB 數據庫的分布式 KV 存儲引擎,數據以 Region 為單位進行復制和管理,每個 Region 會有多個 Replica(副本),這些 Replica 會分布在不同的 TiKV 節點上,其中 Leader 負責讀/寫,Follower 負責同步 Leader 發來的 raft log。了解了這些信息后,請思考下面這些問題:

      • 如何保證同一個 Region 的多個 Replica 分布在不同的節點上?更進一步,如果在一臺機器上啟動多個 TiKV 實例,會有什么問題?

      • TiKV 集群進行跨機房部署用于容災的時候,如何保證一個機房掉線,不會丟失 Raft Group 的多個 Replica?

      • 添加一個節點進入 TiKV 集群之后,如何將集群中其他節點上的數據搬過來?

      • 當一個節點掉線時,會出現什么問題?整個集群需要做什么事情?如果節點只是短暫掉線(重啟服務),那么如何處理?如果節點是長時間掉線(磁盤故障,數據全部丟失),需要如何處理?

      • 假設集群需要每個 Raft Group 有 N 個副本,那么對于單個 Raft Group 來說,Replica 數量可能會不夠多(例如節點掉線,失去副本),也可能會過于多(例如掉線的節點又回復正常,自動加入集群)。那么如何調節 Replica 個數?

      • 讀/寫都是通過 Leader 進行,如果 Leader 只集中在少量節點上,會對集群有什么影響?

      • 并不是所有的 Region 都被頻繁的訪問,可能訪問熱點只在少數幾個 Region,這個時候我們需要做什么?

      • 集群在做負載均衡的時候,往往需要搬遷數據,這種數據的遷移會不會占用大量的網絡帶寬、磁盤 IO 以及 CPU?進而影響在線服務?

      這些問題單獨拿出可能都能找到簡單的解決方案,但是混雜在一起,就不太好解決。有的問題貌似只需要考慮單個 Raft Group 內部的情況,比如根據副本數量是否足夠多來決定是否需要添加副本。但是實際上這個副本添加在哪里,是需要考慮全局的信息。整個系統也是在動態變化,Region 分裂、節點加入、節點失效、訪問熱點變化等情況會不斷發生,整個調度系統也需要在動態中不斷向最優狀態前進,如果沒有一個掌握全局信息,可以對全局進行調度,并且可以配置的組件,就很難滿足這些需求。因此我們需要一個中心節點,來對系統的整體狀況進行把控和調整,所以有了 PD 這個模塊。

      調度的基本需求:

      上面羅列了一大堆問題,我們先進行分類和整理??傮w來看,問題有兩大類:

      1.作為一個分布式高可用存儲系統,必須滿足的需求,包括四種:

      • 副本數量不能多也不能少

      • 副本需要分布在不同的機器上

      • 新加節點后,可以將其他節點上的副本遷移過來

      • 節點下線后,需要將該節點的數據遷移走

      2.作為一個良好的分布式系統,需要優化的地方,包括:

      • 維持整個集群的 Leader 分布均勻

      • 維持每個節點的儲存容量均勻

      • 維持訪問熱點分布均勻

      • 控制 Balance 的速度,避免影響在線服務

      • 管理節點狀態,包括手動上線/下線節點,以及自動下線失效節點

      滿足第一類需求后,整個系統將具備多副本容錯、動態擴容/縮容、容忍節點掉線以及自動錯誤恢復的功能。

      滿足第二類需求后,可以使得整體系統的負載更加均勻、且可以方便的管理。

      為了滿足這些需求,首先我們需要收集足夠的信息,比如每個節點的狀態、每個 Raft Group 的信息、業務訪問操作的統計等;

      其次需要設置一些策略,PD 根據這些信息以及調度的策略,制定出盡量滿足前面所述需求的調度計劃;最后需要一些基本的操作,來完成調度計劃。






    猜你喜歡:

    什么是TiDB數據庫?數據管理技術的發展

    TiDB的核心特性是什么?

    Oozie是什么?Oozie架構和基本原理介紹

    傳智教育python+大數據開發培訓

    0 分享到:
    中文字幕手机在线看片不卡