從程序員到架構師:大數據量、緩存、高並發、微服務、多團隊協同等核心場景實戰

王偉傑

買這商品的人也買了...

商品描述

《從程序員到架構師:大數據量、緩存、高並發、微服務、多團隊協同等核心場景實戰》分為數據持久化層場景實戰、
緩存層場景實戰、基於常見組件的微服務場景實戰、微服務進階場景實戰和開發運維場景實戰5個部分,
基於對十餘個架構搭建與改造項目的經驗總結,介紹了大數據量、緩存、高並發、微服務、
多團隊協同等核心場景下的架構設計常見問題及其通用技術方案,包含冷熱分離、查詢分離、
分錶分庫、秒殺架構、註冊發現、熔斷、限流、微服務等具體需求下的技術選型、技術原理、
技術應用、技術要點等內容,將技術講解與實際場景相結合,內容豐富,實戰性強,易於閱讀。
《從程序員到架構師:大數據量、緩存、高並發、微服務、多團隊協同等核心場景實戰》
適合計劃轉型架構師的程序員及希望提升架構設計能力的IT從業人員閱讀。

作者簡介

曾任矽谷上市公司技術總監、知名重資產型互聯網上市公司技術總監、創業公司 CTO。
目前是建信金融科技 基礎技術中心的技術專家。
擁有 15 年互聯網研發經驗,保險、電商、銀行等行業領域都有所涉獵,
落地實踐過數十個架構項目,在微服務、大數據、 AI工程化落地、中台化改造、DevOps 、運維自動化等方面有著豐富的經驗。
拉勾教育架構專欄講師。

目錄大綱


