<ul id="qxxfc"><fieldset id="qxxfc"><tr id="qxxfc"></tr></fieldset></ul>


        因為數據磁盤問題,最近進行了更換庫,所以決定寫關于這方面的專題的博客,博客信息參考的官方文檔。

      一、分布式數據庫使用背景

        隨著互聯網的飛速發(fā)展,業(yè)務量可能在短短的時間內爆發(fā)式地增長,對應的數據量可能快速地從幾百 GB 漲到幾百個
      TB,傳統(tǒng)的單機數據庫提供的服務,在系統(tǒng)的可擴展性、性價比方面已經不再適用。比如MySQL數據庫,缺點是沒法做到水平擴展。MySQL
      要想能做到水平擴展,唯一的方法就業(yè)務層的分庫分表或者使用中間件等方案。但是,這些中間層方案也有很大局限性,執(zhí)行計劃不是最優(yōu),分布式事務,跨節(jié)點
      join,擴容復雜等。

      二、分布式數據庫TiDB簡介

        TiDB 是 PingCAP 公司設計的開源分布式 HTAP (Hybrid Transactional and Analytical
      Processing) 數據庫,結合了傳統(tǒng)的 RDBMS 和 NoSQL 的最佳特性。TiDB 兼容
      MySQL,支持無限的水平擴展,具備強一致性和高可用性。TiDB 的目標是為 OLTP (Online Transactional Processing) 和
      OLAP (Online Analytical Processing) 場景提供一站式的解決方案。。

      TiDB 具備如下特性:

      * 高度兼容 MySQL
        大多數情況下,無需修改代碼即可從 MySQL 輕松遷移至 TiDB,分庫分表后的 MySQL 集群亦可通過 TiDB 工具進行實時遷移。

      * 水平彈性擴展
        通過簡單地增加新節(jié)點即可實現 TiDB 的水平擴展,按需擴展吞吐或存儲,輕松應對高并發(fā)、海量數據場景。

      * 分布式事務
        TiDB 100% 支持標準的 ACID 事務。

      * 真正金融級高可用
        相比于傳統(tǒng)主從 (M-S) 復制方案,基于 Raft 的多數派選舉協議可以提供金融級的 100%
      數據強一致性保證,且在不丟失大多數副本的前提下,可以實現故障的自動恢復 (auto-failover),無需人工介入。

      * 一站式 HTAP 解決方案
        TiDB 作為典型的 OLTP 行存數據庫,同時兼具強大的 OLAP 性能,配合 TiSpark,可提供一站式 HTAP 解決方案,一份存儲同時處理
      OLTP & OLAP,無需傳統(tǒng)繁瑣的 ETL 過程。

      * 云原生 SQL 數據庫
        TiDB 是為云而設計的數據庫,支持公有云、私有云和混合云,使部署、配置和維護變得十分簡單。

        TiDB 的設計目標是 100% 的 OLTP 場景和 80% 的 OLAP 場景,更復雜的 OLAP 分析可以通過 TiSpark 項目來完成。

        TiDB 對業(yè)務沒有任何侵入性,能優(yōu)雅的替換傳統(tǒng)的數據庫中間件、數據庫分庫分表等 Sharding 方案。同時它也讓開發(fā)運維人員不用關注數據庫
      Scale 的細節(jié)問題,專注于業(yè)務開發(fā),極大的提升研發(fā)的生產力。

      三、TiDB整體架構

      要深入了解 TiDB 的水平擴展和高可用特點,首先需要了解 TiDB 的整體架構。



      ?

      ?

      ?

      ?TiDB 集群主要分為三個組件:

      *
      TiDB Server

      TiDB Server 負責接收 SQL 請求,處理 SQL 相關的邏輯,并通過 PD 找到存儲計算所需數據的 TiKV 地址,與 TiKV
      交互獲取數據,最終返回結果。 TiDB Server
      是無狀態(tài)的,其本身并不存儲數據,只負責計算,可以無限水平擴展,可以通過負載均衡組件(如LVS、HAProxy 或 F5)對外提供統(tǒng)一的接入地址。

      *
      PD Server

      Placement Driver (簡稱 PD) 是整個集群的管理模塊,其主要工作有三個: 一是存儲集群的元信息(某個 Key 存儲在哪個 TiKV
      節(jié)點);二是對 TiKV 集群進行調度和負載均衡(如數據的遷移、Raft group leader 的遷移等);三是分配全局唯一且遞增的事務 ID。

      PD 是一個集群,需要部署奇數個節(jié)點,一般線上推薦至少部署 3 個節(jié)點。

      *
      TiKV Server

      TiKV Server 負責存儲數據,從外部看 TiKV 是一個分布式的提供事務的 Key-Value 存儲引擎。存儲數據的基本單位是
      Region(區(qū)域),每個 Region 負責存儲一個 Key Range (從 StartKey 到 EndKey 的左閉右開區(qū)間)的數據,每個 TiKV
      節(jié)點會負責多個 Region 。TiKV 使用 Raft 協議做復制,保持數據的一致性和容災。副本以 Region 為單位進行管理,不同節(jié)點上的多個
      Region 構成一個 Raft Group,互為副本。數據在多個 TiKV 之間的負載均衡由 PD 調度,這里也是以 Region 為單位進行調度。

      四、核心特性

      * 水平擴展
        無限水平擴展是 TiDB 的一大特點,這里說的水平擴展包括兩方面:計算能力和存儲能力。TiDB Server 負責處理 SQL
      請求,隨著業(yè)務的增長,可以簡單的添加 TiDB Server 節(jié)點,提高整體的處理能力,提供更高的吞吐。TiKV
      負責存儲數據,隨著數據量的增長,可以部署更多的 TiKV Server 節(jié)點解決數據 Scale 的問題。PD 會在 TiKV 節(jié)點之間以 Region
      為單位做調度,將部分數據遷移到新加的節(jié)點上。所以在業(yè)務的早期,可以只部署少量的服務實例,隨著業(yè)務量的增長,按照需求添加 TiKV 或者 TiDB 實例。

      * 高可用
        高可用是 TiDB 的另一大特點,TiDB/TiKV/PD 這三個組件都能容忍部分實例失效,不影響整個集群的可用性。

      五、TiDB原理與實現

        TiDB 架構是 SQL 層和 KV 存儲層分離,相當于 InnoDB 插件存儲引擎與 MySQL
      的關系。從下圖可以看出整個系統(tǒng)是高度分層的,最底層選用了當前比較流行的存儲引擎 RocksDB,RockDB
      性能很好但是是單機的,為了保證高可用所以寫多份,上層使用 Raft 協議來保證單機失效后數據不丟失不出錯。保證有了比較安全的 KV
      存儲的基礎上再去構建多版本,再去構建分布式事務,這樣就構成了存儲層 TiKV。有了TiKV,TiDB 層只需要實現 SQL 層,再加上 MySQL
      協議的支持,應用程序就能像訪問 MySQL 那樣去訪問 TiDB 了。



      ?

      友情鏈接
      ioDraw流程圖
      API參考文檔
      OK工具箱
      云服務器優(yōu)惠
      阿里云優(yōu)惠券
      騰訊云優(yōu)惠券
      京東云優(yōu)惠券
      站點信息
      問題反饋
      郵箱:[email protected]
      QQ群:637538335
      關注微信

        <ul id="qxxfc"><fieldset id="qxxfc"><tr id="qxxfc"></tr></fieldset></ul>
          亚洲中文字幕在线看 | 性爱无码免费视频 | 操逼在线看 | 欧美淫网| 大屁股在线观看 | 全部孕妇毛片丰满孕妇孕交av | 水多多精品视频 | 美女自慰黄网站 | 麻豆av入口 | 红桃视频国产在线 |