《京東峯值系統》閱讀筆記

  有別於社交網絡、搜索和遊戲等網站,電商網站的用戶流量具備操做性強、隨時令變化等特色。在歐美國家,Black Friday和Cyber Monday標誌着節假日消費的高峯。影響電商流量峯值的主要因素是搶購、促銷和惡意攻擊,尤爲是京東618店慶和雙11等大規模的促銷活動。高流量、高併發狀況下,如何保證整個系統的可靠性和穩定性,是衆多電商企業研發團隊都在思考的問題。前端

  京東的業務種類繁多,涉及SKU幾千萬種,這使得系統龐大,外部須要對接供應商、消費者和第三方商家三大板塊。內部系統包括了商品供應鏈中除商品設計和生產外的幾乎全部環節,包括登陸、交易、後臺、供應鏈、倉配、客服等。全部這些涉及大小系統幾千個,造就了一個極其複雜龐大的體系。除此以外,京東系統交互強,各個功能模塊之間關聯性強,牽一髮而動全身,作任何修改都須要慎之又慎。所以,一切優化方案都以保持系統穩定爲前提。算法

爲了在複雜的系統基礎之上,儘可能緩解峯值帶來的壓力,京東峯值系統的設計主要從性能提高、流量控制、災備降級、壓測預案四個角度來進行。緩存

 

性能提高

切分業務系統性能優化

咱們先將整個業務體系拆分爲幾個相對獨立的子系統如SSO、交易平臺、POP平臺、訂單下傳系統、WMS和倉儲配送(圖2)。每一個子系統又可細分爲若干部分,逐級簡化,直至可操做可優化的層級。例如,交易平臺包括價格、購物車、結算、支付和訂單中心等;網站系統包括首頁、登陸、列表頻道、單品和搜索等。接下來,針對每一個功能模塊的關鍵部分進行切分,有針對性地作性能優化。網絡

例如,交易的秒殺系統,原來是根植於普通交易系統以內的,缺點很是明顯。當流量忽然增大時,不只會致使秒殺系統反應遲鈍,並且會影響普通交易系統的正常運做。因而咱們將其與其餘業務系統物理分開,成爲相對獨立的子系統。而且針對秒殺的特性,減小對後臺存儲的依賴。同時優化中間層存儲機制,使得相對熱點分散部署。甚至支持單一SKU多點部署,從而大大提高了秒殺系統的吞吐量和可靠性。架構

 

分佈式併發

分佈式的交易系統是電商的將來。分佈式系統解決兩大難題:提升用戶體驗和加強容錯能力。因爲分佈式系統設計時就會留有至關的流量增加空間,因此當一處數據中心飽和時,能夠將其他的流量切入其餘相對寬鬆的數據中心去,從而達到互爲備份、互相支持的目的。與此同時,因爲爲提供用戶就近服務,因此減小了網絡延時,頁面反應速度加快了。舉一個例子,Google搜索是全球服務,歐亞美各地都有不一樣的IP提供服務。當其中的某一個IP出現故障時,Google可以從容地將其服務切換至最近的IP,繼續搜索服務。對於電商來講,狀況更復雜一些,須要同步的數據要求更精確,數據量較大,對延時的容忍度更低,建設週期也就更長。京東正在此方面着力改進,從只讀的系統入手,一步一步實現系統的分佈式。負載均衡

 

API服務化框架

在各個系統中,老是有不少相同的組件。前端的負載均衡自沒必要說,中間件的處理就是很是典型的例子。如何高效統一地管理這些組件,API服務化是咱們的答案。最好由一個訓練有素的團隊集中管理這些組件並對外提供接口服務,將軟件的使用複雜性隱藏起來,調用的是簡單利索的API。讓專業人員去處理複雜邏輯,確保系統的可用性和擴展性,既能大大下降出錯機率,又能實現規模效益。分佈式

Redis是咱們經常使用的緩存組件。 過去都是由各個業務實現團隊進行分別維護,專業性不強,使用多有不當之處。後來咱們進行了集中管理,統必定製開發新功能和升級,並經過API服務化提供給各級用戶。這樣不只豐富了應用場景,還提高了性能和可靠性。

 

架構,代碼優化

一個合理的電商系統架構是與一家公司的研發水平和技術管理水平密不可分的,這直接決定了可支撐峯值流量的多少和將來能達到的高度。選取適合自身發展的框架,既能充分發揮其效能,又可節約資源。代碼優化也能提升效能,例如對於SQL語句的優化,能更好地利用索引;Java/C++邏輯的優化,減小了沒必要要的循環和複雜的操做;算法優化,使之更高效;功能實現邏輯的優化,變得更簡潔和清晰;等等。但代碼優化終究不能衝破極限, 難以追求極致,適可爲止爲宜。

 

系統虛擬彈性化

當磁盤I/O不是瓶頸時,解決系統水平擴展就會變得容易許多。能夠經過ZooKeeper或類ZooKeeper將軟件棧有機地串聯起來,並配以有效的性能監管。當事務處理成爲瓶頸時,利用當今流行的虛擬化技術(如LXC或VM)能夠在沒有人爲干預的情況下自動進行彈性擴展。

相關文章
相關標籤/搜索