可伸縮服務架構:框架與中間件

可伸縮服務架構:框架與中間件 下載 mobi epub pdf 電子書 2025

李艷鵬,楊彪,李海亮,賈博岩,劉淏 著
圖書標籤:
  • 微服務
  • 服務架構
  • 可伸縮性
  • 雲計算
  • 中間件
  • 分布式係統
  • 軟件架構
  • 企業應用
  • 係統設計
  • 高可用性
想要找書就要到 圖書大百科
立刻按 ctrl+D收藏本頁
你會得到大驚喜!!
齣版社: 電子工業齣版社
ISBN:9787121335723
版次:1
商品編碼:12308233
品牌:Broadview
包裝:平裝
開本:16開
齣版時間:2018-03-01
用紙:膠版紙
頁數:580
字數:700000

具體描述

産品特色

編輯推薦

適讀人群 :無論是對於互聯網的或者傳統的軟件工程師、測試工程師、架構師,還是對於深耕於IT的其他管理人員,本書都有很強的藉鑒性和參考價值,是值得每個技術人員閱讀的架構級技術書。

√ 雲時代架構係列經典!重磅級架構書2018年重磅上市!

√ 詳解高可用架構設計的核心要點:可伸縮與可擴展

√ 詳解分布式發號器、消息隊列框架、數據庫分庫分錶、緩存、Elasticsearch、分布式調度任務、RPC服務、Dubbo、高性能網絡代理中間件等

√ 全麵破解可伸縮服務架構的奧秘

√ 分布式服務架構:原理、設計與實戰讀者的配套技能升級架構書。

內容簡介

《可伸縮服務架構:框架與中間件》以高可用服務架構為主題,側重於講解高可用架構設計的核心要點:可伸縮和可擴展,從應用層、數據庫、緩存、消息隊列、大數據查詢係統、分布式定時任務調度係統、微服務等層麵詳細講解如何設計可伸縮、可擴展的框架,並給齣在各個領域解決特定問題的方法論和實踐總結。隨著《可伸縮服務架構:框架與中間件》的齣版,我們還開源瞭4個行之有效的互聯網可伸縮框架,包括數據庫分庫分錶dbsplit、緩存分片redic、專業的發號器vesta和消息隊列處理機框架kclient,每個框架都開箱即用,也可以作為學習互聯網平颱化框架搭建的素材,更可以作為開發開源項目的示例。

《可伸縮服務架構:框架與中間件》的上冊《分布式服務架構:原理、設計與實戰》詳細介紹瞭如何解決綫上高並發服務的一緻性、高性能、高可用、敏捷等痛點,《可伸縮服務架構:框架與中間件》與上冊結閤後可覆蓋保證綫上高並發服務的各個主題:一緻性、高性能、高可用、可伸縮、可擴展、敏捷性等,每個主題都是一個方法論。充分理解這些主題,可保障綫上服務健壯運行,對實現服務穩定性的n個9有著不可估量的作用。

無論是對於互聯網的或者傳統的軟件工程師、測試工程師、架構師,還是對於深耕於IT的其他管理人員,《可伸縮服務架構:框架與中間件》都有很強的藉鑒性和參考價值,是值得每個技術人員閱讀的架構級技術書。

作者簡介

李艷鵬

“雲時代架構”技術社區創始人,著有《分布式服務架構:原理、設計與實戰》,現任某知名支付平颱架構組負責人,曾在花旗銀行、甲骨文、路透社、新浪微博等大型IT互聯網公司擔任技術負責人和架構師,現專注於大規模高並發的綫上和綫下支付平颱的應用架構和技術架構的規劃與落地,負責交易、支付、渠道、齣款、風控、對賬等核心支付係統的設計與實現,在移動支付、聚閤支付、閤規賬戶、掃碼支付、標記化支付等業務場景上有産品應用架構規劃與落地的實踐經驗。

楊彪

現任遊戲創業公司技術總監及閤夥人,“雲時代架構”技術社區閤夥創始人,CSDN達人課講師,著有《分布式服務架構:原理、設計與實戰》。在互聯網和遊戲行業有近十年工作經驗,曾在酷我音樂盒、人人遊戲和掌趣科技等上市公司擔任核心研發職位,在互聯網公司做過日活躍用戶量達韆萬的項目,也在遊戲公司做過多款月流水韆萬以上的遊戲。

李海亮

現任某互聯網公司搜索研發經理,有近十年互聯網公司的搜索及搜索相關的研發經驗

賈博岩

現任某支付公司高級開發工程師,專注於支付係統領域的開發,例如商戶入網、商戶對外齣款等業務。標準90後,喜歡鑽研技術,維護個人簡書博客“賈博岩”。

劉淏

現任某互聯網公司技術專傢,長期在外企從事技術經理和架構工作,對數據庫應用及搜索引擎應用有很深入的理解和實踐;有大型數據服務集群的架構調優及運維經驗;精通性能問題的解決與調優,以及高性能中間件的編寫。目前主要研究業務數據自動化框架及其實現。

精彩書評

如何實現可伸縮架構,是互聯網應用麵臨業務的高速發展時亟須解決的問題,而可伸縮性和高可用性往往是穩定性設計的基石。諸多國外優秀書籍都偏於講解實踐指導原則,讀者在麵臨具體場景時仍然難得其法。因此我在兩年前召集瞭幾位誌同道閤的朋友編寫瞭《深入分布式緩存》,期望能貫通從原理到實踐的內容。更可喜的是,艷鵬和楊彪諸君更進一步地呈現瞭滿滿都是案例及乾貨的《可伸縮服務架構:框架與中間件》,本書從分布式發號器、消息隊列框架、數據庫分庫分錶、緩存、Elasticsearch、分布式調度任務、RPC服務、Dubbo、高性能網絡代理中間件等方麵,全麵破解瞭可伸縮服務架構的奧秘,並與《分布式服務架構:原理、設計與實戰》相結閤,闡述瞭互聯網高可用、高性能、高並發、可伸縮、可擴展、敏捷性等核心要點,值得廣大從業人員閱讀。

螞蟻金服高級技術專傢 於君澤

分布式係統的設計是一門藝術,作者揮舞著六色畫筆譜寫瞭上下兩捲:《分布式服務架構:原理、設計與實戰》和《可伸縮服務架構:框架與中間件》,在這兩捲書裏,一緻性、高性能、高可用、可伸縮、可擴展、敏捷性等精彩內容皆信手拈來。我在多年前和楊彪相識,工作時一起調Bug,休閑時一起讀書,今又與艷鵬結識,如今他們已經成為技術的布道者。

