電商網站基本架構

系統特色數據庫

1.提供的服務多緩存

2.依賴的數據源多樣化,數據庫、HTTP接口、RPC接口等併發

3.系統以讀爲主,寫方面主要是下單流程,活動異步

4.總體服務加起來體量大[訪問量+數據量(sku、商品、價格)]tcp

5.須要快速響應,影響用戶瀏覽下單體驗高併發

6.服務之間相互影響性要小[服務化]操作系統

基本原則server

  • 使用HTTP/HTTPS提供服務:服務化後對於使用不一樣語言實現的不一樣系統,HTTP從便捷和使用範圍上有絕對的優點blog

  • 使用短鏈接:接口

  1. 在HTTP中開啓長鏈接須要在協議頭中加上Connection:keep-alive,固然最終是否使用長鏈接通訊是須要雙方進行協商的,客戶端和服務端只要有一方不一樣意,則開啓失敗。長鏈接由於能夠複用鏈路,因此若是請求頻繁,能夠減小鏈接的創建和關閉時間,從而節省資源。

  2. 既然長鏈接這麼『好』,短鏈接這麼『很差』爲何還要使用短鏈接呢?咱們知道這個『鏈接』其實是TCP鏈接。TCP鏈接是有一個四元組表示的,如[源ip:源port—目標ip:目標port]。從這個四元組能夠看到理論上能夠有無數個鏈接, 可是操做系統可以承受的鏈接但是有限的,假設咱們設置了長鏈接,那麼無論這個時間有多短,在高併發下server端都會產生大量的TCP鏈接,操做系統維護每一個鏈接不但要消耗內存也會消耗CPU,在高併發下維護過多的活躍鏈接風險可想而知。

  3. 並且在長鏈接的狀況下若是有人搞惡意攻擊,建立完鏈接後什麼都不作,勢必會對Server產生不小的壓力。因此在互聯網這種高併發系統中,使用短鏈接是一個明智的選擇。對於服務端因短鏈接產生的大量的TIME_WAIT狀態的鏈接,能夠更改系統的一些內核參數來控制,好比net.ipv4.tcp_max_tw_buckets、net.ipv4.tcp_tw_recycle、net.ipv4.tcp_tw_reuse等參數

  • 數據異構:
  1. 一個大的原則,若是依賴的服務不可靠,那系統就可能隨時出問題。對於依賴服務的數據,能異構的就要拿過來,有了數據就能夠作任何你想作的事,有了數據,依賴服務再怎麼變着花的掛對你的影響也是有限的。

  2. 異構時能夠將數據打散,將數據原子化,這樣在向外提供服務時,能夠任意組裝拼合。

  • 巧用緩存

  • 流量控制

  • 異步、並行

  • 數據託底

  • 防刷

  • 降級

  • 多域名

相關文章
相關標籤/搜索