架構解密 從分布式到微服務+人人都是架構師+Spring Cloud與Docker微服務架構實戰+億級流量網站架構核心技術 軟件開發技術基礎書
9787121315626 9787121312717 9787121313011 9787121309540 9787121312380
架構解密:從分布式到微服務
曆經三年終齣版!從你想瞭解的源碼、理論、經驗、視野等維度,對從分布式到微服務,進行架構解密!
分布式架構與微服務平颱是當今IT界的關鍵技術,也是資深軟件工程師和係統架構師必須掌握的核心技術。《架構解密:從分布式到微服務》以從傳統分布式架構遷移到基於容器技術的微服務架構為主綫,全麵、透徹地介紹瞭與分布式架構及微服務相關的知識和技術。《架構解密:從分布式到微服務》一開始並沒有提及分布式的枯燥理論,而是講述瞭一段精彩的IT發展史,其中重點講述瞭大型機、UNIX小機器的沒落與X86平颱的崛起,從而巧妙地引齣CPU、內存、網絡、存儲的分布式演進過程,這恰恰是分布式軟件係統賴以運行的“物質基礎”。然後簡明扼要地介紹瞭進行係統架構所必需的網絡基礎,並詳細介紹瞭分布式係統中的**理論、設計套路及RPC通信,對內存、SOA架構、分布式存儲、分布式計算等進行瞭深度解析,·後詳細介紹瞭全文檢索與消息隊列中間件,以及微服務架構所涉及的重點內容。 《架構解密:從分布式到微服務》是Leader-us多年架構經驗的傾情分享,主要麵嚮關注分布式架構及微服務,以及有誌於成為實力派架構師的IT人士。
Leader-us,本名吳治輝,惠普資深軟件架構師,國內知名開源分布式數據庫中間件 Mycat的發起人,精通Java編程,擁有超過16年軟件研發經驗,專注於電信和雲計算方麵的軟件研發,參與過眾多分布式與雲計算相關的大型項目架構設計和 Coding,是業界少有的具備很強 Coding 能力的 S級資深架構師;曾經選拔和培養瞭大批**Java工程師,他們中的大多數人進入知名軟件公司參與核心研發,也有一些人選擇創業。 Leader-us 也是《ZeroC Ice 木又威指南》《Kubernetes 木又威指南:從 Docker到 Kubernetes 實踐全接觸》的作者。
第1章 大話分布式係統 11.1 IT爭霸戰 11.1.1 劃時代的,颱計算機 11.1.2 IT界的恐龍時代 41.1.3 貴族的沒落與平民的勝利 61.1.4 ARM新貴的爆發 101.1.5 超級計算機的絕地反擊 111.2 分布式係統的開國元勛 131.3 分布式係統的基石:TCP/IP 171.4 從無奈到崛起的CDN網 191.5 這是一個·好的時代 21第2章 “知識木桶”中的短闆—— 網絡基礎 232.1 即使高手也不大懂的網絡 232.2 NIO,一本難念的經 302.2.1 難懂的ByteBuffer 302.2.2 晦澀的“非阻塞” 392.2.3 復雜的Reactor模型 412.3 AIO,大道至簡的設計與苦澀的現實 452.4 網絡傳輸中的對象序列化問題 50第3章 分布式係統的**基礎理論 553.1 從分布式係統的設計理念說起 553.2 分布式係統的一緻性原理 583.3 分布式係統的基石之ZooKeeper 613.3.1 ZooKeeper的原理與功能 613.3.2 ZooKeeper的場景案例分析 653.4 **的CA理論 693.5 BASE準則,一個影響深遠的指導思想 723.6 重新認識分布式事務 733.6.1 數據庫單機事務的實現原理 733.6.2 **的X/OpenDTP事務模型 753.6.3 互聯網中的分布式事務解決方案 78第4章 聊聊RPC 834.1 從IPC通信說起 834.2 古老又有生命力的RPC 854.3 從RPC到服務治理框架 914.4 基於ZeroC Ice的微服務架構指南 944.4.1 微服務架構概述 954.4.2 ZeroC Ice微服務架構指南 100第5章 深入淺析內存 1075.1 你所不知道的內存知識 1075.1.1 復雜的CPU與單純的內存 1075.1.2 多核CPU與內存共享的問題 1105.1.3 著名的Cache僞共享問題 1135.1.4 深入理解不一緻性內存 1155.2 內存計算技術的前世今生 1185.3 內存緩存技術分析 1235.3.1 緩存概述 123
億級流量網站架構核心技術 跟開濤學搭建高可用高並發係統
億級流量網站架構核心技術》一書總結並梳理瞭億級流量網站高可用和高並發原則,通過實例詳細介紹瞭如何落地這些原則。本書分為四部分:概述、高可用原則、高並發原則、案例實戰。從負載均衡、限流、降級、隔離、超時與重試、迴滾機製、壓測與預案、緩存、池化、異步化、擴容、隊列等多方麵詳細介紹瞭億級流量網站的架構核心技術,讓讀者看後能快速運用到實踐項目中。
不管是軟件開發人員,還是運維人員,通過閱讀《億級流量網站架構核心技術》都能係統地學習實現億級流量網站的架構核心技術,並收獲解決係統問題的思路和方法。
張開濤,現就職於京東,“開濤的博客”公眾號作者。寫過《跟我學Spring》《跟我學Spring MVC》《跟我學Shiro》《跟我學Nginx+Lua開發》等係列教程,博客現有1000多萬訪問量。
第1部分 概述 / 1
1 交易型係統設計的一些原則 / 2
1.1 高並發原則 / 3
1.1.1 無狀態 / 3
1.1.2 拆分 / 3
1.1.3 服務化 / 4
1.1.4 消息隊列 / 4
1.1.5 數據異構 / 6
1.1.6 緩存銀彈 / 7
1.1.7 並發化 / 9
1.2 高可用原則 / 10
1.2.1 降級 / 10
1.2.2 限流 / 11
1.2.3 切流量 / 12
1.2.4 可迴滾 / 12
1.3 業務設計原則 / 12
1.3.1 防重設計 / 13
1.3.2 冪等設計 / 13
1.3.3 流程可定義 / 13
1.3.4 狀態與狀態機 / 13
1.3.5 後颱係統操作可反饋 / 14
1.3.6 後颱係統審批化 / 14
1.3.7 文檔和注釋 / 14
1.3.8 備份 / 14
1.4 總結 / 14
第2部分 高可用 / 17
2 負載均衡與反嚮代理 / 18
2.1 upstream配置 / 20
2.2 負載均衡算法 / 21
2.3 失敗重試 / 23
2.4 健康檢查 / 24
2.4.1 TCP心跳檢查 / 24
2.4.2 HTTP心跳檢查 / 25
2.5 其他配置 / 25
2.5.1 域名上遊服務器 / 25
..........
Spring Cloud微服務實戰+Spring Cloud與Docker微服務架構實戰
Spring Cloud與Docker微服務架構實戰
- 作者:
- 齣版社:
- ISBN:9787121312717
- 上架時間:2017-4-6
- 齣版日期:2017 年4月
- 開本:16開
- 頁碼:268
- 版次:1-1
- 所屬分類:
作為一部幫助大傢實現微服務架構落地的作品,《Spring Cloud與Docker微服務架構實戰》覆蓋瞭微服務理論、微服務開發框架(Spring Cloud)以及運行平颱(Docker)三大主題。全書可分為三部分,第1章對微服務架構進行瞭係統的介紹;第2-11章使用Spring Cloud開發框架編寫瞭一個"電影售票係統";第12-14章則講解瞭如何將微服務應用運行在Docker之上。全書Demo驅動學習,以連貫的場景、具體的代碼示例來引導讀者學習相關知識,·終使用特定的技術棧實現微服務架構的落地。
熱愛技術交流,曾代錶公司參加全球微服務架構高峰論壇、QCon等技術沙龍。擁抱開源,在GitHub與Git@OSC上開源多個項目,並獲得瞭開源中國的推薦,例如開源電子書《使用Spring Cloud與Docker實戰微服務》等。
筆者博客:http://itmuch.com,定期分享Spring Cloud相關博客。讀者可掃碼關注Spring Cloud 中國社區公眾號以及作者公眾號。
- 1 微服務架構概述. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.1 單體應用架構存在的問題1
1.2 如何解決單體應用架構存在的問題3
1.3 什麼是微服務3
1.4 微服務架構的優點與挑戰5
1.4.1 微服務架構的優點5
1.4.2 微服務架構麵臨的挑戰5
1.5 微服務設計原則6
1.6 如何實現微服務架構7
1.6.1 技術選型7
1.6.2 架構圖及常用組件8
2 微服務開發框架--Spring Cloud . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.1 Spring Cloud 簡介10
2.2 Spring Cloud 特點10
2.3 Spring Cloud 版本11
2.3.1 版本簡介11
2.3.2 子項目一覽12
2.3.3 Spring Cloud/Spring Boot 版本兼容性13
3 開始使用Spring Cloud 實戰微服務. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.1 Spring Cloud 實戰前提143 開始使用Spring Cloud 實戰微服務. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.1 Spring Cloud 實戰前提14
3.1.1 技術儲備14
3.1.2 工具及軟件版本15
3.2 服務提供者與服務消費者16
3.3 編寫服務提供者16
人人都是架構師:分布式係統架構落地與瓶頸突破
《人人都是架構師:分布式係統架構落地與瓶頸突破》並沒有過多渲染係統架構的理論知識,而是切切實實站在開發一綫角度,為各位讀者詮釋瞭大型網站在架構演變過程中齣現一係列技術難題時的解決方案。《人人都是架構師:分布式係統架構落地與瓶頸突破》首先從分布式服務案例開始介紹,重點為大傢講解瞭大規模服務化場景下企業應該如何實施服務治理;然後在大流量限流/消峰案例中,筆者為大傢講解瞭應該如何有效地對流量實施管製,避免大流量對係統産生較大衝擊,確保核心業務的穩定運行;接著筆者為大傢講解瞭分布式配置管理服務;之後的幾章,筆者不僅為大傢講解瞭秒殺、限時搶購場景下熱點數據的讀/寫優化案例,還為大傢講解瞭數據庫實施分庫分錶改造後所帶來的一係列影響的解決方案。
《人人都是架構師:分布式係統架構落地與瓶頸突破》適用於任何對分布式係統架構感興趣的架構師、開發人員以及運維人員。相信閱讀《人人都是架構師:分布式係統架構落地與瓶頸突破》你將會有知其然和知其所以然的暢快感。
目錄
第1章 分布式服務案例 1
1.1 分布式係統的架構演變過程 2
1.1.1 單機係統 3
1.1.2 集群架構 4
1.1.3 拆係統之業務垂直化 6
1.1.4 為什麼需要實現服務化架構 8
1.1.5 服務拆分粒度之微服務 10
1.2 係統服務化需求 11
1.2.1 服務化與RPC協議 11
1.2.2 使用阿裏分布式服務框架Dubbo實現服務化 12
1.2.3 警惕Dubbo因超時和重試引起的係統雪崩 16
1.2.4 服務治理方案 18
1.2.5 關於服務化後的分布式事務問題 201.3 分布式調用跟蹤係統需求 21
1.3.1 Google的Dapper論文簡介 22
1.3.2 基於Dubbo實現分布式調用跟蹤係統方案 25
1.3.3 采樣率方案 35
1.4 本章小結 37
第2章 大流量限流/消峰案例 38
2.1 分布式係統為什麼需要進行流量管製 39
2.2 限流的具體方案 42
2.2.1 常見的限流算法 43
2.2.2 使用Google的Guava實現平均速率限流 45
2.2.3 使用Nginx實現接入層限流 48
2.2.4 使用計數器算法實現商品搶購限流 49
2.3 基於時間分片的消峰方案 51
2.3.1 活動分時段進行實現消峰 52
2.3.2 通過答題驗證實現消峰 52
2.4 異步調用需求 53
2.4.1 使用MQ實現係統之間的解耦 54
2.4.2 使用Apache開源的ActiveMQ實現異步調用 55
2.4.3 使用阿裏開源的RocketMQ實現互聯網場景下的流量消峰 61
2.4.4 基於MQ方案實現流量消峰的一些典型案例 72
2.5 本章小結 75
第3章 分布式配置管理服務案例 76
3.1 本地配置 77
3.1.1 將配置信息耦閤在業務代碼中 77
3.1.2 將配置信息配置在配置文件中 79
3.2 集中式資源配置需求 82
3.2.1 分布式一緻性協調服務ZooKeeper簡介 83
3.2.2 ZooKeeper的下載與集群安裝 84
3.2.3 ZooKeeper的基本使用技巧 86
3.2.4 基於ZooKeeper實現分布式配置管理平颱方案 87
3.2.5 從配置中心獲取Spring的Bean定義實現Bean動態注冊 93
3.2.6 容災方案 95
3.2.7 使用淘寶Diamond實現分布式配置管理服務 96
3.2.8 Diamond與ZooKeeper的細節差異 101
3.2.9 使用百度Disconf實現分布式配置管理服務 102
3.3 本章小結 110
第4章 大促場景下熱點數據的讀/寫優化案例 111
4.1 緩存技術簡介 112
4.1.1 使用Ehcache實現數據緩存 114
4.1.2 LocalCache存在的弊端 116
4.1.3 神秘的off-heap技術 117
4.2 高性能分布式緩存Redis簡介 120
4.2.1 使用Jedis客戶端操作Redis 121
4.2.2 使用Redis集群實現數據水平化存儲 122
4.3 同一熱賣商品高並發讀需求 124
4.3.1 Redis集群多寫多讀方案 125
4.3.2 保障多寫時的數據一緻性 126
4.3.3 LocalCache結閤Redis集群的多級Cache方案 128
4.3.4 實時熱點自動發現方案 130
4.4 同一熱賣商品高並發寫需求 132
4.4.1 InnoDB行鎖引起數據庫TPS下降 132
4.4.2 在Redis中扣減熱賣商品庫存方案 134
4.4.3 熱賣商品庫存扣減優化方案 138
4.4.4 控製單機並發寫流量方案 141
4.4.5 使用阿裏開源的AliSQL數據庫提升秒殺場景性能 142
4.5 本章小結 148
第5章 數據庫分庫分錶案例 149
5.1 關係型數據庫的架構演變 150
深入探索軟件係統構建的藝術與科學 在瞬息萬變的數字時代,構建能夠承受高並發、可擴展且易於維護的軟件係統,已成為每一個技術團隊麵臨的核心挑戰。本書並非一本關於特定框架或工具的堆砌,而是一次對軟件架構本質的深度挖掘,旨在為您揭示設計優秀係統背後的思維模式、原則與最佳實踐。它將引領您穿越復雜的技術迷霧,理解為何某些係統能夠輕鬆應對海量用戶,為何某些架構能夠在日新月異的需求變化中保持活力,以及如何從零開始,打造齣兼具性能、彈性與健壯性的下一代軟件解決方案。 洞察係統設計的底層邏輯,構建堅不可摧的基石 本書的首要目標是幫助您建立對軟件係統整體運作的深刻理解。我們將從最基礎的層麵齣發,探討信息流、控製流以及數據如何在分布式環境中協同工作。您將學習到如何進行有效的係統分解,將龐大而復雜的係統拆分成更小、更易於管理和理解的組件。這不僅僅是關於“分而治之”的口號,而是關於如何根據業務邏輯、技術特性和團隊協作模式,設計齣閤理的邊界和清晰的接口,從而實現模塊化、低耦閤的設計目標。 我們將深入分析不同類型係統的特點,例如,同步與異步通信的權衡,無狀態與有狀態服務的區彆,以及它們在麵臨不同場景時的優劣勢。您將瞭解到,在一個高並發的環境中,如何通過異步化、隊列、事件驅動等機製來削峰填榖,避免係統因突發流量而崩潰。同時,對於需要實時交互的場景,如何設計低延遲、高吞吐的通信方案,確保用戶體驗的流暢性。 掌握應對海量流量的秘訣,鍛造係統的韌性 麵對互聯網時代的用戶爆炸式增長,如何設計能夠承載億級流量的係統,是衡量一個架構師能力的關鍵指標。本書將係統地剖析支撐海量流量的核心技術原理和實踐經驗。您將瞭解到,應對高並發並非簡單地增加服務器數量,而是需要從多個維度進行優化和設計。 我們將詳細講解負載均衡的藝術,從簡單的輪詢、加權輪詢,到更智能的基於健康檢查、響應時間的自適應負載均衡。您將理解不同負載均衡策略在不同場景下的適用性,以及如何設計一套健壯的負載均衡方案,確保流量能夠均勻、高效地分配到各個服務節點。 緩存,作為提升係統性能、降低數據庫壓力的關鍵手段,本書將對其進行全麵深入的探討。從本地緩存、分布式緩存,到各種緩存淘汰策略(LRU, LFU, FIFO等),再到緩存一緻性問題的解決之道(如基於消息隊列的異步更新、分布式鎖的配閤等),您將掌握如何根據業務場景選擇最閤適的緩存方案,以及如何設計高效的緩存更新與失效機製,確保數據的及時性和一緻性。 數據庫是任何係統的核心,在高並發場景下,如何設計和優化數據庫,使其能夠承受巨大的讀寫壓力,是至關重要的。本書將講解數據庫分片(Sharding)的各種策略,包括水平分片、垂直分片,以及如何選擇閤適的分片鍵,避免熱點問題。您還將學習到如何利用讀寫分離、索引優化、SQL調優等手段,顯著提升數據庫的查詢性能和並發處理能力。此外,對於海量數據的存儲和管理,本書也將為您介紹數據倉庫、數據湖等概念,以及它們在支撐大數據分析和挖掘方麵的作用。 構建靈活敏捷的微服務體係,擁抱變化 微服務架構以其帶來的高內聚、低耦閤、獨立部署和技術異構性等優勢,成為當前軟件開發的主流趨勢。本書將引導您深入理解微服務架構的設計理念與落地實踐,幫助您構建一套靈活、敏捷、可擴展的微服務體係。 您將學習到如何對業務進行閤理的拆分,將單體應用逐步演進為微服務,並掌握服務拆分過程中可能遇到的各種挑戰,例如如何定義服務的邊界、如何處理服務間的依賴關係、如何進行接口定義與演進等。 服務注冊與發現是微服務架構的基石。本書將詳細講解服務注冊中心(如Eureka, Consul, ZooKeeper)的工作原理,以及客戶端發現、服務端發現等不同服務發現機製的優劣。您將理解如何通過服務注冊與發現,實現服務的動態發現與靈活調度,從而為係統的彈性伸縮奠定基礎。 服務治理,包括服務間的通信、容錯、降級、限流、監控等,是微服務成功的關鍵。本書將深入探討服務間通信的各種技術(如RESTful API, gRPC, 消息隊列),以及如何通過API Gateway來統一對外接口、實現認證鑒權、請求路由等功能。您還將學習到如何利用Hystrix、Sentinel等熔斷降級框架,構建係統的彈性,避免單個服務的故障擴散到整個係統。此外,對於分布式事務的復雜性,本書也將為您提供切實可行的解決方案。 打造高效團隊協作的通用語言,賦能全員 優秀的軟件架構並非少數頂尖工程師的專利,而是需要團隊成員共同理解和踐行的理念。本書將強調“人人都是架構師”的理念,並非要求每個人都成為高級架構師,而是希望通過分享通用的架構思維和設計原則,賦能團隊中的每一位成員,讓他們能夠在自己的職責範圍內,做齣符閤整體架構要求的決策。 我們將探討如何建立清晰的溝通機製,確保不同技術棧、不同角色的團隊成員能夠有效地交流和協作。您將學習到如何通過模型驅動設計、領域驅動設計(DDD)等方法,將復雜的業務需求轉化為清晰的設計藍圖,從而減少溝通成本,提高開發效率。 本書還將關注軟件架構的演進與生命周期管理。一個優秀的架構並非一成不變,而是需要隨著業務的發展和技術的進步而不斷演化。您將學習到如何進行架構評估,識彆潛在的技術債務,並製定閤理的重構計劃。同時,本書也將強調持續集成(CI)和持續部署(CD)的重要性,通過自動化工具和流程,加速軟件的交付速度,並降低發布風險。 超越技術本身,塑造卓越的係統思維 本書的目標是超越對具體技術的羅列,著重培養您在係統設計層麵上的全局觀和前瞻性。您將學會從業務需求齣發,理解技術選擇背後的權衡,並能夠為不同的業務場景設計齣最優的解決方案。 我們將引導您思考: 係統的可伸縮性(Scalability): 如何設計一個能夠隨著用戶增長而平滑擴展的係統? 係統的可用性(Availability): 如何確保係統在各種異常情況下都能保持穩定運行,提供不間斷的服務? 係統的性能(Performance): 如何在滿足業務需求的同時,實現最優的響應速度和吞吐量? 係統的可維護性(Maintainability): 如何設計一個易於理解、易於修改、易於擴展的係統? 係統的安全性(Security): 如何在設計階段就考慮安全因素,構建一道堅實的防綫? 通過閱讀本書,您將能夠: 建立堅實的係統設計基礎: 掌握軟件架構的核心原則與設計模式。 提升解決復雜問題的能力: 能夠分析和診斷復雜的係統問題,並提齣有效的解決方案。 掌握高並發係統設計的關鍵技術: 能夠設計和實現能夠承受海量流量的係統。 構建靈活可擴展的微服務體係: 能夠有效地拆分和管理微服務,擁抱敏捷開發。 培養全局視野和前瞻性思維: 能夠從更宏觀的角度審視軟件係統,做齣更明智的技術決策。 無論您是初入職場的技術新人,還是經驗豐富的資深工程師,抑或是渴望提升係統設計能力的團隊領導者,本書都將為您提供寶貴的啓示和實用的指導,助您在軟件架構的道路上不斷精進,打造齣真正卓越的軟件係統。