-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
3/26 新書到! 3/19 新書到! 3/14 新書到! 12/12 新書到!
購書流程Q & A站務留言版客服信箱
3ds MaxMayaRhinoAfter EffectsSketchUpZBrushPainterUnity
PhotoShopAutoCadMasterCamSolidWorksCreoUGRevitNuke
C#CC++Java遊戲程式Linux嵌入式PLCFPGAMatlab
駭客資料庫搜索引擎影像處理FluentVR+ARANSYS深度學習
單晶片AVROpenGLArduinoRaspberry Pi電路設計CadenceProtel
HadoopPythonStm32CortexLabview手機程式AndroidiPhone
可查書名,作者,ISBN,3dwoo書號
詳細書籍分類

深入淺出大型網站架構設計

( 簡體 字)
作者:李力非類別:1. -> 程式設計 -> 綜合
譯者:
出版社:電子工業出版社深入淺出大型網站架構設計 3dWoo書號: 52874
詢問書籍請說出此書號!

缺書
NT售價: 445

出版日:5/1/2020
頁數:256
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 版 )
加入購物車 加到我的最愛
(請先登入會員)
ISBN:9787121353970
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證)
作者序:

譯者序:

前言:

為什么要寫這本書
很多剛從學校畢業的計算機專業的學生,或者通過自學掌握編程技能的非計算機專業的人,往往會發現軟件工程師在工作中所做的內容與學校中所學的知識有不小的差異,并且這種差異隨著項目規模的增大而增大。一些擁有不錯編程基礎的從業人員往往也要在從業數年以后,才能逐漸通過積累工作經驗來縮小、彌補這種差異。
造成這種差異的主要原因在于,在學校中學習的編程技能側重于計算機科學的原理及基本的應用,而在工作中,對于一個工程項目軟件,為了使其達到商用、大規模使用的條件,軟件工程師會采用許多學校中不會重點教學甚至完全不會接觸的方式來確保其開發、維護上的高效率和健壯性。本書在網站開發方面,通過總結筆者從業中遇到過的眾多案例和項目,精練出一系列職業經驗和操作規程,幫助感興趣的初學者對職業實踐有所了解,而編程能力原本就扎實的程序員更可以通過本書獲得職場上的即戰力。

本書有何特色
1. 涵蓋了大型網站建設從理論到實踐的方方面面
對于每個相關的業內實踐問題,本書都會涵蓋其常見解決方案和最佳推薦選擇,并從原理出發分析和解釋每個方案,使讀者充分理解積累了大量從業人員經驗教訓的實現方案。
2. 每個主題都包含了大量實例說明
本書為暫時沒有機會參與大流量網站建設的讀者提供了大量生產實例,使讀者能更直觀地理解大型網站相比普通網站在生產環境中面臨的問題及其解決方案。
3. 對多個實踐類主題都附有可直接使用的代碼示例
本書對所有可以獨立嘗試實踐的主題都附有實踐說明和代碼示例,絕大多數代碼示例都可以經過簡單配置直接使用,非常適合看了相關章節躍躍欲試的讀者。
4. 主題鮮明,易于上手
本書各章主題之間盡量保證分割清晰,大多數章節相互獨立,且每個主題深入淺出,讀者即不讀完全書,只對中間某個主題感興趣,也可以隨手拿起書深入其中一章,而不受上下文牽制影響。
5. 信息涉及范圍廣,拓寬視野,與時俱進
本書所提及的設計方案、技術手段和實踐標準均與當前業內實踐看齊,并在必要部分對業內行的技術進行了或深或廣的介紹,幫助讀者輕松地以本書為出發點,找到合適的拓展資料值得進一步深挖的技術。