前言
部分 數據持久化層場景實戰
章 冷熱分離/
1.1 業務場景:幾千萬數據量的工單表如何快速優化/
1.2 數據庫分區,從學習到放棄/
1.3 冷熱分離簡介/
1.3.1 什麼是冷熱分離/
1.3.2 什麼情況下使用冷熱分離/
1.4 冷熱分離一期實現思路:冷熱數據都用MySQL/
1.4.1 如何判斷一個數據到底是冷數據還是熱數據/
1.4.2 如何觸發冷熱數據分離/
1.4.3 如何分離冷熱數據/
1.4.4 如何使用冷熱數據/
1.4.5 歷史數據如何遷移/
1.4.6 整體方案/
1.5 冷熱分離二期實現思路:冷數據存放到HBase/
1.5.1 冷熱分離一期解決方案的不足/
1.5.2 歸檔工單的使用場景/
1.5.3 HBase原理介紹/
1.5.4 HBase的表結構設計/
1.5.5 二期的代碼改造/
1.6 小結/
第2章 查詢分離/
2.1 業務場景:千萬工單表如何實現快速查詢/
2.2 查詢分離簡介/
2.2.1 何為查詢分離/
2.2.2 何種場景下使用查詢分離/
2.3 查詢分離實現思路/
2.3.1 如何觸發查詢分離/
2.3.2 如何實現查詢分離/
2.3.3 查詢數據如何存儲/
2.3.4 查詢數據如何使用/
2.3.5 歷史數據遷移/
2.3.6 MQ + Elasticsearch的整體方案/
2.4 Elasticsearch注意事項/
2.4.1 如何使用Elasticsearch設計表結構/
2.4.2 Elasticsearch的存儲結構/
2.4.3 Elasticsearch如何修改表結構/
2.4.4 陷阱一:Elasticsearch是準實時的嗎/
2.4.5 陷阱二:Elasticsearch宕機恢復後,數據丟失/
2.4.6 陷阱三:分頁越深,查詢效率越低/
2.5 小結/
第3章 分錶分庫/
3.1 業務場景:億級訂單數據如何實現快速讀寫/
3.2 拆分存儲的技術選型/
3.2.1 MySQL的分區技術/
3.2.2 NoSQL/
3.2.3 NewSQL/
3.2.4 基於MySQL的分錶分庫/
3.3 分錶分庫實現思路/
3.3.1 使用什麼字段作為分片主鍵/
3.3.2 分片的策略是什麼/
3.3.3 業務代碼如何修改/
3.3.4 歷史數據如何遷移/
3.3.5 未來的擴容方案是什麼/
3.4 小結/
第2部分 緩存層場景實戰
第4章 讀緩存/
4.1 業務場景:如何將十幾秒的查詢請求優化成毫秒級/
4.2 緩存中間件技術選型(Memcached,MongoDB,Redis)/
4.3 緩存何時存儲數據/
4.4 如何更新緩存/
4.4.1 組合1:先更新緩存,再更新數據庫/
4.4.2 組合2:先刪除緩存,再更新數據庫/
4.4.3 組合3:先更新數據庫,再更新緩存/
4.4.4 組合4:先更新數據庫,再刪除緩存/
4.4.5 組合5:先刪除緩存,更新數據庫,再刪除緩存/
4.5 緩存的高可用設計/
4.6 緩存的監控/
4.7 小結/
第5章 寫緩存/
5.1 業務場景:如何以代價解決短期高頻寫請求/
5.2 寫緩存/
5.3 實現思路/
5.3.1 寫請求與批量落庫這兩個操作同步還是異步/
5.3.2 如何觸發批量落庫/
5.3.3 緩存數據存儲在哪裡/
5.3.4 緩存層並發操作需要注意什麼/
5.3.5 批量落庫失敗了怎麼辦/
5.3.6 Redis的高可用配置/
5.4 小結/
第6章 數據收集/
6.1 業務背景:日億萬級請求日誌收集如何不影響主業務/
6.2 技術選型思路/
6.2.1 使用什麼技術保存埋點數據的現場/
6.2.2 使用什麼技術收集日誌數據到持久化層/
6.2.3 為什麼使用Kafka/
6.2.4 使用什麼技術把Kafka的數據遷移到持久化層/
6.3 整體方案/
6.4 小結/
第7章 秒殺架構/
7.1 業務場景:設計秒殺架構必知必會的那些事/
7.2 整體思路/
7.2.1 瀏覽頁面如何將請求攔截在上游/
7.2.2 下單頁面如何將請求攔截在上游/
7.2.3 付款頁面如何將請求攔截在上游/
7.2.4 整體服務器架構/
7.3 小結/
第3部分 基於常見組件的微服務場景實戰
第8章 註冊發現/
8.1 業務場景:如何對幾十個後台服務進行高效管理/
8.2 傳統架構會出現的問題/
8.2.1 配置煩瑣,上線容易出錯/
8.2.2 加機器要重啟/
8.2.3 負載均衡單點/
8.2.4 管理困難/
8.3 新架構要點/
8.3.1 中心存儲服務使用什麼技術/
8.3.2 使用哪個分佈式協調服務/
8.3.3 基於ZooKeeper需要實現哪些功能/
8.4 ZooKeeper宕機了怎麼辦/
8.5 小結/
第9章 全鏈路日誌/
9.1 業務場景:這個請求到底經歷了什麼/
9.2 技術選型/
9.2.1 日誌數據結構支持OpenTracing/
9.2.2 支持Elasticsearch作為存儲系統/
9.2.3 保證日誌的收集對性能無影響/
9.2.4 查詢統計功能的豐富程度/
9.2.5 使用案例/
9.2.6 最終選擇/
9.3 注意事項/
9.3.1 SkyWalking的數據收集機制/
9.3.2 如果SkyWalking服務端宕機了,會出現什麼情況/
9.3.3 流量較大時,如何控制日誌的數據量/
9.3.4 日誌的保存時間/
9.3.5 集群配置:如何確保高可用/
9.4 小結/
10章 熔斷/
10.1 業務場景:如何預防一個服務故障影響整個系統/
10.1.1 個問題:請求慢/
10.1.2 第二個問題:流量洪峰緩存超時/
10.2 覆蓋場景/
10.3 Sentinel 和Hystrix/
10.4 Hystrix的設計思路/
10.4.1 線程隔離機制/
10.4.2 熔斷機制/
10.4.3 滾動(滑動)時間窗口/
10.4.4 Hystrix調用接口的請求處理流程/
10.5 注意事項/
10.5.1 數據一致性/
10.5.2 超時降級/
10.5.3 用戶體驗