Java項目實戰——深入理解大型互聯網企業通用技術(進階篇)
廖志偉
相關主題
商品描述
目錄大綱
目錄
第1章項目設計規劃管理1
1.1項目設計規劃/註意事項/項目管理1
1.2項目定位2
1.2.1產品設計2
1.2.2流程圖/產品原型/頁面UI9
1.3項目管理12
1.3.1項目流程12
1.3.2團隊組建17
1.3.3項目文檔20
1.3.4問題梳理21
1.3.5成本管理22
1.4開發部署23
1.4.1開發部署問題23
1.4.2編碼規範問題28
1.4.3代碼分支30
1.4.4版本/Bug處理/環境32
第2章設計模式34
2.1設計模式介紹34
2.1.1工廠方法模式34
2.1.2抽象工廠模式36
2.1.3單例模式39
2.1.4建造者模式40
2.1.5原型模式42
2.1.6適配器模式44
2.1.7橋接模式45
2.1.8裝飾器模式47
2.1.9組合模式49
2.1.10外觀模式51
2.1.11代理模式53
2.1.12模板方法模式54
2.1.13迭代器模式56
2.1.14策略模式57
2.1.15命令模式59
2.1.16責任鏈模式61
2.1.17狀態模式62
2.1.18觀察者模式65
2.1.19中介者模式67
2.1.20訪問者模式68
2.1.21解釋器模式71
2.1.22享元模式72
2.1.23管理者模式74
2.2設計模式使用場景76
2.2.1不同營銷策略的切換場景76
2.2.2對象的創建和管理場景78
2.2.3獎勵分配和活動參與場景80
2.2.4實時消息推送或互動交流場景83
2.2.5用戶的行為響應和推送通知功能場景86
2.2.6記錄核心審計日誌場景88
2.2.7商品多級分類目錄場景89
2.2.8開具增值稅發票場景93
2.2.9訂單狀態場景96
2.2.10平臺積分紅包發放場景99
2.2.11業務投放場景101
2.2.12支付場景103
第3章Spring Boot107
3.1自動配置/依賴管理107
3.2實戰集成107
3.2.1使用springbootstarterparent108
3.2.2使用springbootdependencies110
3.2.3使用io.spring.platform112
3.3手寫一個簡易版的Spring Boot113
3.3.1Java代碼直接啟動Tomcat113
3.3.2多態實現WebServer121
3.3.3實現自動配置類127
3.3.4使用條件註解129
3.3.5註入自定義配置類131
3.3.6Spring Boot自動加載134
第4章部署方案137
4.1CentOS 7137
4.1.1介紹137
4.1.2安裝138
4.1.3配置144
4.1.4復制遷移146
4.2寶塔面板159
4.2.1功能介紹159
4.2.2安裝與配置160
4.3Docker167
4.3.1核心概念168
4.3.2功能介紹169
4.3.3安裝與配置170
4.3.4實戰使用174
4.4DockerCompose175
4.4.1功能介紹176
4.4.2命令介紹176
4.4.3安裝與配置176
4.4.4實戰使用178
4.5Kubernetes191
4.5.1部署時代的變遷191
4.5.2容器的好處192
4.5.3容器技術193
4.5.4Kubernetes的好處194
4.5.5Kubernetes技術195
4.5.6項目部署實戰239
4.5.7服務網格與雲計算274
4.5.8大型項目架構340
第5章JVM調優361
5.1JVM調優目的原則361
5.2Full GC發生的原因362
5.3常用的工具363
5.3.1Jstack363
5.3.2Jmap364
5.3.3Jstat364
5.3.4JConsole365
5.3.5VisualVM365
5.3.6Arthas366
5.4JVM排查367
5.4.1收集問題信息367
5.4.2確定問題的類型368
5.4.3檢查JVM配置368
5.4.4分析堆轉儲369
5.4.5分析GC日誌369
5.4.6分析線程轉儲369
5.4.7進行代碼審查370
5.4.8實驗和更改370
5.5GC場景371
5.5.1大訪問壓力下頻繁進行Minor GC371
5.5.2Minor GC過於頻繁引發Full GC371
5.5.3大對象創建頻繁導致Full GC頻繁出現371
5.5.4Minor GC和Full GC長時間停頓372
5.5.5由內存泄漏導致的MGC和FGC頻繁發生而後出現OOM372
第6章MySQL調優373
6.1表結構設計373
6.1.1建索引374
6.1.2MySQL的索引375
6.2文件排序376
6.3讀入緩沖區大小376
6.4SQL優化377
6.4.1SQL編寫377
6.4.2SQL優化工具378
6.4.3慢SQL優化378
6.5數據分區379
6.5.1表分區379
6.5.2分區表379
6.5.3水平分區379
6.6災備處理380
6.6.1冷備份380
6.6.2熱備份380
6.6.3冷備份與熱備份的權衡380
6.6.4備份註意事項380
6.7高可用380
6.7.1MMM381
6.7.2MHA381
6.7.3MGR381
6.8異常發現處理381
6.8.1數據庫監控382
6.8.2數據庫日誌382
6.8.3數據庫巡檢383
6.8.4資源評估383
6.9數據服務383
6.9.1子表結構生成383
6.9.2數據遷移388
6.9.3數據校驗388
6.10讀寫分離388
6.10.1主從數據同步388
6.10.2中間件路由389
6.10.3緩存路由389
第7章Redis調優390
7.1綁定CPU內核390
7.2使用復雜度過高的命令391
7.3大key的存儲和刪除391
7.4數據集中過期392
7.5內存淘汰策略393
7.6碎片整理393
7.7內存大頁394
7.8數據持久化與AOF刷盤394
7.9丟包/中斷/CPU親和性395
7.10操作系統Swap與主從同步397
7.11監控397
7.12高可用398
7.12.1主從同步和哨兵機制398
7.12.2多級緩存398
7.12.3冷熱分離399
7.13緩存雪崩、穿透、擊穿、熱點緩存重構、緩存失效400
第8章消息中間件調優402
8.1消息丟失402
8.1.1消息丟失產生的原因402
8.1.2Kafka402
8.1.3RabbitMQ403
8.1.4RocketMQ403
8.2消息重復消費404
8.3消息順序405
8.4消息積壓406
8.5延遲隊列406
8.6高可用406
8.7Kafka系統調優407
8.7.1硬件調優407
8.7.2網絡調優407
8.7.3Kafka本身調優407
8.8RabbitMQ系統調優412
8.9RocketMQ系統調優414
第9章Elasticsearch調優417
9.1CPU優化417
9.2內存優化418
9.3網絡優化418
9.4磁盤優化420
9.5電腦系統優化420
9.6Elasticsearch本身配置參數421
9.7GC調優421
9.8索引優化設置422
9.8.1批量提交422
9.8.2增加Refresh時間間隔422
9.8.3修改index_buffer_size的設置423
9.8.4修改translog相關的設置423
9.8.5_id字段、_all字段、_source字段、index屬性424
9.8.6減少副本數量424
9.9查詢方面優化424
9.9.1路由優化424
9.9.2routing查詢424
9.9.3Filter與Query的區別425
9.9.4深度翻頁425
9.9.5腳本合理使用425
9.9.6Cache的設置及使用426
9.9.7更多查詢優化經驗426
9.9.8通過開啟慢查詢配置以定位慢查詢428
9.10數據結構優化430
9.10.1減少不需要的字段430
9.10.2Nested Object與Parent/Child431
9.10.3靜態映射431
9.10.4document模型設計431
9.11集群架構設計432
9.11.1主節點和數據節點432
9.11.2Hot節點和Warm節點432
9.11.3協調節點433
9.11.4關閉數據節點服務器中的HTTP功能433
9.11.5一臺服務器上只部署一個節點433
9.11.6集群分片設置434
9.12慢查詢優化434
9.13可用性優化435
9.13.1Elasticsearch原生版本在可用性方面存在的問題435
9.13.2問題的分析436
9.13.3高並發請求壓垮集群436
9.14性能優化438
9.15執行引擎的優化439
9.16成本優化440
9.16.1存儲成本優化440
9.16.2內存成本優化441
9.17擴展性優化442
9.18分析性能問題443