京東峯值系統設計前端
京東618和雙11等大規模的促銷活動中,促銷活動形成的用戶搶購和惡意攻擊的次數都會較日常高出好幾倍的數量,促銷、搶購、攻擊這三者就是影響電商流量峯值的主要因素,所以電商企業研發團隊首先要思考的問題就是如何在高流量、高併發狀況下保證整個系統的可靠性和穩定性算法
首先看一下京東電商的業務流程圖圖緩存
京東電商系統圍繞系統穩定性、可靠性、高併發和可擴展性爲核心開展架構設計,京東的業務種類繁多且數量不少,外接供應商、消費者和第三方商家三大板塊。內部包括了包括交易、後臺、倉配、客服等商品供應鏈的幾乎全部環節,造就了一個個的極其複雜龐大的體系。除此以外,京東系統各個功能模塊之間關聯性強,牽一髮而動全身,作任何修改都須要慎之又慎。所以,保持系統穩定是一切優化方案的前提性能優化
京東峯值系統的設計主要從性能提高、流量控制、災備降級、壓測預案四個角度來進行。在性能提高上經過切分系統將整個業務體系拆分爲幾個相對獨立的子系統,每一個子系統又可細分爲若干部分,逐級簡化,直至可操做可優化的層級,針對每一個功能模塊的關鍵部分進行切分,有針對性地作性能優化網絡
分佈式系統解決兩大難題:提升用戶體驗和加強容錯能力,分佈式系統設計時就會留有至關的流量增加空間,因此當一處數據中心飽和時,能夠將其他的流量切入其餘相對寬鬆的數據中心去,從而達到互爲備份、互相支持的目的。與此同時,因爲爲提供用戶就近服務,因此減小了網絡延時,頁面反應速度加快了,所以如今大多數的電商平臺都採起分佈式系統架構
在各個系統中,老是有不少相同的組件。前端的負載均衡自沒必要說,中間件的處理就是很是典型的例子。如何高效統一地管理這些組件,API服務化是咱們的答案。最好由一個訓練有素的團隊集中管理這些組件並對外提供接口服務,將軟件的使用複雜性隱藏起來,調用的是簡單利索的API。讓專業人員去處理複雜邏輯,確保系統的可用性和擴展性,既能大大下降出錯機率,又能實現規模效益。Redis是咱們經常使用的緩存組件。 過去都是由各個業務實現團隊進行分別維護,專業性不強,使用多有不當之處。後來咱們進行了集中管理,統必定製開發新功能和升級,並經過API服務化提供給各級用戶。這樣不只豐富了應用場景,還提高了性能和可靠性併發
選取適合自身發展的框架,既能充分發揮其效能,又可節約資源。代碼優化也能提升效能,例如對於SQL語句的優化,能更好地利用索引;Java/C++邏輯的優化,減小了沒必要要的循環和複雜的操做;算法優化,使之更高效;功能實現邏輯的優化,變得更簡潔和清晰;等等。但代碼優化終究不能衝破極限, 難以追求極致,適可爲止爲宜。負載均衡