《億級流量網站架構核心技術》目錄一覽
在2011年年底的時候筆者就曾規劃寫一本Spring的書,但是因為是Spring入門型別的書,框架的內容更新太快,覺得還是寫部落格好一些,因此就把寫完的書稿放到了部落格(jinnianshilongnian.iteye.com,因為是龍年開的部落格,所以很多網友喊我龍年兄),並持續更新,到現在已經不多五年了。大家再網上找資源時會發現很多內容不成體系,不能系統的學習,這也是我的痛點,因此我寫部落格的一個特色就是堅持寫系列文章,想學習某種技術只要我部落格有的不需要去其他地方再找了,到現在已經寫過《跟我學Spring》、《Spring雜談》、《跟我學Spring MVC》、《跟我學Shiro》、《跟我學Nginx+Lua》等系列,累計訪問量已超過1000萬。我寫部落格還有一個私心:帶新人,當時我們系統架構使用了OpenResty,而我們團隊都是Java程式設計師,所以就寫了《跟我學Nginx+Lua》,新人跟著教程學一遍就能上手幹活了。
2015年開始筆者在個人公眾號“開濤的部落格”寫《聊聊高併發系統》系列文章,陸續發表了聊聊高併發系統之限流特技、聊聊高併發系統之降級特技、聊聊高併發系統之佇列術、構建需求響應式億級商品詳情頁等文章。這些內容都是筆者在一線使用過的一些,而這些技能是一執行緒序員或架構師應該掌握的必備技能。而且這一系列也得到了很多讀者反饋和認可,幫助他們解決了系統的一些問題。公眾號發表的有些內容偏理論,很多人不知道怎麼去用,因此就有了豐富理論和實戰內容並出版本書的想法,想學習高可用和高併發系統技能看本書就夠了,並且可以作為案頭工具書。
本書暫定名稱為《億級流量網站架構核心技術——跟開濤學搭建高可用高併發系統》,如有好的書名建議歡迎留言,必當重謝。內容已交由出版社編輯,相信很快就會和大家見面。主要內容結構和目錄如下所示:
第一部分概述
高併發原則
無狀態
拆分
服務化
訊息佇列
資料異構
快取銀彈
併發化
高可用原則
降級
限流
切流量
可回滾
業務設計原則
防重設計
冪等設計
流程可定義
狀態與狀態機
後臺系統操作可反饋.
後臺系統審批化.
文件&註釋
備份
第二部分 高可用
負載均衡與反向代理
upstream配置
負載均衡演算法
失敗重試
健康檢查
tcp心跳檢查
http心跳檢查
其他配置
域名上游伺服器
備份上游伺服器
不可用上游伺服器
長連線
HTTP反向代理示例
HTTP動態負載均衡
Consul+Consul-template
Consul+OpenResty
TCP四層負載均衡
靜態負載均衡
動態負載均衡
隔離術
執行緒隔離
程序隔離
叢集隔離
機房隔離
讀寫隔離
動靜隔離
爬蟲隔離
熱點隔離
資源隔離
使用Hystrix實現隔離
Hystrix簡介
隔離示例
基於Servlet3實現請求隔離
請求解析和業務處理執行緒池分離
業務執行緒池隔離
業務執行緒池監控/運維/降級
如何使用Servlet3非同步化
限流詳解
限流演算法
令牌桶演算法
漏桶演算法
應用級限流
限流總併發/連線/請求數
限流總資源數
限流某個介面的總併發/請求數
限流某個介面的時間窗請求數
平滑限流某個介面的請求數
分散式限流
redis+lua實現
Nginx+Lua實現
接入層限流
ngx_http_limit_conn_module
ngx_http_limit_req_module
lua-resty-limit-traffic
降級特技
降級預案
自動開關降級
超時降級
統計失敗次數降級
故障降級
限流降級
人工開關降級
讀服務降級
寫服務降級
多級降級
配置中心
應用層API封裝
配置檔案實現開關配置
配置中心實現開關配置
使用Hystrix實現降級
使用Hystrix實現熔斷
熔斷機制實現
配置示例
取樣統計
超時與重試機制
簡介
代理層超時與重試
Web容器超時
中介軟體客戶端超時與重試
資料庫客戶端超時
NoSQL客戶端超時
業務超時
前端Ajax超時
回滾機制
事務回滾
程式碼庫回滾
部署版本回滾
資料版本回滾
靜態資源版本回滾
壓測與預案
系統壓測
線下壓測
線上壓測
系統優化和容災
應急預案
第三部分 高併發
應用級快取
快取簡介
快取命中率
快取回收策略
基於空間
基於容量
基於時間
基於Java物件引用
回收策略
Java快取型別
堆快取
堆外快取
磁碟快取
分散式快取
多級快取
應用級快取示例
多級快取API封裝
NULL Cache
強制獲取最新資料
失敗統計
延遲報警
快取使用模式實踐
Cache-Aside
Cache-As-SoR
Copy Pattern
效能測試
HTTP快取
簡介
HTTP快取
Last-Modified
ETag
HttpClient客戶端快取
主流程
清除無效快取
查詢快取
快取未命中
快取命中
快取內容陳舊需重新驗證
快取內容無效需重新執行請求
快取響應
快取頭總結
Nginx HTTP快取設定
expires
if-modified-since
nginx proxy expires
Nginx代理層快取
Nginx代理層快取配置
清理快取
一些經驗
多級快取
多級快取介紹
如何快取資料
過期與不過期
維度化快取與增量快取
分散式快取與應用負載均衡
快取分散式
應用負載均衡
熱點資料與更新快取
單機全量快取+主從
分散式快取+應用本地熱點
更新快取與原子性
快取崩潰與快速修復
取模
一致性雜湊
快速恢復
連線池執行緒池詳解
資料庫連線池
DBCP連線池配置
DBCP配置建議
HttpClient連線池
HttpClient4.5.2配置
HttpClient連線池原始碼分析
HttpClient4.2.3配置
問題示例
執行緒池
Java執行緒池
Tomcat執行緒池配置
非同步併發實戰
同步阻塞呼叫
非同步Future
非同步Callback
非同步編排CompletableFuture
非同步Web服務實現
請求快取
CompletableFuture實現批量查詢
請求合併
如何擴容
單體應用垂直擴容
單體應用水平擴容
應用拆分
資料庫拆分
資料庫分庫分表示例
應用層還是中介軟體層
分庫分表策略
使用sharding-jdbc分庫分表
使用sharding-jdbc讀寫分離
資料異構
查詢維度異構
聚合資料異構
任務系統擴容
簡單任務
分散式任務
Elastic-Job簡介
Elastic-Job-Lite功能與架構
Elastic-Job-Lite示例
佇列術
應用場景
緩衝佇列
任務佇列
訊息佇列
請求佇列
資料匯流排佇列
混合佇列
其他佇列
Disruptor+Redis佇列
簡介
XML配置
EventWorker
EventPublishThread
EventHandler
EventQueue
下單系統水平可擴充套件架構
下單服務
同步Worker
基於Canal實現資料異構
mysql主從複製
Canal簡介
Canal示例
第四部分 案例
構建需求響應式億級商品詳情頁
商品詳情頁是什麼
商品詳情頁前端結構
我們的效能資料
單品頁流量特點
單品頁技術架構發展
架構1.0
架構2.0
架構3.0
詳情頁架構設計原則
資料閉環
資料維度化
拆分系統
Worker無狀態化+任務化
非同步化+併發化
多級快取化
動態化
彈性化
降級開關
多機房多活
多種壓測方案
遇到的一些坑和問題
SSD效能差
鍵值儲存選型壓測
資料量大時JIMDB同步不動
切換主從
分片配置
模板元資料儲存HTML
庫存介面訪問量600w/分鐘
微信介面呼叫量暴增
開啟Nginx Proxy Cache效能不升反降
配送至讀服務因依賴太多,響應時間偏慢
網路抖動時,返回502錯誤
機器流量太大
總結
京東商品詳情頁服務閉環實踐
為什麼需要統一服務
整體架構
一些架構思路和總結
兩種讀服務架構模式
本地快取
多級快取
統一入口/服務閉環
引入Nginx接入層
資料校驗/過濾邏輯前置
快取前置
業務邏輯前置
降級開關前置
AB測試
灰度釋出/流量切換
監控服務質量
限流
前端業務邏輯後置
前端介面服務端聚合
服務隔離
使用OpenResty開發高效能Web應用
OpenResty簡介
Nginx優點
Lua的優點
什麼是ngx_lua
開發環境
OpenResty生態
場景
基於OpenResty的常用架構模式
負載均衡
單機閉環
分散式閉環
接入閘道器
核心接入Nginx功能
業務Nginx功能
Web應用
如何使用OpenResty開發Web應用
專案搭建
啟停指令碼
配置檔案
nginx.conf配置檔案
nginx.conf專案配置檔案
業務程式碼
模板
公共Lua庫
功能開發
基於OpenResty的常用功能總結
一些問題
應用資料靜態化架構高效能單頁Web應用
整體架構
CMS系統
前端展示系統
控制系統
資料和模板動態化
多版本機制
異常問題
使用OpenResty開發Web服務
架構
單DB架構
DB+Cache/資料庫讀寫分離架構
OpenResty+Local Redis+Mysql叢集架構
OpenResty+Redis叢集+Mysql叢集架構
實現
後臺邏輯
前臺邏輯
專案搭建
Redis+Twemproxy配置
Mysql+Atlas配置
Java+Tomcat安裝
Java+Tomcat邏輯開發
Nginx+Lua邏輯開發
使用OpenResty開發商品詳情頁
技術選型
核心流程
專案搭建
資料儲存實現
商品基本資訊SSDB叢集配置
商品介紹SSDB叢集配置
其他資訊Redis配置
叢集測試
Twemproxy配置
動態服務實現
專案搭建
專案依賴
核心程式碼
基本資訊服務
商品介紹服務
其他資訊服務
輔助工具
web.xml配置
打WAR包
配置Tomcat
測試
nginx配置
繫結hosts測試
前端展示實現
基礎元件
商品介紹
nginx配置
前端展示
核心程式碼
初始化模組
模板html片段
nginx配置
測試
優化
作者:張開濤
文章出處:開濤的部落格(訂閱號ID: kaitao-1234567)