在技術的道路上前行,冷暖自知,卻能收獲內心的平和。願這兩捲書能夠感召更多的朋友,共同享受技術的藝術,享受成長的富足。

BitTiger Co-CEO、北大博士 馮沁原

本書承接《分布式服務架構:原理、設計與實戰》一書的主綫,繼續深入講解分布式服務架構,對緩存、消息隊列、分庫分錶、定時調用係統、RPC框架等進行瞭落地與實戰講解,讀者可以通過本書實現分布式服務的高效落地。

暢銷書《億級流量網站架構核心技術》作者 開濤

在艷鵬和楊彪閤著的《分布式服務架構:原理、設計與實戰》中,我看到瞭分布式理論與實踐相結閤的全麵總結,又從本書中看到瞭非常實用的分庫分錶方案、緩存分片方案、消息隊列框架、發號器、RPC等互聯網架構的重要知識,並在一些內容上開源瞭公司內部屢試不爽的互聯網框架。通過閱讀本書,能夠更好地提升自己的技術能力,還能夠以這些框架為基礎搭建適閤自己公司業務的輕量級框架,輕而易舉地完成業務的功能需求和非功能質量需求。這是一本每個互聯網技術人員都應該通讀的優秀參考書籍。

開心網副總裁 楊延峰

本書以高可用服務架構為主綫,側重於講解高可用架構設計的核心要點:可伸縮和可擴展,從數據庫分片、緩存分片、消息隊列框架、大數據查詢係統、分布式定時任務調度係統、微服務RPC等層麵,詳細講解瞭如何設計可伸縮和可擴展的框架,可見作者對分布式係統的理解和實踐是深入骨髓的。希望每一位互聯網架構師、開發者、技術專傢、技術總監都通過本書獲取精華,並將其應用到項目實踐中,為項目的順利進行保駕護航。

螞蟻金服技術專傢 張義明

能講明白分布式架構並不容易,本書卻做到瞭。在本書中,不論是對需求場景的剖析,還是對可行方案的仔細研磨及實現,都體現瞭架構師的專業素養和精益求精。這是一本分布式服務架構方麵的好書。

皇包車CTO 賀偉

本書針對分布式服務架構中常用的緩存分片、數據庫分庫分錶、消息隊列、任務調度中間件、RPC、大數據查詢係統等技術提供瞭典型的設計和實現,對我們設計和實現自己的互聯網業務係統有重要的參考價值。

《程序員的成長課》作者 安曉輝

互聯網業務是爆發式的,其帶來的流量壓力和對計算能力的要求也是不均衡的,利用廉價的計算機構建分布式計算環境已成為當下的選擇。然而,可伸縮技術在帶來高優勢的同時,也帶來技術上的變革和挑戰。大傢可以從本書提供的分庫分錶、緩存分片、消息隊列框架、發號器等方案中吸取精髓,快速形成自己的認知,並在工作中積纍經驗和提升技能,以更好地為公司和團隊效力。

企辦信息技術有限公司CTO、雲像數字技術顧問 馬星光

隨著企業業務量的增加,流量洪峰在不斷挑戰著業務係統的承載能力,設計高並發、可伸縮的係統已成為軟件架構師的緊迫任務,而分布式、可伸縮的架構模式已成為抵禦洪峰的有效方案之一。本書匯集瞭作者在多年核心係統開發中的架構及實踐經驗,以理論與案例相結閤的方式展現瞭分布式係統設計、技術選型、可伸縮架構的設計、框架實現等方麵的優秀實踐。不管你是在從0到1構建係統,還是在尋找服務化治理的正確方嚮,本書都可以幫你解惑。

菜鳥網絡技術專傢 高春東


在《分布式服務架構:原理、設計與實戰》中,作者通過多年的互聯網架構經驗,總結瞭服務化的背景和技術演進,提齣瞭互聯網項目技術評審的方法論和提綱,並給齣瞭對真實的綫上項目進行性能和容量評估的全過程,可幫助大傢輕鬆地設計大規模、高並發的服務化係統,保證服務化項目按照既定的目標進行實施與落地,並保證係統的穩定性、可用性和高性能,等等。本書延續瞭《分布式服務架構:原理、設計與實戰》的主綫,繼續講解在分布式係統設計中非常重要的可伸縮架構設計模式,對數據庫分庫分錶、緩存分片、消息隊列處理框架、大數據查詢係統、分布式定時任務係統、微服務和RPC等均有詳細講解,並開源瞭4個開箱即用的框架級項目,大傢也可以以其為基礎,開發適閤自己的業務的分布式係統。

愛奇藝高級技術經理 黃福偉

在本書中,作者將理論與實踐相結閤,對分庫分錶、緩存、消息隊列、大數據查詢及分布式任務調度等的設計與使用進行瞭深入分析與講解。本書內容豐富,可作為開發利器,值得參考。

金山雲高級開發工程師 李雪冰

金融係統對高並發服務的一緻性、高性能及高可用有著強烈的訴求,艷鵬及他的寫作團隊都是一綫資深架構師,不僅有豐富的實踐經驗,還有深層次的理論基礎。本書對高可用架構進行瞭深入講解,使讀者能夠從體係化的角度認識和思考金融係統的本質,其中的方法論是經過實踐檢驗的,更能在工作中應對特定領域的局部問題。

某金控集團總監 王誌成

我和本書作者楊彪在多年前相識於工作中,他的踏實、認真給我留下瞭深刻的印象,後來因為《分布式服務架構:原理、設計與實戰》,我又認識瞭艷鵬,他們的勤奮和刻苦讓我非常佩服,也讓我非常期待他們的新書。讀書如讀人,本書不僅展現瞭可伸縮架構的技術,更展現瞭作者孜孜不倦的精神。希望讀者不僅能從書中學到互聯網分布式架構的知識,更能學到不畏艱辛、知難而上的精神。

北大博士 賈濤


目錄

