日均數十億請求!京東評價系統海量資料儲存高可用設計

2022-10-10 19:45:14 字數 2195 閱讀 3671

整體資料儲存包括基礎資料儲存、文字儲存、資料索引、資料快取幾個部分。

基礎資料儲存

及標籤處於同一資料庫下,根據商品編號分別進行拆表;

其它的擴充套件資訊資料,因資料量不大、訪問量不高,處理於同一庫下且不做分表即可。

因人而異、因系統而異,根據不同的資料場景選擇不同儲存方案,有效利用資源的同時還能解決資料儲存問題,為高效能、高可用服務打下堅實基礎。

文字儲存

文字儲存使用了mongodb、hbase,選擇nosql而非mysql,一是減輕了mysql儲存壓力,釋放mysql,龐大的儲存也有了可靠的保障;二是nosql的高效能讀寫大大提公升了系統的吞吐量並降低了延遲。

儲存的公升級過程嘗試了cassandra、mongodb等分布式的nosql儲存,cassandra適用於寫多讀少的情況,而 mongodb也是基於分布式檔案儲存的資料庫,介於關係型資料庫與非關係型資料庫之間,同時也是記憶體級資料庫,mong寫效能不及cassandra,但讀寫分離情況下讀效能相當不錯,因此從應用場景上我們選擇了mongodb。mongodb確實不錯,也支援了系統穩定執行了好幾年。

資料索引

搜尋在構建索引時,屬性欄位可分為儲存欄位與索引字段,儲存欄位在建立索引後會將內容儲存於索引文件中,同時也會占用相應的索引空間,查詢後可返回原始內容,而索引字段建立索引後不占用索引空間也無法返回原始內容,只能用於查詢,因此對於較長的內容建議不進行儲存索引。

為了更好地應對前後臺不同的業務場景,搜尋集群被劃分為前台搜尋集群和後台搜尋集群。

未來也計畫將前台搜尋集群切換為elasticsearch。

資料快取

當然,快取設計時還有很多細節可以進行巧妙處理的,如:

資料容災與高可用

引入了這麼多的儲存方案就是為了解決大資料量儲存問題及實現資料服務的高可用,同時合理的部署設計與相應的容災處理也必須要有的。以上資料儲存基本都使用多機房主從方式部署,各機房內部實現主從結構進行資料同步。如圖:

mysql集群資料庫拆庫後需要對各分庫進行多機房主從部署,系統應用進行讀寫分離並根據機房進行就近呼叫,當主機房資料庫出現故障後將故障機房的資料操作都切換到其它機房,待故障排除後再進行資料同步與流量切換。

使用主從機房部署的方式所有資料更新操作都要在主庫上進行,而當主機房故障是需要通過資料庫主從關係的重建、應用重新配置與發布等一系列操作後才能解決流量切換,過程較為複雜且影響面較大,所以這是個單點問題,為此實現資料服務多中心將是我們下乙個目標。

多中心根據特定規則將使用者分別路由到不同機房進行資料讀寫,各機房間通過資料匯流排進行資料同步,當某一機房出現故障,只需要一鍵操作便能快速地將故障機房的使用者流量全部路由到其它機房,實現了資料的多寫多活,也進一步實現了服務的高可用。資料多中心如下:

hbase集群目前使用的是京東的公有集群,實現了雙機房主備部署,主集群出現故障後自動將流量切換到備用集群,而當hbase整個集群故障時還可對其進行降級,同步只寫入快取及備用儲存mongo,待集群恢復後再由後台非同步任務將資料回寫到hbase當中。

搜尋集群根據商品編號進行索引資料分片多機房主從部署,並保證至少3個從節點並部署於多個機房當中,當主節點出現故障後從這些從節點擊取其中乙個作為新的主提供服務。集群主節點只提供非同步任務進行索引更新操作,從節點根據應用機房部署情況提供索引查詢服務。

redis快取集群主從部署仍是標配,主節點只提供資料的更新操作,從節點提供前台快取讀服務,實現快取資料的讀寫分離,提公升了快取服務的處理能力。當主節點出現故障,選取就近機房的乙個從節點作為新主節點提供寫服務,並將主從關係進行重新構建。任何一從節點出現故障都可通過內部的配置中心進行一鍵切換,將故障節點的流量切換到其它的從節點上。

總結整體資料架構並沒有什麼高大上的設計,而且整體資料架構方案也是為了解決實際痛點和業務問題而演進過來的。資料儲存方案上沒有最好的,只有最適合的,因此得根據不同的時期、不同的業務場景去選擇合適的設計才是最關鍵的,大家有什麼好的方案和建議可以相互討論與借鑑,系統的穩定、高效能、高可用才是王道。

作者介紹  韋仕

日均數十億訪問量!解讀個推API閘道器高能演進

近日,個推服務端技術專家李白受邀參與segmentfault d day 線上技術直播活動,與來自頭部網際網路企業的後端技術專家們共探 後端架構演進之路 李白以 api閘道器演進之路 為主題,分享了個推基於golang進行api閘道器建設的實踐經驗和深度思考。以下為李白演講乾貨整理 api閘道器之源...

遭遇數十億美元損失後 SWIFT成立網路安全小組

近日,環球銀行間金融通訊協會 swift 宣布將於英國bae系統公司和荷蘭網路安全公司fox it合作建立乙個專門的 取證和客戶安全情報小組 swift是全球通行的銀行間轉賬支付平台,使用者分布在全世界200多個國家和地區,為超過1.1萬家的銀行和其它金融機構提供服務。今年2月份,孟加拉國央行的sw...

網路罪犯每年從廣告行業偷走數十億美元收入

網路殭屍或者說專門用來執行網路犯罪活動的計算機軟體每年要從廣告行業偷走數十億美元的收入。這些殭屍會建立一些充斥著侵權內容的 然後通過被感染的計算機組成的複雜網路產生虛假流量。據全國廣告商協會 ana 和排查殭屍流量的創新企業white ops發布的最新報告稱,預計網路殭屍發動的廣告欺詐行為將在201...