-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
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書號: 47276
詢問書籍請說出此書號!

缺書
NT售價: 445

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

譯者序:

前言:

本書主要的代碼示例采用Java 寫成,對于一些相對獨立章節中的代碼,筆者將其整理后形成示例工程。例如實戰章節中的日志采集工程、圖片服務工程,筆者已經上傳到了CSDN的線上資源管理中,可供讀者自行下載。本書一共分為四個部分,第一部分對日常開發任務中經常遇到的問題進行了總結,并將這些問題分類,分解出這些問題在整個軟件架構中的位置。第二部分、第三部分和讀者一起討論軟件架構中的負載層性能設計、業務層性能設計并穿插講解了一些存儲層的設計關注點,其中將詳細討論一些具體的軟件/組件應用以及它們的工作原理。第四部分為實踐章節,這一部分將基于已經介紹過的知識點和讀者一起將它們用于工程實戰,對于之前沒有涉及的新知識點,也會在其中進行簡要說明。
本書大量使用操作系統、Java 知識體系、軟件設計中的基礎知識,包括但不限于:操作系統線程原理、悲觀鎖/樂觀鎖、軟件設計模式等。例如本書中至少使用的設計模式包括:命令模式、構建者模式、觀察者模式、責任鏈模式;本書中至少涉及的Java 基礎知識包括:有限/無限隊列、悲觀鎖/樂觀鎖、SPI 規則、concurrent 工具包、狀態機;本書還關聯至少如下第三方組件:分布式文件系統、Redis、關系型數據庫、Keepalived、ZooKeeper。因為篇幅所限,本書并不可能用太多的文字對這些基礎知識、第三方組件進行詳細介紹,甚至不會專門說明某些技術點。所以本書更適合有一定一線業務系統開發經驗的軟件工程師閱讀,并且在工作過程中使用過Linux 系列操作系統(最好是CentOS),因為本書講解的知識點、介紹的安裝運行方法、討論的工作原理、描述的操作過程、給出的示例代碼環境全部都是基于Linux 操作系統的。如果你想從一名開發人員成長為一名軟件架構師,那么本書絕對是你合適的一塊“墊腳石”;本書還適合有一定系統運維工作經驗的IT 工程師閱讀,如果你想完成從傳統的IOE系統運維到移動互聯網系統領域運維的蛻變,那么本書所介紹的知識也會給你一定的啟發。
由于本書內容較豐富,文字講解部分就占用了相當的篇幅,所以為了盡可能節約篇幅,本書在列舉代碼段落時往往只保留了主要的代碼片段,并以“……”表示代碼段落中有省略的片段。另外,如果在代碼片段中使用Java 標準注釋規范,則將占據多余的空間,所以本書大部分使用了Java 中的單行注釋方式對代碼目的進行說明。類似成體系的工程示例,如日志采集案例、圖片處理案例等,都在相關章節中注明了完整的工程示例下載地址,以便讀者查看更詳盡的實現方法。最后,本書中多數圖片由筆者自行繪制(90%以上),有一部分圖片來源于互聯網資源,凡是后者筆者都在圖片下方進行了明確的說明。
本書成書于筆者對自己博客文章的整理,其中有30%的內容為成書整理時新增。在這個過程中有很多朋友給予筆者幫助,幫助筆者校正博客文章中的錯誤。特此感謝以下網友(CSDN賬號,排名不分先后):amadis_chen、自然的發呆、thisisgpy、ithub_33423142、shadabing、fyc198610、zkq1989、sinat_25444367、Tony_tec、周創、gongfengying、z3133464733、qq_32159081、weixin_33750642、engyong7723131、白糖、a35946729、zzpapzzp、qq_16387501、LX_871225、littlebugu 。
筆者還要感謝家人,他們都以自己的方式在筆者寫作期間默默地給予支持。筆者最后還要特別感謝電子工業出版社博文視點編輯付睿老師和參與本書校對整理工作的各位編輯,沒有他們的勤勞付出就不會有本書的出版發行。

