實時流計算系統(tǒng)設(shè)計與實現(xiàn)
定 價:79 元
叢書名:架構(gòu)師書庫
- 作者:周爽
- 出版時間:2020/1/1
- ISBN:9787111645801
- 出 版 社:機(jī)械工業(yè)出版社
- 中圖法分類:TP274
- 頁碼:0
- 紙張:
- 版次:
- 開本:16開
全書分為11章。第1章介紹了實時流計算技術(shù)的產(chǎn)生背景、使用場景和通用架構(gòu)。第2章通過實時流計算數(shù)據(jù)的采集,詳細(xì)分析了Java高性能編程的理論基礎(chǔ)。第3-6章通過從頭構(gòu)造一個分布式實時流計算框架,詳細(xì)剖析了實時流計算中的幾個核心概念和技術(shù)重點,并通過多個開源流計算平臺的實現(xiàn)來驗證這些核心概念和技術(shù)重點。第7章談?wù)摿水?dāng)實在做不到“實時”時,我們應(yīng)該作出的備選方案。第8-10章闡述了構(gòu)建一個完整實時流計算系統(tǒng)時,必要的周邊輔助系統(tǒng)。第11章給出實時流計算應(yīng)用案例。
前言
第1章 實時流計算 …… 1
1.1 大數(shù)據(jù)時代的新挑戰(zhàn):實時流計算 …… 1
1.2 實時流計算使用場景 …… 2
1.3 實時流數(shù)據(jù)的特點 …… 4
1.4 實時流計算系統(tǒng)架構(gòu) …… 6
1.4.1 數(shù)據(jù)采集 …… 6
1.4.2 數(shù)據(jù)傳輸 …… 7
1.4.3 數(shù)據(jù)處理 …… 8
1.4.4 數(shù)據(jù)存儲 …… 8
1.4.5 數(shù)據(jù)展示 …… 9
1.5 本章小結(jié) …… 10
第2章 數(shù)據(jù)采集 …… 11
2.1 設(shè)計數(shù)據(jù)采集的接口 …… 11
2.2 使用Spring Boot實現(xiàn)數(shù)據(jù)采集服務(wù)器 …… 12
2.3 BIO與NIO …… 14
2.3.1 BIO連接器 …… 14
2.3.2 NIO連接器 …… 17
2.4 NIO和異步 …… 19
2.4.1 CPU密集型任務(wù) …… 19
2.4.2 I/O密集型任務(wù) …… 20
2.4.3 I/O和CPU都密集型任務(wù) …… 21
2.4.4 纖程 …… 22
2.4.5 Actor …… 24
2.4.6 NIO配合異步編程 …… 25
2.5 使用Netty實現(xiàn)數(shù)據(jù)采集服務(wù)器 …… 26
2.5.1 使用Netty實現(xiàn)數(shù)據(jù)采集API …… 27
2.5.2 異步編程 …… 29
2.5.3 流量控制和反向壓力 …… 31
2.5.4 實現(xiàn)反向壓力 …… 32
2.5.5 異步的不足之處 …… 36
2.6 本章小結(jié) …… 36
第3章 實現(xiàn)單節(jié)點流計算應(yīng)用 …… 38
3.1 自己動手寫實時流計算框架 …… 38
3.1.1 用DAG描述流計算過程 …… 38
3.1.2 造一個流計算框架的輪子 …… 39
3.1.3 實現(xiàn)特征提取DAG節(jié)點 …… 42
3.1.4 實現(xiàn)特征提取DAG拓?fù)?…… 45
3.2 CompletableFuture方法與原理 …… 46
3.2.1 常用的CompletableFuture類方法 …… 47
3.2.2 CompletableFuture的工作原理 …… 49
3.3 采用CompletableFuture實現(xiàn)單節(jié)點流處理 …… 51
3.3.1 基于CompletableFuture實現(xiàn)流計算應(yīng)用 …… 51
3.3.2 反向壓力 …… 53
3.3.3 死鎖 …… 54
3.3.4 再論流與異步的關(guān)系 …… 55
3.4 流計算應(yīng)用的性能調(diào)優(yōu) …… 56
3.4.1 優(yōu)化機(jī)制 …… 56
3.4.2 優(yōu)化工具 …… 56
3.4.3 線程狀態(tài) …… 62
3.4.4 優(yōu)化方向 …… 66
3.5 本章小結(jié) …… 67
第4章 數(shù)據(jù)處理 …… 68
4.1 流計算到底在計算什么 …… 68
4.2 流數(shù)據(jù)操作 …… 70
4.2.1 過濾 …… 70
4.2.2 映射 …… 70
4.2.3 展開映射 …… 71
4.2.4 聚合 …… 72
4.2.5 關(guān)聯(lián) …… 73
4.2.6 分組 …… 75
4.2.7 遍歷 …… 75
4.3 時間維度聚合特征計算 …… 76
4.4 關(guān)聯(lián)圖譜特征計算 …… 78
4.4.1 一度關(guān)聯(lián) …… 79
4.4.2 二度關(guān)聯(lián) …… 81
4.5 事件序列分析 …… 85
4.5.1 CEP編程模式 …… 86
4.5.2 Flink CEP實例 …… 87
4.6 模型學(xué)習(xí)和預(yù)測 …… 89
4.6.1 統(tǒng)計學(xué)習(xí)模型 …… 90
4.6.2 P-value檢驗 …… 90
4.6.3 機(jī)器學(xué)習(xí)模型 …… 91
4.7 本章小結(jié) …… 93
第5章 實時流計算的狀態(tài)管理 …… 94
5.1 流的狀態(tài) …… 94
5.1.1 流數(shù)據(jù)狀態(tài) …… 96
5.1.2 流信息狀態(tài) …… 97
5.2 采用Redis實現(xiàn)流信息狀態(tài)管理 …… 98
5.2.1 時間維度聚合特征計算 …… 98
5.2.2 一度關(guān)聯(lián)特征計算 …… 99
5.3 采用Apache Ignite實現(xiàn)流信息狀態(tài)管理 …… 100
5.3.1 時間維度聚合分析 …… 101
5.3.2 一度關(guān)聯(lián)特征計算 …… 103
5.4 擴(kuò)展為集群 …… 105
5.4.1 基于Redis的狀態(tài)集群 …… 106
5.4.2 局部性原理 …… 106
5.4.3 批次請求處理 …… 108
5.4.4 基于Apache Ignite的狀態(tài)集群 …… 109
5.4.5 基于分布式文件系統(tǒng)的狀態(tài)管理集群 …… 109
5.5 本章小結(jié) …… 110
第6章 開源流計算框架 …… 111
6.1 Apache Storm …… 112
6.1.1 系統(tǒng)架構(gòu) …… 112
6.1.2 流的描述 …… 113
6.1.3 流的執(zhí)行 …… 113
6.1.4 流的狀態(tài) …… 116
6.1.5 消息傳達(dá)可靠性保證 …… 116
6.2 Spark Streaming …… 117
6.2.1 系統(tǒng)架構(gòu) …… 117
6.2.2 流的描述 …… 117
6.2.3 流的執(zhí)行 …… 118
6.2.4 流的狀態(tài) …… 119
6.2.5 消息傳達(dá)可靠性保證 …… 120
6.3 Apache Samza …… 120
6.3.1 系統(tǒng)架構(gòu) …… 120
6.3.2 流的描述 …… 121
6.3.3 流的執(zhí)行 …… 123
6.3.4 流的狀態(tài) …… 126
6.3.5 消息傳達(dá)可靠性保證 …… 126
6.4 Apache Flink …… 127
6.4.1 系統(tǒng)架構(gòu) …… 127
6.4.2 流的描述 …… 128
6.4.3 流的執(zhí)行 …… 128
6.4.4 流的狀態(tài) …… 130
6.4.5 消息傳達(dá)可靠性 …… 131
6.5 本章小結(jié) …… 132
第7章 當(dāng)做不到實時 …… 133
7.1 做不到實時的原因 …… 133
7.2 Lambda架構(gòu) …… 134
7.2.1 數(shù)據(jù)系統(tǒng)和Lambda架構(gòu)思想 …… 135
7.2.2 Lambda架構(gòu) …… 135
7.2.3 Lambda架構(gòu)在實時流計算中的運用 …… 137
7.3 Kappa架構(gòu)與架構(gòu)實例 …… 138
7.3.1 Kappa架構(gòu) …… 138
7.3.2 Kappa架構(gòu)實例 …… 140
7.4 本章小結(jié) …… 143
第8章 數(shù)據(jù)傳輸 …… 144
8.1 消息中間件 …… 144
8.1.1 為什么使用消息中間件 …… 145
8.1.2 消息中間件的工作模式 …… 146
8.1.3 消息模式 …… 147
8.1.4 使用消息中間件的注意事項 …… 149
8.2 Apache Kafka …… 150
8.2.1 Kafka架構(gòu) …… 150
8.2.2 Kafka生產(chǎn)者 …… 152
8.2.3 Kafka消費者 …… 154
8.2.4 將Kafka用于數(shù)據(jù)總線 …… 156
8.3 RabbitMQ …… 157
8.3.1 RabbitMQ架構(gòu) …… 157
8.3.2 RabbitMQ的使用 …… 158
8.3.3 將RabbitMQ用于配置總線 …… 160
8.4 Apache Camel …… 161
8.4.1 使用Apache Camel集成系統(tǒng) …… 162
8.4.2 使用Apache Camel管理流數(shù)據(jù)路由 …… 163
8.5 本章小結(jié) …… 166
第9章 數(shù)據(jù)存儲 …… 167
9.1 存儲的設(shè)計原則 …… 167
9.2 點查詢 …… 169
9.2.1 數(shù)據(jù)靈活性 …… 170
9.2.2 MongoDB數(shù)據(jù)庫 …… 171
9.2.3 數(shù)據(jù)過期和按時間分表 …… 172
9.3 Ad-Hoc查詢 …… 174
9.3.1 倒排索引 …… 175
9.3.2 ElasticSearch …… 176
9.3.3 分索引存儲 …… 177
9.4 離線分析 …… 178
9.4.1 存儲 …… 179
9.4.2 處理和分析 …… 182
9.4.3 調(diào)度 …… 183
9.5 關(guān)系型數(shù)據(jù)庫查詢 …… 185
9.6 本章小結(jié) …… 186
第10章 服務(wù)治理和配置管理 …… 188
10.1 服務(wù)治理 …… 188
10.1.1 流服務(wù)和微服務(wù) …… 188
10.1.2 微服務(wù)框架Spring Cloud …… 190
10.2 面向配置編程 …… 195
10.2.1 面向配置編程思想 …… 195
10.2.2 更高級的配置:領(lǐng)域特定語言 …… 196
10.3 動態(tài)配置 …… 196
10.4 將前端配置與后端服務(wù)配置隔離開 …… 201
10.5 本章小結(jié) …… 202
第11章 實時流計算應(yīng)用案例 …… 204
11.1 實時流數(shù)據(jù)特征提取引擎 …… 204
11.1.1 流數(shù)據(jù)特征提取引擎DSL定義 …… 204
11.1.2 實現(xiàn)原理 …… 208
11.1.3 具體實現(xiàn) …… 210
11.2 使用Flink實現(xiàn)風(fēng)控引擎 …… 216
11.2.1 實現(xiàn)原理 …… 217
11.2.2 具體實現(xiàn) …… 218
11.3 本章小結(jié) …… 225