通過梳理大型網(wǎng)站技術發(fā)展歷程,剖析大型網(wǎng)站技術架構模式,深入講述大型互聯(lián)網(wǎng)架構設計的核心原理,并通過一組典型網(wǎng)站技術架構設計案例,為讀者呈現(xiàn)一幅包括技術選型、架構設計、性能優(yōu)化、Web 安全、系統(tǒng)發(fā)布、運維監(jiān)控等在內(nèi)的大型網(wǎng)站開發(fā)全景視圖。
濤哥(張開濤),他是知名技術博客《開濤的博客》的作者, 京東集團技術研發(fā)的大牛,2014年加入京東,主要負責商品詳情頁、詳情頁統(tǒng)一服務架構與開發(fā)工作,設計并開發(fā)了多個億級訪問量系統(tǒng)。工作之余喜歡寫技術博客,有《跟我學 Spring》、《跟我學Spring MVC》、《跟我學Shiro》、《跟我學Nginx+Lua開發(fā)》等系列教程,目前博客訪問量有460萬+。
第 1 部分 概述 ......................................................................................... 1
1 交易型系統(tǒng)設計的一些原則 .................................................................................... 2
1.1 高并發(fā)原則 ................................................................................................................ 3
1.1.1 無狀態(tài) ............................................................................................................ 3
1.1.2 拆分 ................................................................................................................ 3
1.1.3 服務化 ............................................................................................................ 4
1.1.4 消息隊列 ........................................................................................................ 4
1.1.5 數(shù)據(jù)異構 ........................................................................................................ 6
1.1.6 緩存銀彈 ........................................................................................................ 7
1.1.7 并發(fā)化 ............................................................................................................ 9
1.2 高可用原則 .............................................................................................................. 10
1.2.1 降級 .............................................................................................................. 10
1.2.2 限流 .............................................................................................................. 11
1.2.3 切流量 .......................................................................................................... 12
1.2.4 可回滾 .......................................................................................................... 12
1.3 業(yè)務設計原則 .......................................................................................................... 12
1.3.1 防重設計 ...................................................................................................... 13
1.3.2 冪等設計 ...................................................................................................... 13
1.3.3 流程可定義 .................................................................................................. 13
1.3.4 狀態(tài)與狀態(tài)機 .............................................................................................. 13
1.3.5 后臺系統(tǒng)操作可反饋 .................................................................................. 14
1.3.6 后臺系統(tǒng)審批化 .......................................................................................... 14
1.3.7 文檔和注釋 .................................................................................................. 14
XXIV | 億級流量網(wǎng)站架構核心技術——跟開濤學搭建高可用高并發(fā)系統(tǒng)
1.3.8 備份 .............................................................................................................. 14
1.4 總結(jié) ........................................................................................................................... 14
第 2 部分 高可用 ..................................................................................... 17
2 負載均衡與反向代理 ............................................................................................ 18
2.1 upstream 配置 ........................................................................................................... 20
2.2 負載均衡算法 ........................................................................................................... 21
2.3 失敗重試 ................................................................................................................... 23
2.4 健康檢查 ................................................................................................................... 24
2.4.1 TCP 心跳檢查 .............................................................................................. 24
2.4.2 HTTP 心跳檢查 ........................................................................................... 24
2.5 其他配置 ................................................................................................................... 25
2.5.1 域名上游服務器 .......................................................................................... 25
2.5.2 備份上游服務器 .......................................................................................... 26
2.5.3 不可用上游服務器 ...................................................................................... 26
2.6 長連接 ....................................................................................................................... 26
2.7 HTTP 反向代理示例 ................................................................................................ 29
2.8 HTTP 動態(tài)負載均衡 ................................................................................................ 30
2.8.1 Consul+Consul-template .............................................................................. 31
2.8.2 Consul+OpenResty ....................................................................................... 35
2.9 Nginx 四層負載均衡 ................................................................................................ 39
2.9.1 靜態(tài)負載均衡 .............................................................................................. 39
2.9.2 動態(tài)負載均衡 .............................................................................................. 41
參考資料 ............................................................................................................................ 42
3 隔離術 ................................................................................................................. 43
3.1 線程隔離 ................................................................................................................... 43
3.2 進程隔離 ................................................................................................................... 45
3.3 集群隔離 ................................................................................................................... 45
3.4 機房隔離 ................................................................................................................... 46
3.5 讀寫隔離 ................................................................................................................... 47
目錄 | XXV
3.6 動靜隔離 .................................................................................................................. 48
3.7 爬蟲隔離 .................................................................................................................. 49
3.8 熱點隔離 .................................................................................................................. 50
3.9 資源隔離 .................................................................................................................. 50
3.10 使用 Hystrix 實現(xiàn)隔離 ........................................................................................... 51
3.10.1 Hystrix 簡介 ............................................................................................... 51
3.10.2 隔離示例 .................................................................................................... 52
3.11 基于 Servlet 3 實現(xiàn)請求隔離 ................................................................................ 56
3.11.1 請求解析和業(yè)務處理線程池分離 ............................................................ 57
3.11.2 業(yè)務線程池隔離 ........................................................................................ 58
3.11.3 業(yè)務線程池監(jiān)控/運維/降級 ...................................................................... 58
3.11.4 如何使用 Servl