第1章 如何設計一款永不重復的高性能分布式發號器 1
1.1 可選方案及技術選型 2
1.1.1 為什麼不用UUID 2
1.1.2 基於數據庫的實現方案 2
1.1.3 Snowflake開源項目 3
1.1.4 小結 4
1.2 分布式係統對發號器的基本需求 4
1.3 架構設計與核心要點 6
1.3.1 發布模式 6
1.3.2 ID類型 7
1.3.3 數據結構 7
1.3.4 並發 9
1.3.5 機器ID的分配 9
1.3.6 時間同步 10
1.3.7 設計驗證 11
1.4 如何根據設計實現多場景的發號器 11
1.4.1 項目結構 12
1.4.2 服務接口的定義 14
1.4.3 服務接口的實現 15
1.4.4 ID元數據與長整型ID的互相轉換 22
1.4.5 時間操作 25
1.4.6 機器ID的生成 27
1.4.7 小結 32
1.5 如何保證性能需求 32
1.5.1 嵌入發布模式的壓測結果 33
1.5.2 中心服務器發布模式的壓測結果 33
1.5.3 REST發布模式(Netty實現)的壓測結果 33
1.5.4 REST發布模式(Spring Boot + Tomcat實現)的壓測結果 34
1.5.5 性能測試總結 34
1.6 如何讓用戶快速使用 35
1.6.1 REST發布模式的使用指南 35
1.6.2 服務化模式的使用指南 38
1.6.3 嵌入發布模式的使用指南 41
1.7 為用戶提供API文檔 43
1.7.1 RESTful API文檔 44
1.7.2 Java API文檔 45
第2章 可靈活擴展的消息隊列框架的設計與實現 49
2.1 背景介紹 50
2.2 項目目標 50
2.2.1 簡單易用 50
2.2.2 高性能 51
2.2.3 高穩定性 51
2.3 架構難點 51
2.3.1 綫程模型 51
2.3.2 異常處理 53
2.3.3 優雅關機 53
2.4 設計與實現 54
2.4.1 項目結構 54
2.4.2 項目包的規劃 55
2.4.3 生産者的設計與實現 57
2.4.4 消費者的設計與實現 58
2.4.5 啓動模塊的設計與實現 67
2.4.6 消息處理器的體係結構 76
2.4.7 反射機製 79
2.4.8 模闆項目的設計 80
2.5 使用指南 82
2.5.1 安裝步驟 82
2.5.2 Java API 83
2.5.3 與Spring環境集成 84
2.5.4 對服務源碼進行注解 85
2.6 API簡介 87
2.6.1 Producer API 87
2.6.2 Consumer API 88
2.6.3 消息處理器 88
2.6.4 消息處理器定義的注解 90
2.7 消息處理機模闆項目 91
2.7.1 快速開發嚮導 91
2.7.2 後颱監控和管理 92
第3章 輕量級的數據庫分庫分錶架構與框架 93
3.1 什麼是分庫分錶 94
3.1.1 使用數據庫的三個階段 94
3.1.2 在什麼情況下需要分庫分錶 95
3.1.3 分庫分錶的典型實例 96
3.2 三種分而治之的解決方案 97
3.2.1 客戶端分片 97
3.2.2 代理分片 100
3.2.3 支持事務的分布式數據庫 101
3.3 分庫分錶的架構設計 102
3.3.1 整體的切分方式 102
3.3.2 水平切分方式的路由過程和分片維度 106
3.3.3 分片後的事務處理機製 107
3.3.4 讀寫分離 119
3.3.5 分庫分錶引起的問題 119
3.4 流行代理分片框架Mycat的初體驗 123
3.4.1 安裝Mycat 123
3.4.2 配置Mycat 124
3.4.3 配置數據庫節點 128
3.4.4 數據遷移 129
3.4.5 Mycat支持的分片規則 129
3.5 流行的客戶端分片框架Sharding JDBC的初體驗 138
3.5.1 Sharding JDBC簡介 138
3.5.2 Sharding JDBC的功能 139
3.5.3 Sharding JDBC的使用 141
3.5.4 Sharding JDBC的使用限製 152
3.6 自研客戶端分片框架dbsplit的設計、實現與使用 153
3.6.1 項目結構 154
3.6.2 包結構和執行流程 155
3.6.3 切片下標命名策略 159
3.6.4 SQL解析和組裝 167
3.6.5 SQL實用程序 168
3.6.6 反射實用程序 173
3.6.7 分片規則的配置 177
3.6.8 支持分片的SplitJdbcTemplate和SimpleSplitJdbcTemplate接口API 179
3.6.9 JdbcTemplate的擴展SimpleJdbcTemplate接口API 184
3.6.10 用於創建分庫分錶數據庫的腳本工具 187
3.6.11 使用dbsplit的一個簡單示例 192
3.6.12 使用dbsplit的綫上真實示例展示 199
第4章 緩存的本質和緩存使用的優秀實踐 201
4.1 使用緩存的目的和問題 202
4.2 自相似,CPU的緩存和係統架構的緩存 203
4.2.1 CPU緩存的架構及性能 205
4.2.2 CPU緩存的運行過程分析 206
4.2.3 緩存行與僞共享 208
4.2.4 從CPU的體係架構到分布式的緩存架構 218
4.3 常用的分布式緩存解決方案 221
4.3.1 常用的分布式緩存的對比 221
4.3.2 Redis初體驗 225
4.4 分布式緩存的通用方法 229
4.4.1 緩存編程的具體方法 229
4.4.2 應用層訪問緩存的模式 233
4.4.3 分布式緩存分片的三種模式 235
4.4.4 分布式緩存的遷移方案 238
4.4.5 緩存穿透、緩存並發和緩存雪崩 244
4.4.6 緩存對事務的支持 246
4.5 分布式緩存的設計與案例 248
4.5.1 緩存設計的核心要素 248
4.5.2 緩存設計的優秀實踐 250
4.5.3 關於常見的緩存綫上問題的案例 253
4.6 客戶端緩存分片框架redic的設計與實現 257
4.6.1 什麼時候需要redic 258
4.6.2 如何使用redic 258
4.6.3 更多的配置 258
4.6.4 項目結構 260
4.6.5 包結構 261
4.6.6 設計與實現的過程 261
第5章 大數據利器之Elasticsearch 268
5.1 Lucene簡介 269
5.1.1 核心模塊 269
5.1.2 核心術語 270
5.1.3 檢索方式 271
5.1.4 分段存儲 273
5.1.5 段閤並策略 275
5.1.6 Lucene相似度打分 278
5.2 Elasticsearch簡介 286
5.2.1 核心概念 286
5.2.2 3C和腦裂 289
5.2.3 事務日誌 291
5.2.4 在集群中寫索引 294
5.2.5 集群中的查詢流程 295
5.3 Elasticsearch實戰 298
5.3.1 Elasticsearch的配置說明 298
5.3.2 常用的接口 300
5.4 性能調優 305
5.4.1 寫優化 305
5.4.2 讀優化 308
5.4.3 堆大小的設置 313
5.4.4 服務器配置的選擇 315
5.4.5 硬盤的選擇和設置 316
5.4.6 接入方式 318
5.4.7 角色隔離和腦裂 319
第6章 全麵揭秘分布式定時任務 321
6.1 什麼是定時任務 322
6.2 分布式定時任務 341
6.2.1 定時任務的使用場景 342
6.2.2 傳統定時任務存在的問題 342
6.2.3 分布式定時任務及其原理 344
6.3 開源分布式定時任務的用法 347
6.3.1 Quartz的分布式模式 347
6.3.2 TBSchedule 356
6.3.3 Elastic-Job 365
第7章 RPC服務的發展曆程和對比分析 377
7.1 什麼是RPC服務 378
7.2 RPC服務的原理 379
7.2.1 Sokcet套接字 379
7.2.2 RPC的調用過程 380
7.3 在程序中使用RPC服務 382
7.4 RPC服務的發展曆程 383
7.4.1 第一代RPC:以ONC RPC和DCE RPC為代錶的函數式RPC 384
7.4.2 第二代RPC:支持麵對象的編程 388
7.4.3 第三代RPC:SOA和微服務 398
7.4.4 架構的演進 402
7.5 主流的RPC框架 403
7.5.1 Thrift 403
7.5.2 ZeroC Ice 410
7.5.3 gRPC 418
7.5.4 Dubbo 430
第8章 Dubbo實戰及源碼分析 436
8.1 Dubbo的四種配置方式 437
8.1.1 XML配置 437
8.1.2 屬性配置 440
8.1.3 API配置 441
8.1.4 注解配置 443
8.2 服務的注冊與發現 446
8.2.1 注冊中心 446
8.2.2 服務暴露 449
8.2.3 引用服務 451
8.3 Dubbo通信協議及序列化探討 455
8.3.1 Dubbo支持的協議 455
8.3.2 協議的配置方法 456
8.3.3 多協議暴露服務 457
8.3.4 Dubbo協議的使用注意事項 458
8.3.5 Dubbo協議的約束 459
8.4 Dubbo中高效的I/O綫程模型 459
8.4.1 對Dubbo中I/O模型的分析 459
8.4.2 Dubbo中綫程配置的相關參數 460
8.4.3 在Dubbo綫程方麵踩過的坑 461
8.4.4 對Dubbo中綫程使用的建議 462
8.5 集群的容錯機製與負載均衡 462
8.5.1 集群容錯機製的原理 462
8.5.2 集群容錯模式的配置方法 464
8.5.3 六種集群容錯模式 464
8.5.4 集群的負載均衡 465
8.6 監控和運維實踐 467
8.6.1 日誌適配 467
8.6.2 監控管理後颱 467
8.6.3 服務降級 473
8.6.4 優雅停機 475
8.6.5 灰度發布 475
8.7 Dubbo項目綫上案例解析 477
8.7.1 綫上問題的通用解決方案 477
8.7.2 耗時服務耗盡瞭綫程池的案例 480
8.7.3 容錯重試機製引發服務雪崩的案例 481
8.8 深入剖析Dubbo源碼及其實現 483
8.8.1 Dubbo的總體架構設計 483
8.8.2 配置文件 486
8.8.3 Dubbo的核心RPC 488
8.8.4 Dubbo巧妙的URL總綫設計 491
8.8.5 Dubbo的擴展點加載SPI 492
8.8.6 Dubbo服務暴露的過程 493
8.8.7 服務引用 502
8.8.8 集群容錯和負載均衡 503
8.8.9 集群容錯 504
8.8.10 負載均衡 509
第9章 高性能網絡中間件 512
9.1 TCP/UDP的核心原理及本質探索 513
9.1.1 網絡模型 513
9.1.2 UDP、IP及其未解決的問題 515
9.1.3 TCP詳解 519
9.1.4 是否可以用UDP代替TCP 527
9.1.5 網絡通信的不可靠性討論 529
9.2 網絡測試優秀實踐 530
9.2.1 網絡測試的關鍵點 530
9.2.2 那些必不可少的網絡測試工具 532
9.2.3 典型的測試報告 539
9.3 高性能網絡框架的設計與實現 544
9.3.1 對代理功能的測試及分析 545
9.3.2 網絡中間件的使用介紹 549
9.3.3 內存和緩存的優化 551
9.3.4 快速解析流數據 554

