《億級流量網站架構核心技術》目錄一覽

舉報

  在2011年年底的時候筆者就曾規劃寫一本Spring的書,但是因爲是Spring入門類型的書,框架的內容更新太快,覺得還是寫博客好一些,因此就把寫完的書稿放到了博客(jinnianshilongnian.iteye.com,因爲是龍年開的博客,所以很多網友喊我龍年兄),並持續更新,到現在已經不多五年了。大家再網上找資源時會發現很多內容不成體系,不能系統的學習,這也是我的痛點,因此我寫博客的一個特色就是堅持寫系列文章,想學習某種技術只要我博客有的不需要去其他地方再找了,到現在已經寫過《跟我學Spring》、《Spring雜談》、《跟我學Spring MVC》、《跟我學Shiro》、《跟我學Nginx+Lua》等系列,累計訪問量已超過1000萬。我寫博客還有一個私心:帶新人,當時我們系統架構使用了OpenResty,而我們團隊都是Java程序員,所以就寫了《跟我學Nginx+Lua》,新人跟着教程學一遍就能上手幹活了。

  2015年開始筆者在個人公衆號“開濤的博客”寫《聊聊高併發系統》系列文章,陸續發表了聊聊高併發系統之限流特技、聊聊高併發系統之降級特技、聊聊高併發系統之隊列術、構建需求響應式億級商品詳情頁等文章。這些內容都是筆者在一線使用過的一些,而這些技能是一線程序員或架構師應該掌握的必備技能。而且這一系列也得到了很多讀者反饋和認可,幫助他們解決了系統的一些問題。公衆號發表的有些內容偏理論,很多人不知道怎麼去用,因此就有了豐富理論和實戰內容並出版本書的想法,想學習高可用和高併發系統技能看本書就夠了,並且可以作爲案頭工具書。

  本書暫定名稱爲《億級流量網站架構核心技術——跟開濤學搭建高可用高併發系統》,如有好的書名建議歡迎留言,必當重謝。內容已交由出版社編輯,相信很快就會和大家見面。主要內容結構和目錄如下所示:

  1a4cc63f8f404d4da25be7e6f7d9f0bb_th.jpeg

  36e2a82716e646e5883b8ff9a19d35b1_th.jpeg

  第一部分概述

  高併發原則

  無狀態

  拆分

  服務化

  消息隊列

  數據異構

  緩存銀彈

  併發化

  高可用原則

  降級

  限流

  切流量

  可回滾

  業務設計原則

  防重設計

  冪等設計

  流程可定義

  狀態與狀態機

  後臺系統操作可反饋.

  後臺系統審批化.

  文檔&註釋

  備份

  第二部分 高可用負載均衡與反向代理

  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配置

  測試

  優化


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章