高性能服務系統構建與實戰 高性能服务系统构建与实战

銀文傑

  • 出版商: 電子工業
  • 出版日期: 2017-07-01
  • 售價: $534
  • 貴賓價: 9.5$507
  • 語言: 簡體中文
  • 頁數: 440
  • 裝訂: 平裝
  • ISBN: 7121315092
  • ISBN-13: 9787121315091

立即出貨 (庫存=1)

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

商品描述

《高性能服務系統構建與實戰》內容提要
影響業務系統性能的因素很多,電腦系統的各個層面都有涉及:從硬件、網絡、操作系統、中間件、存儲,直到自身代碼質量。所有技術團隊都曾為解決性能問題、提高性能峰值絞盡腦汁,從千頭萬緒到生不如死。《高性能服務系統構建與實戰》基於作者10餘年工作經歷中踩過的技術神坑,總結整理而成。雖然不能將電腦系統各個層面中影響性能的因素全部介紹完,但還是希望通過討論業務系統負載層、網絡通信層解決性能問題的過程,啟發讀者,為讀者在工作中解決性能問題提供借鑒思路。
《高性能服務系統構建與實戰》適合電腦軟件領域中立志在架構師職業路線上長期發展的技術人員閱讀,無論讀者是有一定工作經驗的軟件工程師、運維工程師還是在校大學生,都適合閱讀《高性能服務系統構建與實戰》。《高性能服務系統構建與實戰》知識點橫跨系統架構領域和軟件架構領域,所以為了更好地閱讀《高性能服務系統構建與實戰》,讀者最好曾經使用過Linux操作系統,也最好有Java編程語言的使用能力。

作者簡介

銀文傑,筆名“說好不能打臉”,博客地址blog.csdn.net/yinwenjie。資深IT屌絲一枚,很大愛好就是敲敲代碼,寫寫博客,研究研究創業熱點。CSDN博客作家,CSDN Java EE知識庫特約編輯。曾參與電信行業、物流行業多個核心系統建設,對系統頂層設計、技術線路規劃、業務系統性能調整有較豐富的經驗;也曾有幾年頭腦發熱拍案創業,兼職市場銷售、電話客服、公司保安以及清潔大叔。

目錄大綱

第一部分前序
第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