精彩書摘

推薦序一

從傳統互聯網到移動互聯網再到物聯網,中國乃至全球的互聯網技術在近十年得到瞭高速發展。作為架構師,我們非常樂意把這些技術傳播齣去,讓更多的人享受互聯網技術的紅利,讓技術拓展商業的邊界。阿裏巴巴的雙11技術已經越來越成熟,因為阿裏巴巴已經逐步具備瞭基於雲的計算能力,可以輕鬆應對各種業務壓力。

本書的內容包括緩存分片、消息隊列框架、數據庫分庫分錶、分布式發號器、大數據查詢係統、分布式定時調度任務係統、微服務和RPC等;並配備瞭4個開箱即用的開源項目,包括分庫分錶框架dbsplit、專業的發號器vesta、消息隊列框架kclient和緩存分片的redic,每個項目都是獨立的互聯網高並發框架,是構建互聯網級項目的重要組件。本書對行業內許多流行的開源項目也有很多介紹,讀者可以在其中學到平颱架構設計的方方麵麵,也可以瞭解開源項目在構思和實現方麵的優秀實踐。

互聯網的技術核心其實源於分布式,這是互聯網具備高性能、高並發特性的基礎,掌握這些核心內容後,你會發現駕馭技術變得如此輕鬆!希望艷鵬的這本書可以帶領大傢掌握分布式的精髓,這本書非常棒!也感謝艷鵬邀請我為本書作序!

技術的世界是如此美妙,作為一名深耕架構的技術人,我由衷地希望有更多的人加入,一起為中國的技術添磚加瓦!

焦英俊

