億級流量網站構架核心技術

高併發原則

高可用原則

業務設計原則

負載均衡與反向代理

四層負載均衡:首先 DNS 解析到 LVS/F5,然後 LVS/F5 轉發給 Nginx,再由 Nginx 轉發給後端 Real Server

兩層負載均衡是通過改寫報文的目標 MAC 地址爲上游服務器 MAC 地址,源 IP 和目標 IP 地址是沒有改變的,負載均衡服務器和真實服務器共享同一個 VIP,如 LVS DR 工作模式。
四層負載均衡是根據端口將報文轉發到上游服務器 (不同的 IP 地址 + 端口),如 LVS NAT 模式、HaProxy。
七層負載均衡是根據端口號和應用層協議如 HTTP 協議的主機名、URL,轉發報文到上游服務器 (不同的 IP 地址 + 端口),如 HaProxy、Nginx

隔離

Hystrix

在一個分佈式系統裏,許多依賴不可避免的會調用失敗,比如超時、異常等,如何能夠保證在一個依賴出問題的情況下,不會導致整體服務失敗,這個就是 Hystrix 需要做的事情。Hystrix 提供了熔斷、隔離、Fallback、cache、監控等功能,能夠在一個、或多個依賴同時出現問題時保證系統依然可用。

servlet3 異步化模型:

限流

降級

超時與重試機制

回滾機制

事務回滾:事務表、消息隊列、補償機制 (執行 / 回滾)、TCC 模式(預佔 / 確認 / 取消)、Sagas 模式(拆分事務 + 補償機制) 實現最終一致性

壓測與預案

應用級緩存

緩存回收策略:

堆緩存 (Gauva Cache, Ehcache 3.x)、堆外緩存 (Ehcache 3.x, MapDB 3.X)、磁盤緩存 (Ehcache 3.x, MapDB 3.X)、分佈式緩存 (Redis, Ehcache 3.x + Terracotta server)、多級緩存

緩存使用模板

HTTP 緩存

HTTP 緩存:

  1. 服務器端響應 Last-Modified 會在下次請求時,將 If-Modified-Since 請求頭帶到服務器端進行文檔是否修改的驗證,如果沒有修改則返回 304,瀏覽器可以直接使用緩存內容

  2. Cache-Control:max-age 和 Expires 用於決定瀏覽器端內容緩存多久,即多久過期。過期後則刪除緩存重新從服務器端獲取最新的。另外可以用於 from cache 場景

  3. HTTP/1.1 規範定義的 Cache-Control 優先級高於 HTTP/1.0 定義的 Expires

  4. HTTP/1.1 規範定義 ETag 爲 “被請求變量的實體值”,可簡單理解爲文檔內容摘要,ETag 可用來判斷頁面內容是否已經被修改過了

HttpClient 客戶端緩存:

Nginx HTTP 緩存設置:

多級緩存

應用 Nginx 本地緩存、分佈式緩存、Tomcat 堆緩存

如何緩存數據:

更新緩存與原子性:

連接池 / 線程池

異步併發

異步 Web 服務實現:

如何擴容

=======

隊列

案例

OpenResty

souce: https://zhouj000.github.io/2018/06/25/coreTechnologyOfWebArchitecture-kaitao/
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/y3HgSyn7tfiT8Wkp-SNgZQ