预购商品
书目分类
特别推荐
第1章 走進分散式系統 1 1.1 分散式系統簡介 2 1.1.1 分散式系統的架構演變過程 2 1.1.2 分散式系統的特性 6 1.1.3 分散式系統帶來的問題 6 1.2 分散式中介軟體簡介 7 1.2.1 什麼是分散式中介軟體 7 1.2.2 常用的分散式中介軟體 8 1.3?小結?8 第2章 Spring微服務實戰 9 2.1 Spring Boot實戰 10 2.1.1 什麼是Spring Boot 10 2.1.2 創建Spring Boot項目 10 2.1.3 實戰:Spring Boot定時訪問資料庫 13 2.2 Spring Cloud實戰 18 2.2.1 什麼是Spring Cloud 18 2.2.2 從電商系統看Spring Cloud基本架構 18 2.2.3 實戰:動手搭建Spring Cloud電商專案 22 2.3 小結 33 第3章 容器技術簡介 34 3.1 Docker簡介 35 3.1.1 什麼是Docker 35 3.1.2 動手安裝Docker環境 36 3.1.3 Docker鏡像常用命令 37 3.1.4 Docker容器常用命令 39 3.1.5 Dockerfile介紹 42 3.1.6 實戰:Docker打包Spring Boot項目 45 3.2 Kubernetes簡介 49 3.2.1 什麼是Kubernetes 49 3.2.2 動手搭建Kubernetes集群 51 3.2.3 實戰:Kubernetes部署Spring Boot專案 55 3.3 小結 57 第4章 消息中介軟體概述 58 4.1 消息中介軟體簡介 59 4.1.1 同步的概念 59 4.1.2 非同步調用 60 4.1.3 什麼是消息中介軟體 60 4.2 消息中介軟體的作用 61 4.2.1 非同步化提升性能 61 4.2.2 降低耦合度 62 4.2.3 流量削峰 63 4.3 常見的消息中介軟體 64 4.3.1 ActiveMQ 64 4.3.2 RabbitMQ 65 4.3.3 RocketMQ 66 4.3.4 Kafka 67 4.4 RocketMQ的基本架構 69 4.4.1 RocketMQ是如何承受高併發的 69 4.4.2 RocketMQ如何存儲大量消息資料 69 4.4.3 RocketMQ是如何處理宕機的 70 4.4.4 如何知道我該訪問哪個Broker 71 4.5 電商系統面臨的技術挑戰 72 4.5.1 再談電商系統業務流程 72 4.5.2 退款與取消支付流程 74 4.5.3 大資料團隊帶來的技術挑戰 75 4.6 小結 75 第5章 NameServer 76 5.1 NameServer概述 77 5.2 NameServer與其他元件的交互流程 77 5.2.1 Broker如何向NameServer註冊資訊 77 5.2.2 系統如何從NameServer獲取資訊 79 5.2.3 NameServer如何感知到Broker宕機 79 5.2.4 系統如何感知到Broker宕機 80 5.3 小結 81 第6章 RocketMQ的高可用 82 6.1 Broker的主從架構 83 6.1.1 Master Broker與Slave Broker之間的消息同步 83 6.1.2 Master Broker與Slave Broker的讀寫分離 83 6.1.3 Master Broker與Slave Broker的宕機處理 84 6.1.4 Dledger實現RocketMQ的高可用 85 6.2 Dledger的自動切換原理 85 6.2.1 使用Dledger技術替換CommitLog 85 6.2.2 Dledger怎麼選舉Leader 86 6.2.3 Dledger的資料同步機制 87 6.3 其他消息中介軟體的高可用 87 6.3.1 RabbitMQ的高可用 88 6.3.2 Kafka的高可用 89 6.4?實戰——部署一個RocketMQ集群?91 6.4.1 單機快速部署 91 6.4.2 使用三台機器部署NameServer 92 6.4.3 使用三台機器部署Broker 93 6.4.4 補充說明實踐中的問題 94 6.5 實戰——RocketMQ的視覺化監控管理 95 6.5.1 部署視覺化監控工具 95 6.5.2 如何使用控制台 95 6.6 實戰——RocketMQ的生產環境參數調整 97 6.6.1 OS內核參數調整 97 6.6.2 JVM參數調整 98 6.6.3 RocketMQ參數調整 98 6.7 小結 99 第7章 生產者與消費者 100 7.1 發送模式與消費模式 101 7.1.1 RocketMQ的發送模式 101 7.1.2 RocketMQ的消費模式 104 7.2 生產者發送消息的底層原理 105 7.2.1 什麼是MessageQueue 106 7.2.2 生產者發送消息存入哪個MessageQueue 107 7.2.3 如果Broker發生故障怎麼辦 107 7.3 Broker的持久化 108 7.3.1 CommitLog 108 7.3.2 MessageQueue是如何存儲的 109 7.3.3 寫入CommitLog的性能探索 110 7.3.4 同步刷盤和非同步刷盤 110 7.4 消費者獲取消息的底層原理 111 7.4.1 消費者組 111 7.4.2 集群模式和廣播模式 112 7.4.3 MessageQueue與消費者的關係 113 7.4.4 Push模式和Pull模式 113 7.4.5 Broker如何讀取消息返回給消費者 114 7.5 實戰——使用代碼來操作RocketMQ 115 7.5.1 原生代碼實現 115 7.5.2 Spring Boot實現 116 7.6 實戰——對RocketMQ集群進行壓測 121 7.6.1 壓測的指標 122 7.6.2 動手實踐壓測 122 7.7 小結 126 第8章 RocketMQ的實際問題與解決方案 127 8.1 消息是怎麼丟失的 128 8.1.1 引入訂單業務 128 8.1.2 訂單系統推送消息過程中會丟失消息嗎 129 8.1.3 MQ接收到消息後,自己會把消息弄丟嗎 129 8.1.4 積分系統消費到了消息就能保證消息的不丟失了嗎 130 8.2 RocketMQ消息丟失解決方案:事務消息 131 8.2.1 half消息機制 131 8.2.2 half消息的流程分析 132 8.3 RocketMQ消息丟失解決方案:同步刷盤+手動提交 134 8.3.1 Broker的消息丟失解決方案 135 8.3.2 Consumer的消息丟失解決方案 135 8.3.3 消息零丟失方案的優缺點分析 136 8.4 探索RocketMQ的重複消費和亂序問題 136 8.4.1 為什麼會重複消費 137 8.4.2 消息重試、延時消息、無效信件佇列 138 8.4.3 消息亂序 139 8.5 實戰:RocketMQ高級功能代碼實現 140 8.5.1 事務消息代碼實現 140 8.5.2 順序消息代碼實現 145 8.5.3 消息過濾代碼實現 149 8.5.4 延時消息代碼實現 150 8.6 小結 152 第9章 走進RocketMQ底層 153 9.1 開啟源碼閱讀之路 154 9.1.1 RocketMQ源碼結構介紹 154 9.1.2 啟動NameServer與Broker 156 9.1.3 測試生產消息和消費消息 159 9.2 NameServer源碼解析 160 9.2.1 NameServer的啟動與配置的載入 160 9.2.2 NameServer網路通信的初始化 166 9.2.3 NameServer中Netty是如何啟動的 168 9.3 Broker源碼解析 173 9.3.1 Broker的啟動 173 9.3.2 BrokerController的創建與初始化 177 9.3.3 Broker如何向NameServer註冊 188 9.3.4 NameServer如何接收Broker的請求 198 9.4 Producer與Consumer源碼解析 205 9.4.1 Producer與NameServer的通信 205 9.4.2 Producer與Broker的通信 207 9.4.3 Broker的同步刷盤與非同步刷盤 211 9.4.4 Consumer的創建與啟動 213 9.5 小結 215 第10章 分散式事務 216 10.1 ACID與隔離級別 217 10.1.1 事務的ACID 217 10.1.2 事務的隔離級別 218 10.1.3 MySQL是如何實現可重複讀的 218 10.2 業內分散式事務方案介紹 219 10.2.1 CAP理論與BASE理論 219 10.2.2 XA規範與2PC/3PC分散式事務 220 10.2.3 TCC分散式方案 222 10.2.4 可靠消息最終一致性方案 223 10.3 實戰:分散式事務框架Seata 224 10.3.1 Seata原理介紹 224 10.3.2 Seata Server的部署 224 10.3.3 Seata的代碼實現 226 10.4 小結 227 第11章 分散式鎖 228 11.1 分散式鎖簡介 229 11.1.1 單機系統下的鎖 229 11.1.2 分散式鎖 229 11.2 Zookeeper實現分散式鎖 230 11.2.1 Zookeeper實現分散式鎖的原理 230 11.2.2 實戰:使用Curator實現分散式鎖 231 11.3 Redis實現分散式鎖 233 11.3.1 Redis實現分散式鎖的原理 233 11.3.2 實戰:使用Redisson實現分散式鎖 234 11.4 小結 236 第12章 電商網站系統案例實戰 237 12.1 項目業務分析 238 12.1.1 下單業務 238 12.1.2 支付業務 238 12.2 基礎技術架構與表結構設計 240 12.2.1 技術選型 240 12.2.2 Spring Cloud Alibaba框架搭建 240 12.2.3 資料庫表結構設計 249 12.3 下單業務開發 252 12.3.1 下單介面定義 252 12.3.2 下單介面實現類定義 255 12.3.3 註冊中心Nacos搭建 258 12.3.4 引入Dubbo框架 260 12.3.5 訂單介面實現類開發 264 12.3.6 使用RocketMQ實現失敗補償機制 272 12.4 支付業務開發 278 12.4.1 支付介面定義 278 12.4.2 創建支付訂單 278 12.4.3 支付回檔介面 279 12.4.4 消息的消費 281 12.5 閘道服務的完善 282 12.5.1 閘道服務的搭建 282 12.5.2 測試閘道服務 284 12.6 小結 285
劉猛 網名HUC王子,一名因個人愛好進入IT行業的程式師,擁有多年軟體發展、設計和架構經驗。在中國移動平臺架構組擔任過高級工程師,負責過SAAS化平臺的建設工作,在某互聯網創業公司 擔任過系統架構師,負責整體技術架構演進工作。近年來--直從事企業平臺建設工作,並通過理論指導與實戰演練等方式為企業研發團隊賦能。
最近浏览商品
客服公告
热门活动
订阅电子报