本書內容及知識體系
第1∼2 章主要介紹了網站架構的設計目標和原則,包括高性能、高可用、伸縮性和擴展性,以此為綱展開全書。除此之外,還介紹了軟件工程標準的網站架構設計流程。
第3∼7 章主要介紹了網站數據層的幾種優化手段,從按需選擇數據庫到分庫分表、讀寫分、緩存和動靜分離,逐步深入,從數據庫介紹到分庫分表和讀寫分離,從緩存介紹到動靜分離,理論再實踐,完成數據層的優化改造。
第8∼10 章主要從負載均衡、異步和非阻塞、隊列三個角度介紹了如何管理和優化一個網的整體架構,使其達到高并發,瞬時承擔更大流量。
第11∼15 章主要介紹了大型商用網站最重要的性質之一——高可用,以及如何做到高可。分別從高可用的指導原則、異地多活、服務降級、限流和下游錯誤處理的角度,解釋了單機服務不可靠的情況下,如何通過架構設計使系統整體變得可靠又穩定。
第16∼17 章主要介紹了大型商用網站在上線服務之前,所需要采取的合理合規的必要手,以及如何從一個成熟的業務擁有者的角度,盡可能降低新服務上線的風險。

適合閱讀本書的讀者
? 有一定技術水平但工程資歷尚淺的人員。
? 有一定工程資歷但沒有大流量網站開發和維護經驗的人員。
? 希望對網站開發的軟件工程有所了解的人員。
? 廣大Web 開發程序員。
? 希望提高大型項目設計水平的人員。
? 軟件開發項目經理。
? 需要一本案頭必備查詢手冊的人員。

閱讀本書的建議
? 沒有網站開發經驗的人員,建議配合一本網站開發實戰類參考書來閱讀。
? 有網站開發經驗的人員,可以隨意從一章開始閱讀,相信都會有所受益。
? 對于有代碼示例的章節,可以隨時按照其中的說明進行實戰;沒有代碼示例但有操作流程章節,需要一定生產環境支撐其方法的實踐,請讀者結合實
際工作環境進行學習。
內容簡介:

為了幫助有一定編程基礎的讀者快速了解如何以職業標準開發一個網站,本書從架構設計的角度出發,涵蓋了以高性能、高可用、高并發等多個業內標準為目標的網站設計和建設手段,并在每個方面追本溯源,從理論方法到生產實踐,在力求簡明易懂、適用于盡可能多的場合的前提下深入到實踐中,為讀者提供實用操作指南。同時,本書對所有出現的概念都作了簡明扼要的解釋,并對介紹的手段和方案不僅解釋了如何做,也解釋了來源和選擇理由,使得讀者在理解內容并能應用的同時,也能理解這些手段背后的思路,將來亦可脫離書本,作出屬于自己的創新方案,真正做到了授人以魚不如授人以漁。
目錄:

第1 章 網站架構概述 1
1.1 網站的基本組件 1
1.2 網站業務規模增長帶來的問題 2
1.3 大型網站架構設計的目標和原則 4
1.3.1 高性能 4
1.3.2 高可用 5
1.3.3 伸縮性 6
1.3.4 擴展性 7

第2 章 大型網站架構設計的流程 9
2.1 需求分析 9
2.1.1 需求驅動的重要性 9
2.1.2 如何根據需求制定系統目標 10
2.2 方案設計 11
2.2.1 與架構設計原則相結合 11
2.2.2 設計多套備選方案 12
2.3 方案評估 13

第3 章 數據庫的選擇 15
3.1 關系數據庫 15
3.1.1 什么是關系數據庫 16
3.1.2 關系數據庫的優勢和應用場景 17
3.2 非關系數據庫 18
3.2.1 什么是非關系數據庫 18
3.2.2 非關系數據庫的優勢和應用場景 19
3.3 常見的關系數據庫產品 20
3.3.1 MySQL 20
3.3.2 MS SQL Server 21
3.3.3 Oracle 22
3.4 常見的非關系數據庫產品 22
3.4.1 MongoDB 23
3.4.2 DynamoDB 23
3.5 云數據庫 23

第4 章 數據庫優化:分庫分表 25
4.1 什么是分庫分表 25
4.1.1 分庫 25
4.1.2 分表 26
4.2 為什么要進行分庫分表 27
4.2.1 吞吐量 27
4.2.2 索引 27
4.2.3 備份 28
4.2.4 其他風險 28
4.3 實現分庫分表 28
4.3.1 垂直分庫分表 29
4.3.2 水平分庫分表 30
4.4 分庫分表帶來的問題 32
4.4.1 全局唯一ID 32
4.4.2 關系數據庫的部分操作 33
4.4.3 事務支持 33

