《京東商城交易平臺的高可用架構之路》要點:
本文介紹了京東商城交易平臺的高可用架構之路,希望對您有用。如果有疑問,可以聯系我們。
作者:王曉鐘
編輯:木環、郭蕾
據騰訊科技報道,6 月 18 日零點,京東全民年中購物節拉開了高潮的序幕.第一個小時的銷售額超過去年同期的 250%.從凌晨開始的海量訂單讓 6 月 1 日就拉開序幕的京東年中購物節奏出最強音,大量用戶瞬間涌入,峰值訂單被不斷刷新.為了應對如此大規模的流量增長,京東研發團隊幾乎全年都在高筑墻、廣積糧,一直著力從技術層面為用戶提供流暢的交易體驗,以保證在峰值交易時期系統的高可用性.在京東整個電商體系中,交易系統占據著其中的半壁江山,購物車、結算、庫存、價格等相關的環節都包含在其中,可以說交易系統的高可用能力基本上決定了整個京東商城的高可用能力.在過去的一年時間里,京東的交易系統做了哪些迭代和優化?今年又有哪些創新?整體的交易系統規劃是怎么樣的?InfoQ 記者帶著這些問題采訪了京東商城交易平臺高級總監王曉鐘.
受訪嘉賓介紹
王曉鐘,京東商城交易平臺高級總監,京東交易黃金流程與智慧營銷生態系統的掌舵人,帶領的產品與研發團隊為京東商城提供了核心交易的系統保證.
王曉鐘:交易平臺負責商品、價格、用戶、庫存、訂單等電商核心基礎信息的中心化管理,以及對購物車、結算頁、優惠券 / 禮品卡、訂單中心等黃金交易流程的管控和平臺化服務.交易平臺致力于技術改變生活,打造智慧營銷的交易平臺.為用戶提供黃金交易流程;為客戶提供智慧營銷解決方案包含促銷建議、智能庫存定位等智慧營銷工具;為研發團隊提供穩定、可靠的交易服務.
王曉鐘:除了我們一直在做的、已經形成常規的工作,比如線上壓測、性能優化、擴容、故障切換、限流、降級之外,過去一年,我們在系統維穩方面做了一些精細化的工作.
隨著業務的發展,功能的復雜度也在不斷增加,定位故障原因變的困難了起來,很多時候線上發生故障大部分的時間都在定位問題,故障的解決只要有預案就可以很快處理.調用鏈監控就很重要,可以站在全局的角度,快速的定位問題,和故障預案處理結合可以解決我們的痛點.
隨著服務的不斷擴容,機器數量的增加,出現問題時,故障修復的速度變慢,自動化的故障切換可以使人工解放出來,處理更重要的事情,可以讓大家不用總是在半夜起來處理故障.
王曉鐘:目前交易平臺主要依據業務能力來劃分服務的:購物車、結算頁、促銷、價格、庫存、商品、用戶等,為 PC,手機,微信等渠道提供高可靠的大中臺服務.
這種劃分模式好處在于:
王曉鐘:在京東這樣的大規模分布式系統面前,每時每刻服務器可能都宕機,網絡隨時可能都在抖動,大量接口調用量日均過億,同時具有流量聚集效應的促銷每天都會有好幾波,如果沒有一套強大的監控體系,我們就像睜眼瞎一樣.經過多年的努力,京東目前已經形成多套監控系統,建立了比較完善的監控體系,時刻監視著系統的健康狀態,并在發現問題時第一時間進行預警:
1)業務層面的監控,主要是核心業務指標,比如實時訂單量,并按渠道、省份、運營商、機房、品類、活動等各個維度進行細分,從而在及時發現核心業務指標變化的同時,能夠快速定位、排查問題,并做出應急響應.
2)系統層面的監控,主要是方法或代碼塊的調用量、成功率以及響應時間.同時,不同語言平臺有特定的監控指標,例如 Java 應用,我們也非常關心 JVM GC 情況.這些指標我們會按實例、集群、機房等進行逐級匯總計算.對于響應時間,我們更關心的是 TP99 甚至 TP999 任何一指標低于預設閾值都會觸發報警.在采集單一接口性能數據的基礎上,我們將請求訪問鏈經過的一系列子調用串起來,包括 RPC 服務之間、訪問緩存、訪問數據庫等等,實現調用鏈條薄弱環節的快速發現,快速解決.
3)基礎設施的監控,主要是網絡質量和機器健康度的監控,像常規的帶寬、丟包率、重傳、連通性,CPU、內存、磁盤等等.在網絡方面,除了內網,我們也非常關心公網網絡質量,一旦發現運營商或者區域故障,就會做立即出預案響應,7*24 小時確保用戶購物體驗.
在監控指標完善的同時,我們更多在解決監控自身的延時性.京東自身訪問量大,所以在提高監控的延時性同時又不能影響業務自身性能,本身就是就一個挑戰.目前我們在業務層面、系統層面都做到了秒級粒度,基礎設施方面的重要指標也有了秒級數據.在預警方面,除了傳統的郵件、短信,我們集成了京東內部 IM 工具,同時還有手機語音呼叫.
在這么多指標,這么精細的數據面前,傳統的監控儀表盤也會讓我們再度迷失,因此我們開發了天眼系統進一步將各個監控子系統進行集成,結合前述的調用鏈,在一個大屏上多個核心主流程的各環節、各調用層次的當前健康狀況一覽無遺,一旦有故障我們可以在短時間內快速響應并恢復.
王曉鐘:惡意流量攻擊,是每個互聯網企業都必須面對的難題.目前我們把流量攻擊分為兩大類:網絡協議層和應用邏輯層.
網絡協議層的,主要是 SYNFlood、UDPFlood、DNSFlood、HTTPFlood 這些 4 層或 7 層協議的各種流量攻擊,主要以帶寬或服務資源消耗為主.目前我們通過京東云平臺自研的流量分析和清洗系統能夠防御主流的惡意流量攻擊.除此之外,信息安全部門也會聯合外部力量進行上百 G 的流量攻防演練,確保合作和聯動等實戰能力.
應用邏輯層的惡意流量的范圍和影響則比較廣泛.狹義上,惡意流量利用應用系統的軟件漏洞,做拒絕服務攻擊;廣義上,能夠利用應用的實現邏輯或規則漏洞,非法實現各種商業利益的,無論流量大小,都屬于惡意流量攻擊.這一大類型攻擊由京東的多個部門配合進行整體防御.
1)信息安全部門會通過開展安全自查和外部合作報告漏洞的方式,由各業務研發部門實施安全漏洞消除,比如 SQL 注入、代碼執行、水平越權、信息泄露等. ? ?2)風控部門會通過數據分析,建立各種等級的風險控制模型,形成動態的不同風險等級的賬戶池,供業務系統使用. ? ?3)業務研發部門則根據業務特性、用戶風險等級、系統壓力等因素,提供不同策略的限流實現.
王曉鐘:京東實時價格面臨幾大挑戰:一是數據量大,幾十億的商品;二是調用量大,日峰值上百億;三是實時性要求高;最后是業務復雜度高,并不是單一的京東價,不僅要綜合計算各類促銷規則,還要對 PC、手機、第三方合作渠道以及區域進行差異化運營.這里,我們運用讀寫分離、異步化策略,選擇支撐大并發、高性能的開源組件進行設計,確保可水平擴展、高穩定性.
1)寫邏輯流程:當采銷在后端調整價格或建立促銷時,同步寫入 MySQL 數據庫,然后通過異步任務更新促銷主 Redis 數據,并同時更新價格主 Redis 的過期時間戳,通過 Redis 自身復制機制,將數據傳播到從節點.2)讀邏輯流程:當用戶在前端瀏覽商品列表、詳情等頁面時,異步訪問價格實時服務,此時內嵌 Nginx 的 Lua 程序直接讀取本地 Redis(從)中的價格數據,無過期則直接返回用戶;若過期或不存在,則回源訪問價格實時計算服務,即刻返回最新價格給用戶.3)回源寫邏輯:價格實時計算服務讀取促銷主 Redis,在返回最新價格給用戶的同時,異步寫價格主 Redis 集群,價格主 Redis 同步數據至前置 Nginx 節點的從 Redis 節點.
王曉鐘:除了上面提到的主要用來維護系統穩定的技術改造之外,今年交易平臺也投入了更多的精力在做提升用戶體驗、提升 GMV 的改進和創新工作.比如利用大數據技術和機器學習模型,來提供千人千價、千人千促的體驗.
我們也在嘗試利用大數據和機器學習等在系統維穩上做一些工作,比如:
1)SQL 注入和惡意代碼執行方面引入了機器學習模型,通過對已有的攻擊行為進行學習,訓練特征.引入半監督學習,讓模型可以通過學習,自動發現新型的攻擊.大大提高了攻擊的發現效率和新攻擊的識別能力.各項指標已經完全超越傳統的規則識別.
2)使用有向圖模型對惡意攻擊進行溯源檢測,更加準確快速的進行溯源分析,并且得到了非常好的效果.
下一步,我們會繼續嘗試在這個方向上做一些創新,比如:
1)在人機行為檢測方面進行優化.使用聚類和 nlp 模型對惡意刷單行為進行識別,提高惡意刷單行為的驗證級別,從而極大地降低后臺接口壓力.
2)評論價值評定模型,識別真實評論和刷出來的評論.讓評論產生更大的價值.
3)我們將在故障智能預測上進行探索.目前很多監控和預警都是事后的,我們希望能做到事前.通過分析歷史性、周期性故障數據,結合當前實時健康度,快速識別出“瀕死”的機器、實例,真正做到監控預警智慧化.
原文來自微信公眾號:聊聊架構
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/2702.html