未達科技CEO、原阿裏巴巴中文站首席架構師

推薦序二

近十年來,互聯網服務在社交網絡、搜索、電商、O2O、視頻、移動和雲計算等領域呈現瞭井噴式發展,伴隨而來的是數韆萬的日訂單量、數億的日活躍用戶、數百億的日消息發送量等海量的業務規模。支撐這些海量的業務規模的則是基於廉價服務器集群的高可用、可伸縮的分布式互聯網技術。

本書以可伸縮服務架構為重點,從理論基礎、架構設計、一綫行業的實踐經驗和代碼實現細節等方麵,係統化地介紹瞭分布式互聯網的高可用、可伸縮技術的核心要點,是一本兼具深度和廣度的技術參考書。

雖然本書的主題是“架構”,但是這並不影響本書的易讀性,它比大多數同類書都要講得透徹、明白,也適閤有想法、有目標的初中級開發人員閱讀。分庫分錶、Dubbo 源碼解析等方麵的內容,更可以幫助高級技術人員提升自己的技術實力,以及發揮更大的價值。

架構是在長期的生産活動中經過深度思考所積纍下來的優秀實踐和可復用的閤理抽象,希望你不要錯過本書的精彩內容。

楊延峰

開心網副總裁

推薦序三

楊彪兄弟找我為本書寫序,我欣然從命。我閱讀瞭這本佳作的若乾個章節,發現它有幾個特點:緊扣常見的問題域;結閤瞭開源産品;代碼很講究。這裏,我想談一談開源與寫作的關係,因為我覺得這就是一場修行。

什麼是開源?我的粗淺理解就是,開源就是開源産品,是開放瞭源代碼的産品。我從業16年,用過不少開源産品,但發現被廣泛使用的項目並不都擁有好的代碼和充分的測試用例,可見知易行難。可喜的是,國人的開源産品在逐漸增多,也有不少好作品齣現,艷鵬的vesta-id-generator解決的就是分布式係統中常見的ID生成問題。

古人談學習有“眼到”、“手到”、“心到”之說。

“眼到”指的是閱讀,但閱讀麵廣並不見得知識就是自己的,例如一個早晚聽張靚穎歌麯的粉絲不見得就能發齣海豚音。

“手到”指的是要不斷練習,當然,這並不是指簡單、重復地練習。佛羅裏達州立大學心理學傢K. Anders Ericsson首次提齣瞭“刻意練習”的概念,該練習方法的核心假設是:專傢級水平是逐漸練齣來的,而有效進步的關鍵在於找到一係列小任務讓受訓者按順序完成,這些小任務必須是受訓者正好不會做但又可以學習和掌握的。

我認為,“心到”的一個環節是寫作。寫作能幫我們把脈絡梳理得更通暢。從自己懂,到給彆人講明白,再到寫齣來且彆人還能明白,是進階的關係。

所以,從項目産品實踐,到開源,再到寫作,就是一場修行。修行是外在的錶現、是與同行交流、是與世界對話;修行也是內觀,是收獲若乾思想的結晶、汲取若乾靈感的泉水、沉澱若乾係統的對白,在其中收獲更多的就是作者自己。

開捲有益,願讀者也能在閱讀和實踐上收獲知與行的快樂!

於君澤

螞蟻金服高級技術專傢

前言/序言

本書的上冊《分布式服務架構:原理、設計與實戰》詳細介紹瞭如何解決綫上高並發服務的一緻性、高性能、高可用、敏捷等痛點。本書延續瞭高可用服務架構的主題,側重於講解高可用架構設計的核心要點:可伸縮和可擴展,從應用層、數據庫、緩存、消息隊列、大數據查詢係統、分布式定時任務調度係統、微服務等層麵詳細講解如何設計可伸縮、可擴展的框架,並給齣在各個領域解決特定問題的方法論和實踐總結。隨著本書的齣版,我們還開源瞭4個行之有效的互聯網可伸縮框架,包括數據庫分庫分錶dbsplit、緩存分片redic、專業的發號器vesta和消息隊列處理機框架kclient,每個框架都開箱即用,且都是獨立的互聯網高並發框架,是構建互聯網級項目的重要組件,也可以作為學習互聯網平颱化框架搭建的素材,更可以作為開發開源項目的示例。

在寫作本書的過程中,我們的多位作者根據自身在互聯網大規模、高並發項目中遇到的實際問題,總結瞭切實有效的方法論和解決方案,最後沉澱齣一套適閤高並發服務的優秀開源技術框架,其中的方法論可以幫助讀者解決實際問題,開源框架可以幫助讀者快速搭建可伸縮的互聯網高並發項目。無論是對於互聯網的或者傳統的軟件工程師、測試工程師、架構師,還是對於深耕於IT的其他管理人員,本書都有很強的藉鑒性和參考價值,是值得每個技術人員閱讀的架構級技術書。

感謝我的作者團隊,楊彪、海亮、劉淏、博岩等無數次地與我一起通宵達旦地趕稿子;感謝汪勤平、史先斌、潘運鵬、張誠、高亮、李繼、周偉、麯源等同學在編輯階段為我閱稿,並提齣專業意見;感謝IT行業內的重量級大咖焦英俊、楊延峰、右軍(於君澤)在百忙之中抽齣時間為本書作序;也感謝大作者開濤和安曉輝等同學為本書寫評語;感謝各個行業的重量級朋友們對本書的大力支持,包括:馮沁原、賀偉、張義明、馬星光、高春東、黃福偉、李雪冰、付紅雷等;更感謝加入雲時代架構技術社區的小夥伴們的持續關注和支持!

在寫書的過程中,我們每個人都兢兢業業、勤勤懇懇,每增加一部分內容,都互相審核,盡量保證書中案例的準確性和時效性,確保能為讀者帶來很有價值的設計經驗,並且我們想做到“授人以漁”,而不是“授人以魚”。在寫作的過程中有辛苦、有快樂、有價值、有成果,我們希望能持續地為讀者帶來經驗、解決方案、架構思路和快樂。

感謝電子工業齣版社博文視點張國霞編輯的認真態度和辛勤工作,本書在經過作者們及國霞編輯大半年的努力後最終順利齣版。

最後,感謝我的妻子和父母在我寫書期間對我的全力支持和幫助。


《可伸縮服務架構:框架與中間件》 引言 在當今快速發展的數字時代,企業對軟件係統的要求日益提高。它們不再僅僅滿足於功能的實現,更追求服務的穩定、高效和彈性。尤其是在互聯網技術和雲計算蓬勃發展的背景下,如何構建能夠應對海量用戶請求、復雜業務邏輯以及不斷變化的業務需求的服務化架構,成為每一個技術團隊麵臨的核心挑戰。這本《可伸縮服務架構:框架與中間件》正是為解決這一挑戰而生,它深入探討瞭構建現代可伸縮服務化係統的關鍵要素,並提供瞭實用的框架和中間件解決方案。 本書旨在為軟件架構師、係統工程師、技術負責人以及對構建高可用、高性能分布式係統感興趣的開發者提供一份詳實的技術指南。我們不滿足於零散的技術碎片,而是緻力於從宏觀到微觀,係統性地剖析可伸縮服務架構的設計原則、核心組件以及落地實踐。我們將一起探索那些支撐起現代互聯網服務基石的底層技術和設計理念。 第一部分:可伸縮服務架構的基石——理解與設計 在深入瞭解具體的框架和中間件之前,理解可伸縮服務架構的本質是至關重要的。本部分將從概念入手,逐步構建起讀者對現代服務化架構的整體認知。 第一章:服務化架構的演進與驅動力 從單體到微服務: 迴顧軟件架構從傳統的單體應用嚮更細粒度服務演進的曆史脈絡,分析不同架構模式的優劣勢。理解為何微服務架構在當前成為主流,以及它所帶來的變革。 驅動現代架構發展的關鍵因素: 探討技術和業務上的雙重驅動力,包括互聯網流量的爆炸式增長、敏捷開發的需求、技術棧的多樣化、團隊自主性的提升以及對快速迭代和創新的追求。 可伸縮性的定義與維度: 詳細闡述“可伸縮性”的真正含義,區分垂直伸縮(Scale Up)和水平伸縮(Scale Out)。探討計算、存儲、網絡等不同維度的伸縮需求,以及如何通過架構設計來滿足這些需求。 服務化架構的挑戰與機遇: 明確服務化架構在帶來靈活性的同時,也引入瞭分布式係統的復雜性,如服務發現、負載均衡、容錯、數據一緻性、監控等。同時,也強調瞭這些挑戰帶來的技術創新和業務機遇。 第二章:核心設計原則與模式 麵嚮服務的原則: 深入講解SOA(麵嚮服務的架構)和微服務架構中“服務”的核心特徵,包括獨立性、自治性、可組閤性、鬆耦閤等。 CAP定理與BASE理論: 詳細解釋分布式一緻性模型中的CAP定理,並闡述在實際應用中如何根據業務場景權衡一緻性、可用性和分區容忍性。引入BASE理論(Basically Available, Soft state, Eventually consistent)作為對CAP定理的補充和實踐指導。 領域驅動設計(DDD)與服務邊界劃分: 探討如何利用DDD的思想來識彆和劃分清晰的服務邊界,避免産生“分布式單體”的陷阱。講解限界上下文(Bounded Context)的概念及其在服務拆分中的重要性。 冪等性與事務管理: 分析在分布式環境中實現冪等操作的重要性,以及常見的實現策略。探討分布式事務的挑戰,並介紹常見的解決方案,如兩階段提交(2PC)、三階段提交(3PC)以及最終一緻性方案。 容錯與彈性設計: 引入斷路器(Circuit Breaker)、限流(Rate Limiting)、熔斷(Fallback)、超時(Timeout)等容錯設計模式,以及重試(Retry)機製。講解如何構建具備彈性的係統,使其能夠在部分故障時仍能保持可用。 第三章:服務化架構的組成要素 API網關: 作為服務化架構的入口,詳細闡述API網關的功能,包括請求路由、認證授權、限流、監控、協議轉換、日誌記錄等。介紹常見的API網關模式和實現。 服務注冊與發現: 解釋服務注冊與發現機製如何解決分布式係統中服務實例的動態管理問題。深入剖析服務注冊中心(如ZooKeeper, etcd, Consul, Eureka)的工作原理,以及客戶端和服務端如何進行交互。 負載均衡: 講解不同負載均衡算法(如輪詢、隨機、最少連接、加權輪詢)的適用場景。介紹硬件負載均衡、軟件負載均衡以及DNS負載均衡的區彆和優劣。 配置中心: 探討集中式配置管理的重要性,以及配置中心如何實現配置的熱更新、版本管理和灰度發布。 監控與日誌: 強調端到端的監控和日誌收集在分布式係統中的關鍵作用。介紹日誌聚閤、鏈路追蹤(Tracing)、指標監控(Metrics)等技術,以及ELK Stack、Prometheus、Grafana等常用工具。 第二部分:核心中間件與框架深度剖析 在構建可伸縮服務架構的過程中,成熟的中間件和框架能夠極大地簡化開發難度,提高效率和係統的穩定性。本部分將對當前業界廣泛應用的各類中間件進行深入的剖析。 第四章:通信中間件——連接服務的橋梁 RPC(遠程過程調用)框架: Protobuf與gRPC: 詳細介紹Google Protobuf序列化協議的特性,以及基於Protobuf構建的gRPC框架。分析gRPC的高性能、跨語言支持以及流式通信能力。 Dubbo: 深入講解Apache Dubbo的架構設計,包括服務注冊、服務消費者、服務提供者、集群容錯、負載均衡等核心組件。分析其在企業級服務化場景中的優勢。 Spring Cloud Alibaba Sentinel/OpenFeign/Ribbon等組件: (此部分將根據上下文調整,例如如果介紹Spring Cloud生態,則會深入分析其組件) 消息隊列(Message Queue): Kafka: 剖析Kafka作為分布式流處理平颱的架構,包括Topic、Partition、Producer、Consumer、Broker、ZooKeeper等概念。講解其高吞吐量、持久化存儲、分區容錯能力,並探討其在日誌聚閤、事件驅動、數據同步等場景的應用。 RabbitMQ: 介紹RabbitMQ作為AMQP(高級消息隊列協議)的實現,其靈活的路由機製(Exchange, Queue, Binding)和豐富的消息模式(如點對點、發布/訂閱)。分析其在異步通信、削峰填榖、服務解耦等方麵的應用。 RocketMQ: 講解阿裏雲RocketMQ的特性,包括高性能、高可用、事務消息、順序消息等。分析其在金融、電商等對可靠性要求極高的場景下的錶現。 RESTful API與HTTP通信: 探討RESTful API的設計原則,以及如何利用HTTP協議實現服務間的通信。分析HTTP/1.1和HTTP/2的性能差異,並介紹Netty等高性能網絡通信框架。 第五章:數據存儲與管理中間件 分布式數據庫: 關係型數據庫(如MySQL、PostgreSQL)的分片與復製: 講解如何通過讀寫分離、分庫分錶等技術來擴展傳統關係型數據庫的容量和性能。 NoSQL數據庫: 鍵值存儲(如Redis、Memcached): 分析其在緩存、會話管理、實時排行榜等場景的應用,以及其內存存儲和高性能的特點。 文檔數據庫(如MongoDB): 講解其靈活的文檔模型,以及在需要快速迭代、存儲半結構化數據的場景下的優勢。 列族數據庫(如HBase): 介紹其在大數據場景下的高吞吐量讀寫能力,以及在日誌分析、時間序列數據存儲等方麵的應用。 圖數據庫(如Neo4j): 探討其在處理復雜關聯關係數據(如社交網絡、推薦係統)方麵的獨特優勢。 分布式緩存: 詳細闡述分布式緩存的架構模式(如本地緩存、集中式緩存、客戶端緩存),以及如何利用Redis Cluster、Memcached等工具實現高可用和高性能的緩存服務。 分布式事務解決方案: TCC(Try-Confirm-Cancel): 深入講解TCC事務模式的工作原理,以及如何將其應用於需要強一緻性的業務場景。 Saga模式: 介紹Saga模式作為一種補償性事務解決方案,如何通過一係列本地事務來模擬全局事務,並在失敗時進行補償。 Seata: (如果適用,則深入介紹Seata的XA、TCC、Saga等模式,及其在Spring Cloud等框架中的集成。) 第六章:服務治理與運維中間件 服務治理中心(如ZooKeeper, etcd): 詳細解析ZooKeeper和etcd在分布式協調、配置管理、服務發現、Leader選舉等方麵的核心作用。 分布式配置管理(如Apollo, Nacos): 深入分析Apollo和Nacos等配置中心的架構,包括配置發布、更新、迴滾、灰度發布等功能,以及如何實現動態配置管理。 服務監控與告警(如Prometheus, Grafana, Zabbix): 講解如何利用Prometheus收集和存儲時序數據,並通過Grafana進行可視化展示。介紹Zabbix等傳統監控係統的應用場景。 日誌管理與分析(如ELK Stack): 剖析Elasticsearch、Logstash、Kibana組成的ELK Stack,如何實現日誌的收集、存儲、搜索和可視化,從而為故障排查和性能分析提供有力支持。 鏈路追蹤(Tracing)(如Zipkin, Jaeger): 講解分布式鏈路追蹤的核心思想,如何通過Span、Trace等概念來跟蹤請求在分布式係統中的完整路徑,並分析延遲瓶頸。 第三部分:架構實踐與案例分析 理論結閤實踐,本書將通過實際案例,展示如何將前兩部分介紹的理論和中間件應用於構建真實世界的可伸縮服務架構。 第七章:構建高可用與彈性伸縮的服務 彈性伸縮策略: 講解基於負載、時序、事件等不同維度的自動伸縮策略。分析Kubernetes等容器編排平颱在實現彈性伸縮方麵的作用。 灰度發布與金絲雀發布: 詳細介紹灰度發布(Canary Release)和藍綠部署(Blue-Green Deployment)等發布策略,以及如何通過API網關、服務治理工具來實現安全、平滑的服務更新。 容災與降級: 探討不同級彆的容災策略,包括多活、異地容災。講解服務降級(Degradation)的藝術,如何在極端情況下犧牲非核心功能以保障核心服務的可用性。 性能優化與調優: 介紹服務化架構中的常見性能瓶頸,以及針對性的優化方法,包括代碼優化、緩存策略、數據庫調優、網絡優化等。 第八章:企業級服務化架構落地實踐 微服務架構的設計與拆分: 結閤實際業務場景,演示如何進行有效的服務拆分,識彆限界上下文,並設計服務間的通信方式。 DevOps與CI/CD在服務化中的作用: 強調DevOps文化和CI/CD流水綫對於快速迭代、自動化部署和持續交付的重要性。 案例分析: 電商平颱的秒殺係統設計: 以電商秒殺場景為例,分析如何利用消息隊列、分布式緩存、限流等技術構建高並發、低延遲的秒殺係統。 社交平颱的實時消息推送: 探討如何利用WebSocket、消息隊列等技術實現海量用戶的高效實時消息推送。 大數據平颱的ETL與數據處理: 展示如何利用Kafka、Spark、HDFS等組件構建強大的數據處理流水綫。 第九章:未來趨勢與展望 Serverless架構: 探討Serverless架構的優勢,以及其在事件驅動、按需付費等方麵的潛力。 Service Mesh: 深入分析Service Mesh(服務網格)的概念,以及Istio、Linkerd等Service Mesh實現如何將服務治理能力從應用層下沉到基礎設施層,實現更精細化的流量管理、安全控製和可觀察性。 雲原生架構: 探討雲原生理念對服務化架構的影響,以及容器化、微服務、聲明式API等關鍵技術如何協同工作。 AI與ML在服務化中的應用: 展望人工智能和機器學習技術在服務化架構中的應用,例如智能預測、異常檢測、自動化運維等。 結語 《可伸縮服務架構:框架與中間件》旨在為讀者提供一個全麵、深入、實用的技術視角,幫助您在構建和演進現代軟件係統的道路上,少走彎路,事半功倍。我們相信,通過掌握本書所涵蓋的知識和技術,您將能夠自信地設計、構建和運維那些能夠應對挑戰、驅動業務增長的可伸縮服務化係統。

用戶評價

評分

翻開這本書的目錄(我預想中的),我希望能看到對“可伸縮服務架構”這一概念的深度剖析,不僅僅是簡單的羅列,而是能闡釋其背後的設計哲學和原則。特彆是“框架與中間件”這部分,更是我關注的焦點。我希望書中能係統地介紹,在構建可伸縮架構時,哪些類型的框架是必不可少的,它們各自扮演著怎樣的角色?是會從服務治理、通信協議、數據一緻性等方麵進行講解?而“中間件”,更是我渴望深入瞭解的部分,比如消息隊列在實現異步化、削峰填榖方麵的作用,分布式緩存如何提升係統吞吐量,以及API網關在流量控製、安全認證等方麵的價值。我期待這本書能夠提供一套完整的技術棧選型指南,並附帶詳細的配置和使用說明,甚至可以是一些常見問題的排查思路。我希望讀完這本書,我能對如何從零開始設計一個具備高伸縮性的服務架構,以及如何選擇和集成閤適的框架與中間件,有一個清晰、可行、並且充滿信心的認知。

評分

當我看到“可伸縮服務架構:框架與中間件”這本書時,立刻被它精準的定位所吸引。在當前雲計算和大數據時代,任何一個成功的互聯網産品都離不開強大的可伸縮性。而可伸縮性並非一蹴而就,它需要精心的架構設計和對底層技術的深刻理解。這本書的標題直指核心,既包含瞭宏觀的架構理念,又深入到微觀的實現工具——框架與中間件。我尤其好奇書中是如何闡述“框架”與“中間件”在可伸縮架構中的作用的。是會介紹一些流行的微服務框架,比如Spring Cloud、Dubbo,還是會探討更底層的RPC框架?而“中間件”則範圍更廣,消息隊列、緩存、分布式事務、服務治理等等,這些都是構建可伸縮係統的基石。我希望這本書能夠為我提供一套清晰的思路,幫助我理解這些分散的技術點如何有機地結閤在一起,形成一個穩定、高效、可伸縮的服務體係。同時,我也期待書中能分享一些來自實踐的經驗和教訓,比如在選擇和配置這些框架與中間件時可能遇到的坑,以及如何規避它們。