輕松注冊成為博文視點社區用戶,掃碼直達本書頁面。
? 下載資源:本書如提供示例代碼及資源文件,均可在 下載資源 處下載。
? 提交勘誤:您對書中內容的修改意見可在 提交勘誤 處提交,若被采納,將獲贈博文視
點社區積分(在您購買電子書時,積分可用來抵扣相應金額)。
? 交流互動:在頁面下方 讀者評論 處留下您的疑問或觀點,與我們和其他讀者一同學習
交流。
內容簡介:

影響業務系統性能的因素很多,計算機系統的各個層面都有涉及:從硬件、網絡、操作系統、中間件、存儲,直到自身代碼質量。所有技術團隊都曾為解決性能問題、提高性能峰值絞盡腦汁,從千頭萬緒到生不如死。本書基于作者10 余年工作經歷中踩過的技術神坑,總結整理而成。雖然不能將計算機系統各個層面中影響性能的因素全部介紹完,但還是希望通過討論業務系統負載層、網絡通信層解決性能問題的過程,啟發讀者,為讀者在工作中解決性能問題提供借鑒思路。

目錄:

第一部分 前序
第1 章 那些年一起踩的坑 .... 2
1.1 性能問題 ..... 2
1.2 可用性問題 ..... 3
1.3 異常處理問題 ..... 4
1.4 系統間依賴問題 ..... 4
1.5 系統雪崩問題 ..... 7
第2 章 業務系統分解 ..... 9
2.1 負載層技術 ..... 10
2.2 業務層技術 ..... 12
2.3 存儲層技術 ..... 13
第二部分 負載層技術與設計
第3 章 Nginx 技術 ...... 16
3.1 Nginx 中的基本技術理論 ..... 16
3.1.1 一致性Hash 算法 .....16
3.1.2 輪詢與加權輪詢 .....18
3.2 Nginx 的安裝和使用 ..... 20
3.3 Nginx 的重要配置講解 ..... 22
3.4 Nginx 的重要設置 ..... 25
3.4.1 use [ kqueue | rtsig | epoll | select | poll ] ....25
3.4.2 worker_processes 和worker_connections ...26
3.4.3 max client 的計算方式 ....29
3.5 Nginx 的常用模塊 ..... 30
3.5.1 gzip 壓縮模塊......30
3.5.2 rewrite 模塊 .....32
3.5.3 健康檢查模塊 .....34
3.5.4 圖片動態縮略模塊 .....37
第4 章 LVS 技術 ...... 41
4.1 網絡協議基礎知識 ..... 41
4.1.1 鏈路層報文 .....42
4.1.2 網絡層IP 報文 ......42
4.1.3 傳輸層TCP 報文 ......44
4.2 LVS 的三種工作方式 ..... 45
4.2.1 LVS-NAT 工作方式 .....45
4.2.2 LVS-DR 工作方式 ......47
4.2.3 LVS-TUN 工作方式 .....49
4.2.4 LVS 調度方式 .....52
4.3 LVS 設置實戰 ..... 53
4.3.1 LVS-NAT 方式設置 .....53
4.3.2 LVS-DR 模式設置 ......57
4.3.3 ipvsadm 參數匯總 .....60
第5 章 其他負載層技術 .... 63
5.1 DNS 和智能DNS .... 63
5.2 CDN 網絡 ...... 65
5.3 Keepalived ..... 67
5.4 不得不提的Tengine ..... 68
第6 章 負載層性能實戰 .... 69
6.1 負載層技術實戰場景 ..... 69
6.1.1 負載場景一 .....69
6.1.2 負載場景二 .....70
6.1.3 負載場景三 .....71
6.1.4 負載場景四 .....72
6.2 方案一:使用Nginx 初步解決性能瓶頸問題 .... 72
6.3 方案二:使用LVS + Keepalived + Nginx 增加吞吐量和穩定性 .. 74
6.4 方案三:使用DNS 和CDN 網絡優化整體性能 .... 75
第三部分 系統間通信
第7 章 系統間通信:網絡I/O 模型 .... 78
7.1 模型 ...... 78
7.1.1 信息格式 .....79
7.1.2 網絡協議 .....80
7.1.3 通信方式/框架 ......82
7.2 網絡I/O 模型:阻塞模式 .... 82
7.2.1 通信模型概要 .....82
7.2.2 阻塞模式深入分析 .....87
7.2.3 問題的根源 .....91
7.3 網絡I/O 模型:同步非阻塞模式——對阻塞模式的改進 ... 93
7.3.1 首次改進 .....97
7.3.2 再次改進 .....99
7.3.3 依然存在問題 ..... 101
7.4 網絡I/O 模型:多路復用(I/O Multiplex)... 101
7.4.1 典型的多路復用I/O 實現 .... 102
7.4.2 Java 對多路復用I/O 技術的支持 ..... 103
7.4.3 Java NIO 框架簡要設計分析 ..... 112
7.4.4 Java 實例改進 ..... 114
7.4.5 多路復用I/O 的優缺點 .... 118
7.5 網絡I/O 模型:異步I/O .... 119
7.5.1 Java 對AIO 的支持..... 120
7.5.2 Java 提供的 AIO 支持示例 .... 122
7.5.3 還有改進可能 ..... 128
7.6 第三方組件:Netty ..... 128
7.6.1 為什么需要Netty ..... 129
7.6.2 Netty 快速上手 ...... 130
7.6.3 Netty 中的重要概念 .... 135
7.7 再次審視Netty 的作用 ..... 141
7.7.1 對網絡I/O 模型的封裝 .... 142
7.7.2 對數據信息格式的封裝 ..... 143
7.7.3 解決了“技術層”框架中的技術問題 .... 146
7.7.4 解決半包問題和粘包問題 ..... 148
7.8 不得不提的線程池 ..... 152
7.8.1 為什么要使用線程池 ..... 152
7.8.2 線程池基本使用 ..... 155
7.8.3 ThreadPoolExecutor 邏輯結構和工作方式 .... 156
7.8.4 線程池的等待隊列 ..... 159
7.8.5 拒絕任務 ..... 165
7.8.6 ThreadPoolExecutor 中常用屬性總結 .... 168
第8 章 RPC 與系統間調用 ..... 170
8.1 RPC 技術原理 ..... 170
8.1.1 什么是RPC ..... 170
8.1.2 RPC 要素 ..... 171
8.1.3 更泛化的RPC 定義 .... 173
8.1.4 典型的RPC 框架介紹 .... 174
8.1.5 RPC 框架的性能依據 ..... 175
8.2 RPC 實踐:Apache Thrift 基本使用 .... 176
8.2.1 IDL 格式概要 ...... 177
8.2.2 簡單的Apache Thrift 代碼 ..... 181
8.3 RPC 實踐:Apache Thrift 深入分析 .... 185
8.3.1 Apache Thrift 與消息格式 .... 185
8.3.2 Apache Thrift 與通信模型 .... 190
8.3.3 Apache Thrift 與線程池 .... 193
8.4 RPC 實踐:解決異常問題 ..... 193
8.4.1 分布式業務的異常解決思路.... 195
8.4.2 事務補償的簡單實現 ..... 201
8.5 SOA 和服務治理 ..... 224
8.5.1 SOA 概述 ...... 225
8.5.2 ESB 概述 ..... 227
8.5.3 常見的ESB 產品 ...... 229
8.5.4 服務治理框架 ..... 231
第9 章 系統間通信:消息隊列技術.... 237
9.1 消息隊列原理 ..... 237
9.1.1 消息 ...... 237
9.1.2 服務結構 ..... 238
9.2 消息協議 ..... 238
9.2.1 XMPP 協議 ..... 239
9.2.2 Stomp 協議 ...... 241
9.2.3 MQTT 協議 ..... 244
9.2.4 AMQP 協議 ..... 248
9.2.5 不得不提的JMS 規范 .... 251
9.3 MQ 實踐:ActiveMQ 基本概念和使用 ... 253
9.3.1 ActiveMQ 的簡易安裝過程 .... 253
9.3.2 ActiveMQ 的其他命令參數 .... 255
9.3.3 在ActiveMQ 中傳遞Stomp 消息 .... 256
9.3.4 ActiveMQ 中的Queue 和Topics .... 258
9.3.5 JMS 和協議間轉換 ..... 260
9.3.6 持久化消息和非持久化消息.... 266
9.3.7 持續訂閱和非持續訂閱 ..... 267
9.4 MQ 實踐:ActiveMQ 性能優化 .... 267
9.4.1 ActiveMQ 性能優化思路 .... 267
9.4.2 ActiveMQ 中的網絡配置 .... 268
9.4.3 ActiveMQ 處理規則和優化 .... 273
9.4.4 ActiveMQ 的持久消息存儲方案 .... 285
9.5 MQ 實踐:ActiveMQ 集群方案 .... 299
9.5.1 ActiveMQ 高性能方案 ..... 300
9.5.2 ActiveMQ 高可用方案 ..... 311
9.6 其他MQ技術:Apache Kafka .... 321
9.6.1 Kafka 設計概要 ..... 321
9.6.2 Kafka 集群安裝:配置過程 ..... 333
9.6.3 Kafka 常用命令 ..... 336
第四部分 場景實戰
第10 章 場景實戰:其他儲備知識 ..... 340
10.1 數據存儲 ..... 340
10.1.1 塊存儲 ...... 341
10.1.2 共享存儲/共享文件存儲 .... 343
10.1.3 對象存儲系統 ...... 344
10.2 磁盤陣列系統 ..... 345
10.2.1 RAID 0 ...... 346
10.2.2 RAID 1 ...... 347
10.2.3 RAID 10 和RAID 01 ..... 348
10.2.4 RAID 5 ...... 349
10.3 NoSQL 技術 ...... 351
第11 章 場景實戰:Kafka 與日志采集 ... 355
11.1 Kafka 應用場景:場景說明 ..... 355
11.2 Kafka 應用場景一:侵入式方案 ... 357
11.2.1 設計重點 ...... 358
11.2.2 編碼過程:生產者和業務系統集成 ... 361
11.2.3 是否使用Spring Integration-Kafka .... 366
11.2.4 編碼過程:消費者端 ..... 367
11.3 Kafka 應用場景二:調整侵入式方案 ... 371
11.3.1 方案一的問題所在 ..... 371
11.3.2 方案二的解決思路 ..... 371
11.3.3 方案二的主要代碼示例 ..... 377
11.3.4 其他設計思考 ...... 380
11.3.5 百度站長統計工具 ..... 382
11.4 Kafka 應用場景三:非侵入式方案 ... 383
11.4.1 Apache Flume 介紹 .... 383
11.4.2 設計方案 ...... 384
11.4.3 配置過程概要 ...... 386
11.4.4 方案三細節說明..... 388
第12 章 場景實戰:圖片服務 .... 392
12.1 需求場景 ..... 392
12.2 概要設計階段 ..... 393
12.2.1 分布式文件系統選型 ..... 394
12.2.2 緩存系統選型 ...... 395
12.2.3 路由層選型 ...... 397
12.2.4 架構設計細化 ...... 400
12.2.5 其他技術選型 ...... 401
12.3 關鍵技術點考量 ..... 403
12.3.1 責任鏈模式 ...... 403
12.3.2 Redis 中的數據結構選擇 ..... 404
12.3.3 使用Spring Boot .... 406
12.3.4 其他技術特性 ...... 408
12.4 詳細設計階段 ..... 412
12.4.1 位圖基本知識 ...... 412
12.4.2 Nginx 中的Proxy Cache 配置 .... 418
12.4.3 責任鏈進行圖片處理 ..... 420
12.4.4 Redis 緩存操作 ..... 423
序: