日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

TiKV 在饿了么的大规模应用实践

發布時間:2023/12/20 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 TiKV 在饿了么的大规模应用实践 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

餓了么從 2008 年創建以來,一直都是飛速的發展。目前,餓了么已覆蓋了 2000 多個城市,擁有 2.6 億的用戶,130 萬的商戶,300萬的騎手。餓了么在配送時間上追求卓越,目前餓了么的準時達訂單平均配送時長已達到 28 分鐘以內。從 2015 年開始,餓了么形成了 2 大業務,在線交易平臺業務和即時配送平臺業務。餓了么的用戶量和訂單量的快速增長,帶來了數據量的快速增長,從而產生對大數據量存儲的強烈需求,并且很多數據都是 KeyValue 格式的數據。之前餓了么沒有統一的 Key-Value 存儲系統,這部分數據被存儲在 MySQL、Redis、Mongo、Cassandra 等不同的系統中,將數據存儲在這些系統中,帶來一些問題,比如數據擴容不方便、內存不可靠、性能不達標、運維不方便等。

我們希望用一套統一的 Key-Value 存儲系統來存儲這些 Key-Value 形式的數據,并且滿足以下所有的技術要求:

  • 大數據量,可以存儲至少數十 TB 級別的數據。
  • 高性能,在滿足高 QPS 的同時,保證比較低的延時。
  • 高可靠,數據被可靠的持久化存儲,少量機器的損壞不會導致數據的丟失。
  • 高可用,作為在線服務的底層依賴存儲,要有非常完善的高可用性能力,外賣服務不同于電子商務,對實時性要求非常高,對系統的可用性的要求則是更高的。
  • 易運維,可以在不停服的基礎上進行數據遷移,和集群擴容。

從 2017 年下半年開始,餓了么開始基于 TiKV 構建餓了么的 Key-Value 存儲系統,并且取得了很好的應用效果。餓了么對 Key-Value 系統的使用是在線系統,由離線計算集群生成數據,在線服務消費這些數據。這些在線服務覆蓋了餓了么在線交易和即時配送 2 大平臺,在線交易平臺中的首頁搜索、商品品類、商品排序、天降紅包等等,即時配送平臺中的物流旗手智能調度等,各種在線服務都在使用我們的 Key-Value 系統。?

目前,TiKV 的應用會影響餓了么全平臺 80% 的流量,包括從用戶選餐下單到訂單配送整個餓了么流程。

TiKV集群上線情況:

  • 目前已在餓了么部署了十幾套? TiKV? 集群,分別位于北京、上海、廣州的四個機房,共計 100+ 機器節點,承載了數十 TB 的數據。
  • 配置了完備的監控告警系統,所有集群都已接入,可以在集群出現問題時及時發送告警信息,為集群的正常運行提供了保障。
  • 業務高峰期時,最繁忙的一個集群,寫入 QPS 近 5w,讀取 QPS 近 10w。
  • 至今已穩定運行大半年,沒有發生過線上事故。?

在 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 進行了詳細的性能測試,我們測試環境選在 32 核 CPU,256G 內存,3.5T PCIE SSD 硬盤的機器上, 得到了更好的結果,取其中典型數據如下:

使用 TiKV 的這半年的時間來,在餓了么取得了非常良好的應用效果,應用場景不斷增多,數據量不斷增大,對餓了么業務做了非常好的支撐,這也依賴于 TiKV 技術人員對我們的各種到位的技術支持。未來,TiKV 在餓了么的應用場景會更加豐富。我們也會考慮將我們 Redis Proxy 開源,開放給社區。

作者介紹:陳東明,餓了么北京技術中心架構組負責人,負責餓了么的產品線架構設計以及餓了么基礎架構研發工作。曾任百度架構師,負責百度即時通訊產品的架構設計。具有豐富的大規模系統構建和基礎架構的研發經驗,善于復雜業務需求下的大并發、分布式系統設計和持續優化。

總結

以上是生活随笔為你收集整理的TiKV 在饿了么的大规模应用实践的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。