評分

這本書的封麵設計簡潔有力,封麵上“可伸縮服務架構:框架與中間件”幾個字,在信息爆炸的當下,宛如一股清流,精準地抓住瞭我一直以來在技術探索中最為關注的核心問題。我是一名資深後端開發工程師,多年的從業經曆讓我深刻體會到,在快速變化的業務需求和用戶增長麵前,傳統的單體應用架構已經顯得捉襟見肘。想要構建一個既能應對海量請求,又能保持高可用性和靈活性的係統,就必須深入理解並掌握可伸縮服務架構的精髓。而這本書的標題,正是我渴望找到的那把開啓“可伸縮之門”的鑰匙。我期待它能為我提供一套清晰、係統化的理論框架,幫助我理解不同服務架構模式的優缺點,以及它們在實際應用中的落地方式。特彆是“框架與中間件”這幾個關鍵詞,讓我聯想到諸如微服務框架、消息隊列、API網關、服務注冊與發現等關鍵技術。我希望書中不僅能理論講解,更能深入剖析這些工具的原理、選型依據以及最佳實踐,甚至能提供一些代碼示例或者僞代碼,讓我能更好地將其應用到實際項目中,解決我目前麵臨的架構難題。

評分

作為一名對技術趨勢保持高度敏感的架構師,我一直在尋找能夠幫助我提升團隊構建可伸縮係統的能力的指導性書籍。“可伸縮服務架構:框架與中間件”這個書名,準確地擊中瞭我的痛點。當前,我們團隊正麵臨著從傳統的SOA嚮微服務架構轉型的挑戰,而如何有效地管理和協調分布式的服務,確保其可伸縮性和容錯性,是擺在我們麵前的一道難題。這本書的標題暗示瞭它將聚焦於構建可伸縮係統的核心要素——架構模式、支撐這些模式的框架,以及實現各種功能的中間件。我非常期待書中能夠提供關於如何選擇和設計閤適的微服務框架,如何利用消息隊列實現服務間的異步通信和解耦,如何通過API網關統一管理和保護服務,以及如何實現服務發現和負載均衡等關鍵技術。更重要的是,我希望能從中學習到如何構建一套完整的、可落地的、可維護的框架和中間件體係,從而賦能我的團隊,提升我們構建高可用、高性能、高擴展性係統的能力。

評分

讀到這本書的標題,我的思緒瞬間飄迴瞭大學時代,那會兒我對計算機科學的各個領域都充滿瞭無限的好奇,尤其對構建大型、健壯的軟件係統充滿瞭憧憬。雖然如今我已經步入職場,日常工作更多的是圍繞著具體的業務邏輯和項目需求,但內心深處對底層架構的探索從未停止。特彆是“可伸縮服務架構”這個概念,聽起來就充滿瞭一種力量感和未來感。想象一下,一個係統可以隨著用戶量的激增而優雅地擴展,而不會齣現性能瓶頸或服務崩潰,這該是多麼令人興奮的成就!我非常好奇這本書是如何將“框架”和“中間件”這兩個看似龐雜的概念融入到可伸縮架構的構建中的。它們是獨立存在的組件,還是相互依賴,共同構成一個完整的生態係統?書中是否會提及一些業界知名的可伸縮架構實踐,比如Google的Spanner、Netflix的Chaos Monkey,亦或是Amazon的AWS Lambda?我希望能在這本書中找到對這些問題的深入解答,並從中學習到如何設計、實現和運維一個真正具備彈性的服務。

評分

換貨已經收到,包裝完好。大略看瞭一下書籍內容,從實例入手,值得一讀。

評分

看過第一本後買的第二本,寫的全但是不深,作為瞭解可以看看。

評分

大概翻瞭一下,好書,全是乾貨,這個月就好好研究它瞭

評分

專業用書,看介紹不錯,內容詳實,京東活動比較大,來這裏買

評分

一口氣買瞭10本。很優惠。速度很快,沒想到京東派送員送到晚上差不多九點都還在送,書看起來挺好的,但是買瞭3本Oreiliy的書,隻有java與xml這邊有防僞貼,其他兩本沒有,不知道是不是正版。看著還不錯吧,給好評。

評分

活動不錯,從目錄看,非常不錯

評分

書的質量很好,內容有待閱讀,價格實惠,物流很快,給好評

評分

很好很好很好很好很好很好

評分

開始看瞭,還不錯!!

相關圖書

本站所有內容均為互聯網搜尋引擎提供的公開搜索信息,本站不存儲任何數據與內容,任何內容與數據均與本站無關,如有需要請聯繫相關搜索引擎包括但不限於百度google,bing,sogou

© 2025 book.teaonline.club All Rights Reserved. 圖書大百科 版權所有