序 前言 *1章 概述1 1.1 互聯網業務特點1 1.2 互聯網架構思維2 1.3 互聯網架構目標與度量2 1.4 互聯網架構方法論4 1.4.1 CAP模型4 1.4.2 AKF Scale Cube擴展立方體8 1.5 互聯網核心架構的演變9 1.5.1 Monolith單體架構10 1.5.2 Microservice微服務架構11 1.5.3 Microservice與SOA14 1.5.4 Servicemesh服務網格架構16 1.5.5 Cloud Native雲原生架構19 *2章 互聯網架構設計模式23 2.1 架構設計的切入點23 2.2 互聯網架構的典型模式23 2.2.1 分層23 2.2.2 分割25 2.2.3 分片26 2.2.4 緩存27 2.2.5 並行27 2.2.6 異步28 2.2.7 隔離29 2.2.8 容錯32 2.2.9 安全33 2.2.10 治理33 第3章 前端架構35 3.1 前端應用35 3.2 前端開發模式35 3.2.1 抽像DOM模式35 3.2.2 MVC模式36 3.2.3 MVP模式36 3.2.4 MVVM模式37 3.2.5 Virtual DOM38 3.2.6 組件化編程39 3.3 響應式wangzhan設計40 3.3.1 服務端響應與客戶端響應41 3.3.2 響應式JS41 3.3.3 響應式CSS41 3.3.4 響應式圖片41 3.3.5 響應式布局41 3.4 單頁面架構43 3.4.1 單頁面應用的定義43 3.4.2 SPA的優缺點43 3.4.3 服務端渲染44 3.4.4 初始頁面優化44 3.4.5 地址堆棧管理45 3.5 微前端架構45 3.5.1 微前端的定義45 3.5.2 微前端的作用45 3.5.3 技術發展路線45 3.5.4 微前端的特點46 3.5.5 微前端的技術架構46 3.6 移動App開發47 3.6.1 Native App47 3.6.2 Hybrid App47 3.7 公眾號、小程序與快應用的開發49 3.7.1 公眾號開發49 3.7.2 小程序開發49 3.7.3 快應用開發50 3.7.4 多端開發框架50 3.8 服務於前端的後端架構BFF51 3.8.1 BFF的用途51 3.8.2 前後端同構51 3.8.3 BFF與Gateway52 3.9 前端優化52 3.9.1 前端性能優化52 3.9.2 搜索引擎優化55 3.9.3 wangzhan運營優化55 第4章 接入架構57 4.1 整體接入架構57 4.2 DNS解析與負載均衡57 4.2.1 DNS域名解析57 4.2.2 DNS負載均衡58 4.3 CDN內容分發網絡59 4.3.1 CDN的作用59 4.3.2 CDN的組成結構60 4.3.3 內容加速原理60 4.3.4 CDN的功能架構61 4.4 反向代理62 4.4.1 正向代理與反向代理62 4.4.2 負載均衡63 4.4.3 Nginx應用架構70 4.5 服務網關75 4.5.1 服務網關與微服務75 4.5.2 服務網關的功能架構76 4.5.3 服務網關的技術架構80 4.5.4 開源服務網關80 4.6 內部繫統集成89 第5章 服務架構91 5.1 服務端架構生態91 5.2 Spring Cloud91 5.2.1 Spring Cloud總體架構91 5.2.2 Spring Cloud核心構成與原理92 5.3 阿裡的微服務中間件Dubbo96 5.3.1 Dubbo整體架構96 5.3.2 Dubbo關聯的中間件和技術98 5.3.3 Dubbo RPC調用過程104 5.3.4 Dubbo面臨的挑戰110 5.4 服務網格中間件Istio111 5.4.1 Istio總體架構111 5.4.2 Istio Envoy114 5.4.3 Istio Pilot115 5.4.4 Istio Mixer117 5.4.5 Istio Citadel118 5.4.6 跨集群服務治理119 5.4.7 Istio面臨的挑戰120 第6章 服務治理121 6.1 配置中心121 6.1.1 配置中心的功能架構121 6.1.2 配置中心的技術架構121 6.1.3 百度的配置中心Disconf123 6.1.4 攜程的配置中心Apollo124 6.1.5 Spring Cloud Config126 6.2 流量控制127 6.2.1 限流算法127 6.2.2 Spring Cloud流量控制中間件Hystrix129 6.2.3 阿裡的流量控制中間件sentinel135 6.2.4 新一代流量控制中間件Resilience4j141 6.3 服務追蹤146 6.3.1 服務調用過程與追蹤要素147 6.3.2 服務追蹤的繫統組成149 6.3.3 服務追蹤中間件Zipkin150 第7章 分布式處理152 7.1 分布式鎖152 7.1.1 分布式鎖的設計目標152 7.1.2 分布式鎖的技術架構152 7.2 分布式ID155 7.2.1 分布式ID的設計目標155 7.2.2 分布式ID的技術架構156 7.3 高性能有界隊列Disruptor161 7.3.1 Disruptor的設計目標161 7.3.2 Disruptor的主體結構163 第8章 分布式事務165 8.1 分布式事務的技術背景165 8.2 基於分階段提交的事務165 8.2.1 兩階段提交166 8.2.2 三階段提交167 8.3 基於補償的事務168 8.3.1 Saga模式169 8.3.2 *大努力通知模式173 8.3.3 TCC模式173 8.4 基於可靠消息隊列的事務176 8.5 *終一致性對賬處理177 8.6 阿裡的分布式事務中間件Seata179 8.6.1 Seata AT模式的組成架構179 8.6.2 Seata AT模式的運行原理180 8.6.3 Seata AT模式的隔離機制183 8.6.4 Seata AT模式的特點186 8.7 華為的分布式事務中間件Servicecomb-Saga186 8.7.1 組成架構186 8.7.2 運行原理187 第9章 分布式消息隊列190 9.1 消息隊列的應用場景190 9.2 消息傳遞技術192 9.2.1 管道和過濾器模式192 9.2.2 消息通道193 9.2.3 消息193 9.2.4 消息路由196 9.2.5 消息轉換199 9.2.6 消息端點199 9.2.7 消息管理201 9.3 消息總線202 9.3.1 請求應答模式203 9.3.2 消息總線架構207 9.4 阿裡的消息中間件RocketMQ209 9.4.1 整體結構209 9.4.2 消息存儲212 9.4.3 集群結構214 9.4.4 負載均衡218 9.4.5 順序消息221 9.4.6 重復消息222 9.4.7 消費模式222 9.4.8 消息提交223 9.4.9 消息消費223 9.4.10 過濾查詢224 9.4.11 流量控制225 9.4.12 與消息中間件Kafka的對比226 9.5 Spring Cloud消息傳遞中間件227 9.5.1 Spring Integration227 9.5.2 Spring Cloud Stream232 9.5.3 Spring Cloud Bus237 *10章 分布式緩存240 10.1 緩存概述240 10.2 緩存應用架構240 10.2.1 緩存設計241 10.2.2 緩存更新242 10.2.3 緩存雪崩242 10.2.4 緩存穿透242 10.2.5 緩存擊穿244 10.2.6 緩存預熱244 10.2.7 熱點拆分244 10.3 分布式緩存中間件Redis245 10.3.1 Redis介紹245 10.3.2 Redis集群結構250 *11章 數據持久化255 11.1 數據架構255 11.2 存儲技術256 11.2.1 RAID256 11.2.2 存儲架構259 11.2.3 OpenStack Swift262 11.3 關繫數據庫的應用架構266 11.3.1 讀寫分離架構266 11.3.2 冷熱分離架構267 11.3.3 分庫分表架構267 11.3.4 MySQL高可用架構274 *12章 DevOps279 12.1 DevOps的概念和工具279 12.2 容器與環境280 12.2.1 環境管理280 12.2.2 容器管理282 12.3 持續協作284 12.4 開發管理284 12.4.1 開發協作的主要工具284 12.4.2 Mock技術285 12.5 發布管理285 12.5.1 管理控制臺286 12.5.2 自動化部署286 12.5.3 灰度發布287 12.6 測試管理287 12.7 運維管理289 12.7.1 繫統監控289 12.7.2 日志分析291 |