TiDB體系架構

来源:https://www.cnblogs.com/developer-tianyiyun/p/18265218
-Advertisement-
Play Games

本文分享自天翼雲開發者社區《TiDB體系架構》,作者:x****n 如圖所示,TiDB體系中三大組成部分:PD、TiDB Server、TiKV 1.PD:負責產生全局的TSO時間、控制Region在TIkv中的分佈、產生全局事務ID、還有其他ID。 2.TiDB:沒有數據落地,接收客戶端sql語句 ...


本文分享自天翼雲開發者社區《TiDB體系架構》,作者:x****n

如圖所示,TiDB體系中三大組成部分:PD、TiDB Server、TiKV

1.PD:負責產生全局的TSO時間、控制Region在TIkv中的分佈、產生全局事務ID、還有其他ID。

2.TiDB:沒有數據落地,接收客戶端sql語句,對sql語句進行解析和編譯,最終形成執行計劃。DDL語句和基於MVCC的老版本數據的回收,也是TiDB Server操作。

3.TiKV:數據以鍵值隊存儲在TiKV中,主要負責數據持久化、MVCC、Coprocessor、事務以及自身副本的高可用和強一致性(由Muti-raft實現)。

4.TiFlash:列式存儲引擎,主要由擴展的raft共識演算法與Tikv進行數據同步,實現負載均衡、強一致讀取和實時更新,對於OLTP場景這樣就實現了對分析型業務和事務型業務進行隔離,對既有oltp又有olap的是有利的。 

TiDB Server有六大功能:

1.處理客戶端的連接

2.SQL語句的解析和編譯

3.關係型數據與KV的轉化

4.SQL語句的執行

5.線上DDL的執行

6.垃圾回收 

 

TiKV的五大功能:

1.Tikv最主要的功能就是負責數據的持久化。

2.TIkv內部是選擇基於lsm-tree的Rocks DB引擎作為存儲引擎,而Rocksdb通過Wal機制保證數據的不丟失。

3.分散式事務支持:Tidb資料庫基於percolator事務模型的兩階段提交過程中,每個Tikv會單獨分配存儲鎖的空間,叫CF lock(列簇),這樣,配合Tidb server和PD全局TSO授時服務,就實現了去中心化的兩階段提交。支持樂觀鎖與悲觀鎖。在5.0之後,實現了兩階段提交中,第二階段非同步提交功能。在oltp中的高併發、小sql場景里,大大降低了寫入延遲。

4.MVCC:實現併發控制、隔離級別、分散式事務、數據快速恢復的基礎。歷史數據會存儲一段時間,最後由GC進行回收。

5.Coprocessor:數據的過濾、部分的聚合、求最大最小值等,這些被下推分散式存儲節點,可以利用Tikv的cpu能力,多個tikv可以並行的進行計算,由於他們已經過濾了數據,相比不計算上傳TiDB server要少,減少了網路的交互成本,TiDB Server的計算成本也相對減少。 

PD的五大功能:

1.整個集群TiKV的元數據存儲

2.分配全局ID和事務ID

3.生成全局時間戳TSO

4.收集集群信息進行調度

5.提供TiDBit Dashboard服務 

TiFlash的四大功能:

1.列式存儲提高分析查詢效率

2.支持強一致性和實時性

3.業務隔離

4.智能選擇


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 腳本工具可以幫助我們完成一些需要重覆勞動的工作; 基礎語法: "#"為註釋符號 1:#指定腳本運行環境為 /bin/bash #! /bin/bash 2:輸入參數,xxx為變數名,多個變數名用空格隔開read xxx 輸出參數echo xxx 3: 變數和運算符的定義:這是每個編程語言必不缺少的部 ...
  • 在伺服器linux系統環境下,想要上傳和下載文件到本地PC通常是比較麻煩的, 在這個過程中,將層級複雜的文件夾壓縮成壓縮包再進行上傳/下載更為方便, 其中常用到的linux指令就是 zip / unzip, 文件壓縮指令 zip 個人認為,在日常科研中,常用的參數有兩個: -q 不顯示指令執行過程( ...
  • 0、思考與回答 0.1、思考一 為什麼要增加時間片輪詢? 目前的 RTOS 內核已經支持搶占優先順序,即高優先順序的任務會搶占低優先順序的任務得到執行,但是對於同等優先順序的任務,如果不支持時間片輪詢,則只能有一個任務運行,並且由於優先順序相同所以除延時阻塞到期外也不會發生任務調度,因此需要增加時間片輪詢保證 ...
  • 本文介紹在Linux Ubuntu操作系統的電腦中,安裝Anaconda環境與Python語言的方法。 在之前的文章Anaconda與Python環境在Windows中的部署中,我們介紹了在Win10電腦中,安裝Anaconda環境與Python語言的方法;而在本文中,我們就詳細介紹一下在Linux ...
  • 0、思考與回答 0.1、思考一 如何處理進入阻塞狀態的任務? 為了讓 RTOS 支持多優先順序,我們創建了多個就緒鏈表(數組形式),用每一個就緒鏈表表示一個優先順序,對於阻塞狀態的任務顯然要從就緒鏈表中移除,但是阻塞狀態的任務並不是永久阻塞了,等待一段時間後應該從阻塞狀態恢復,所以我們需要創建一個阻塞鏈 ...
  • liwen01 2024.06.16 前言 先提幾個問題:什麼是文件系統崩潰一致性?為什麼會出現文件系統崩潰一致性問題?有哪些方法可以解這個問題?它們各自又有哪些局限性? window系統電腦異常後會藍屏、手機死機卡頓後我們會手動給它重啟,大部分設備的系統在遇到不可修複的嚴重異常後都會嘗試通過重啟來 ...
  • 本文介紹瞭如何根據所使用的不同開發板配置不同的交叉編譯環境. 由於在移植LVGL到不同開發板上時遇到了一些問題, 故在問題解決後整理和總結和該文章. ...
  • 隨著技術的發展,用戶對軟體的界面美觀度和交互體驗的要求越來越高。在這樣的背景下,可視化開發UI(User Interface)成為了提升用戶體驗和開發效率的重要工具。 通過圖形界面來設計和構建用戶界面的方法,可視化開發UI可以說改變了軟便開發的生態,與傳統的代碼編寫相比,它允許開發者使用拖放等直觀的 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...