TiKV 在餓了麼的大規模應用實踐

2021-09-11 13:13:13 字數 1200 閱讀 4782

我們希望用一套統一的 key-value 儲存系統來儲存這些 key-value 形式的資料,並且滿足以下所有的技術要求:

目前,tikv 的應用會影響餓了麼全平台 80% 的流量,包括從使用者選餐下單到訂單配送整個餓了麼流程。

tikv集群上線情況:

在 key-value 的這個領域中,有著林林總總的開源系統。我們為什麼要選擇 tikv 呢?首先要從 tidb 的架構說起。tidb 由 tikv 儲存層和 tidb sql 層組成。tikv 層是 tidb 系統的底層儲存層,tikv 層本身是乙個分布式的 key-value 儲存系統。而 tidb 層構建於 tikv 層基礎之上,實現了無狀態的 sql 協議層,負責將使用者的 sql 請求,轉化為 tikv 的 key-value 請求,從而整體上實現分布式的 sql 儲存。這種架構借鑑了 google 的 spanner 系統,spanner 是乙個分布式的 key-value 儲存系統,google 在 spanner 的基礎之上,構建了乙個名叫 f1 的系統,實現了 sql 協議。

我們也比較推崇這種架構,並且我們認為在 key-value 基礎之上,不僅僅可以構建 sql 協議,也可以構建 redis 這樣的 key-value 協議。

在這種架構中,上層負責協議轉換。tikv 層則通過資料分片、raft 協議、mvcc、分布式事務等技術,實現了水平擴充套件、高可用、強一致性等分布式特性。

我們的 redis layer 實現如下:

我們構建了乙個 ekvproxy 的服務。在這個服務中,我們封裝了乙個 tikv 的 sdk,對 redis 的協議進行了解析,並且將 redis 協議轉成對 tikv 的呼叫。並且在這個基礎之上,實現了壓縮和限流等一些擴充套件功能。由於我們相容了 redis 協議,各種語言均可以在不做任何修改的情況下,直接使用官方的 redis 客戶端訪問我們的 key-value 服務。在最大程度上減輕了使用方的負擔。便於 tikv 的落地推廣。

另外,pingcap 的工程師還第一時間幫我們實現了 tikv 的 raw scan 的功能,從而能更好的與 redis 協議相容,在此表示感謝。

使用 tikv 的這半年的時間來,在餓了麼取得了非常良好的應用效果,應用場景不斷增多,資料量不斷增大,對餓了麼業務做了非常好的支撐,這也依賴於 tikv 技術人員對我們的各種到位的技術支援。未來,tikv 在餓了麼的應用場景會更加豐富。我們也會考慮將我們 redis proxy 開源,開放給社群。

vue的餓了麼寫作感受

1.在重複使用的元件中,要把重複使用元件的需要在資料的請求的地方設定為在富元件中,通過props船隻到子元件,這樣在重複呼叫次元件的時候既可以很好的避免元件的值的衝突 2.getdata的使用,把所有的axios請求都在getdata中使用,然後在請求的action中進行引入然後進行資料的處理 mu...

Node 在滬江的大規模實踐

我是來自滬江前端架構組的架構師戴亮,這場分享將由我發起。滬江從 2016 年下半年開始在生成環境中使用 node 渲染頁面給外部使用者使用。今年以來,滬江在全產線中全面使用 node。本次分享將介紹這一年以來,滬江在 node 方面的一些經驗,文章會介紹以下內容 在使用 node 之前滬江的前後端分...

爬取餓了麼的商家 評論資料

該地附近的商家資訊如圖所示 現在我們找到了目標url,在開發者選項工具中,切換到headers,就可以直觀地看到目標url,如圖所示 開啟此url就可以找到我們所需的資訊,注意這是json格式的資料。進一步,我們找到 變化的規律,只需改變offset引數即可。json格式資料解析,類似於字典的操作,...