第5 章 數據庫優化:讀寫分離 34
5.1 什么是讀寫分離 34
5.2 為什么要使用讀寫分離 35
5.2.1 何時需要使用讀寫分離 35
5.2.2 讀寫分離的好處 36
5.3 實現讀寫分離 37
5.3.1 中間件實現 37
5.3.2 應用層實現 38
5.4 讀寫分離帶來的問題 39
5.4.1 副本的實時性 39
5.4.2 副本實時性的解決方案 39
5.4.3 成本問題 40

第6 章 緩存 41
6.1 什么是緩存 41
6.2 緩存策略 42
6.2.1 LFU 緩存策略 42
6.2.2 LRU 緩存策略 43
6.2.3 緩存策略的優劣 43
6.3 緩存命中率 44
6.4 緩存的類型 44
6.4.1 客戶端緩存 44
6.4.2 CDN 緩存 45
6.4.3 應用緩存 45
6.4.4 基于分布式集群的緩存 45
6.5 分布式緩存 46
6.5.1 分布式緩存的應用場景 46
6.5.2 分布式緩存的架構設計 47
6.6 緩存的問題 47
6.6.1 緩存過熱 47
6.6.2 緩存穿透 48
6.6.3 緩存雪崩 48
6.7 常見的緩存系統 49
6.7.1 MemCached 49
6.7.2 Redis 49

第7 章 動靜分離 50
7.1 動靜分離 50
7.1.1 動態數據和靜態數據 50
7.1.2 動靜分離的概念 52
7.1.3 動靜分離的作用 53
7.2 拆分動態數據和靜態數據 55
7.2.1 識別動態數據和靜態數據 55
7.2.2 改造數據 56
7.2.3 改造數據要注意的問題 60
7.3 動靜分離的架構改造 62
7.3.1 動靜分離的緩存架構 62
7.3.2 瀏覽器緩存 63
7.3.3 CDN 緩存 64
7.3.4 Web 服務器緩存 65
7.3.5 分布式緩存 65
7.3.6 頁面組裝 66

第8 章 負載均衡 67
8.1 什么是負載均衡 67
8.1.1 負載均衡的概念 67
8.1.2 負載均衡的類型 69
8.1.3 有負載均衡的網站架構 69
8.1.4 反向代理 70
8.2 DNS 負載均衡 72
8.2.1 DNS 73
8.2.2 A 記錄 73
8.2.3 CName 73
8.2.4 配置DNS 負載均衡 74
8.2.5 DNS 負載均衡的優缺點 75
8.3 硬件負載均衡 76
8.4 軟件負載均衡:LVS 77
8.4.1 LVS 架構 77
8.4.2 LVS 的負載均衡方式 78
8.4.3 LVS 的負載均衡策略 80
8.4.4 LVS 的調整升級 81
8.4.5 LVS 的優缺點 81
8.5 軟件負載均衡:Nginx 82
8.5.1 Nginx 架構 82
8.5.2 Nginx 的工作原理 83
8.5.3 Nginx 的負載均衡策略 84
8.5.4 Nginx 的錯誤重試 85
8.5.5 Nginx 的調整升級 85
8.5.6 Nginx 的主要特點 86
8.5.7 Nginx 配置實戰 86
8.6 負載均衡的實踐流程 89
8.6.1 回顧流量基本概念 90
8.6.2 實踐流程 90

第9 章 異步和非阻塞 93
9.1 異步及其相關概念 93
9.1.1 同步和異步 94
9.1.2 阻塞和非阻塞 94
9.1.3 多線程 96
9.2 異步和非阻塞的作用 97
9.2.1 異步和非阻塞的應用場景 97
9.2.2 異步和非阻塞的架構 102
9.2.3 異步的優勢 103
9.3 實戰:以Java 為例 105
9.3.1 Runnable 105
9.3.2 Callable 106
9.3.3 Future 106
9.3.4 Executor 和ExecutorService 108
9.3.5 改造同步且阻塞的Java 代碼 108
9.4 異步和非阻塞帶來的問題 112
9.4.1 API 定義 113
9.4.2 線程池的擴容 113

