本書暫定名稱爲《億級流量網站架構核心技術——跟開濤學搭建高可用高併發系統》,若有好的書名建議歡迎留言,必當重謝。內容已交由出版社編輯,相信很快就會和你們見面。主要內容結構和目錄以下所示:html
高併發原則前端
無狀態mysql
拆分nginx
服務化web
消息隊列redis
數據異構算法
緩存銀彈sql
併發化數據庫
高可用原則緩存
降級
限流
切流量
可回滾
業務設計原則
防重設計
冪等設計
流程可定義
狀態與狀態機
後臺系統操做可反饋.
後臺系統審批化.
文檔&註釋
備份
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配置
測試
優化