第10 章 隊列 116
10.1 隊列及其相關概念 116
10.1.1 隊列 116
10.1.2 生產/消費、發布/訂閱與主題 117
10.2 隊列與網站的整合 119
10.2.1 發布者 119
10.2.2 訂閱者 120
10.2.3 訂閱者:推送模式 120
10.2.4 訂閱者:拉取/輪詢模式 122
10.3 隊列的應用 123
10.3.1 流量控制 123
10.3.2 服務解耦 126
10.4 隊列存在的問題與解決方案 128
10.4.1 消息積壓 128
10.4.2 消息的可靠傳遞 130
10.4.3 消息重復 133
10.5 常見的隊列產品和系統 134
10.5.1 RabbitMQ 134
10.5.2 ActiveMQ 135
10.5.3 RocketMQ 135
10.5.4 Kafka 136
10.5.5 AWS SQS 和SNS 136

第11 章 高可用 137
11.1 CAP 原理 137
11.1.1 什么是CAP 原理 137
11.1.2 CAP 原理與網站服務 138
11.2 服務可用性的標準 141
11.3 冗余和隔離 142
11.3.1 擴容中的冗余 142
11.3.2 廣義的冗余 142
11.3.3 隔離 142

第12 章 異地多活 144
12.1 異地多活的基本概念 144
12.1.1 基本概念 144
12.1.2 作用 145
12.1.3 應用場景 145
12.1.4 異地多活和負載均衡 147
12.2 異地多活的類型 147
12.2.1 同城異地多活 147
12.2.2 跨城市異地多活 148
12.2.3 跨地區異地多活 149
12.3 如何進行異地多活改造 149
12.3.1 業務分類 149
12.3.2 數據分類 150
12.3.3 數據同步 151
12.3.4 異地多活的數據同步提升方案 153

第13 章 服務降級 156
13.1 服務降級的基本概念 156
13.1.1 什么是服務降級 156
13.1.2 單點故障 158
13.2 微服務與服務拆分 160
13.2.1 什么是微服務 160
13.2.2 流量模式 161
13.2.3 如何拆分服務 162
13.3 系統分級 165
13.3.1 分析系統流程圖 165
13.3.2 一級系統 166

第14 章 限流 168
14.1 限流的基本概念 168
14.1.1 什么是限流 168
14.1.2 為什么需要限流 169
14.1.3 限流的幾種標準 171
14.1.4 限流的幾種思路 172
14.2 限流算法 176
14.2.1 令牌桶算法與漏桶算法 176
14.2.2 時間窗口算法 179
14.2.3 隊列法 182
14.3 服務限流需要考慮的問題 183
14.3.1 性能和準確性 183
14.3.2 如何進一步提升 184
14.4 實戰:使用Nginx 限流 186

第15 章 下游錯誤處理 191
15.1 超時機制 191
15.2 錯誤分類 192
15.2.1 如何分類錯誤 192
15.2.2 早期失敗 194
15.2.3 默認值的作用 194
15.3 錯誤重試 195
15.3.1 錯誤重試的條件 196
15.3.2 錯誤重試帶來的問題 196

第16 章 測試 198
16.1 測試的類型 198
16.1.1 一般功能測試 198
16.1.2 黑盒和白盒測試 200
16.1.3 不同程度的功能測試 202
16.1.4 非功能的測試 204
16.2 測試用例的設計 206
16.2.1 模擬實際環境 206
16.2.2 包含錯誤情況 207
16.2.3 保證用例多樣性 209
16.2.4 驗證系統間的連接性 212
16.3 功能測試詳解 213
16.3.1 單元測試 213
16.3.2 集成測試 217
16.3.3 端到端測試 219

第17 章 上線準備 222
17.1 發布流程 222
17.1.1 規范化流程 222
17.1.2 結合測試的流程 224
17.1.3 自動化的流程 225
17.2 監控 226
17.2.1 生產環境度量 226
17.2.2 監控與警報 231
17.3 壓力測試 232
17.3.1 壓力測試的目的 233
17.3.2 如何進行壓力測試 233
17.4 灰度發布 237
17.4.1 什么是灰度發布 237
17.4.2 灰度發布的條件 239
17.5 維護人員 241
17.5.1 應急預案 241
17.5.2 人工監控 242
序: