實(shí)時流計(jì)算系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
定 價:79 元
叢書名:架構(gòu)師書庫
- 作者:周爽
- 出版時間:2020/1/1
- ISBN:9787111645801
- 出 版 社:機(jī)械工業(yè)出版社
- 中圖法分類:TP274
- 頁碼:0
- 紙張:
- 版次:
- 開本:16開
全書分為11章。第1章介紹了實(shí)時流計(jì)算技術(shù)的產(chǎn)生背景、使用場景和通用架構(gòu)。第2章通過實(shí)時流計(jì)算數(shù)據(jù)的采集,詳細(xì)分析了Java高性能編程的理論基礎(chǔ)。第3-6章通過從頭構(gòu)造一個分布式實(shí)時流計(jì)算框架,詳細(xì)剖析了實(shí)時流計(jì)算中的幾個核心概念和技術(shù)重點(diǎn),并通過多個開源流計(jì)算平臺的實(shí)現(xiàn)來驗(yàn)證這些核心概念和技術(shù)重點(diǎn)。第7章談?wù)摿水?dāng)實(shí)在做不到“實(shí)時”時,我們應(yīng)該作出的備選方案。第8-10章闡述了構(gòu)建一個完整實(shí)時流計(jì)算系統(tǒng)時,必要的周邊輔助系統(tǒng)。第11章給出實(shí)時流計(jì)算應(yīng)用案例。
前言
第1章 實(shí)時流計(jì)算 …… 1
1.1 大數(shù)據(jù)時代的新挑戰(zhàn):實(shí)時流計(jì)算 …… 1
1.2 實(shí)時流計(jì)算使用場景 …… 2
1.3 實(shí)時流數(shù)據(jù)的特點(diǎn) …… 4
1.4 實(shí)時流計(jì)算系統(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è)計(jì)數(shù)據(jù)采集的接口 …… 11
2.2 使用Spring Boot實(shí)現(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實(shí)現(xiàn)數(shù)據(jù)采集服務(wù)器 …… 26
2.5.1 使用Netty實(shí)現(xiàn)數(shù)據(jù)采集API …… 27
2.5.2 異步編程 …… 29
2.5.3 流量控制和反向壓力 …… 31
2.5.4 實(shí)現(xiàn)反向壓力 …… 32
2.5.5 異步的不足之處 …… 36
2.6 本章小結(jié) …… 36
第3章 實(shí)現(xiàn)單節(jié)點(diǎn)流計(jì)算應(yīng)用 …… 38
3.1 自己動手寫實(shí)時流計(jì)算框架 …… 38
3.1.1 用DAG描述流計(jì)算過程 …… 38
3.1.2 造一個流計(jì)算框架的輪子 …… 39
3.1.3 實(shí)現(xiàn)特征提取DAG節(jié)點(diǎn) …… 42
3.1.4 實(shí)現(xiàn)特征提取DAG拓?fù)?…… 45
3.2 CompletableFuture方法與原理 …… 46
3.2.1 常用的CompletableFuture類方法 …… 47
3.2.2 CompletableFuture的工作原理 …… 49
3.3 采用CompletableFuture實(shí)現(xiàn)單節(jié)點(diǎn)流處理 …… 51
3.3.1 基于CompletableFuture實(shí)現(xiàn)流計(jì)算應(yīng)用 …… 51
3.3.2 反向壓力 …… 53
3.3.3 死鎖 …… 54
3.3.4 再論流與異步的關(guān)系 …… 55
3.4 流計(jì)算應(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 流計(jì)算到底在計(jì)算什么 …… 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 時間維度聚合特征計(jì)算 …… 76
4.4 關(guān)聯(lián)圖譜特征計(jì)算 …… 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實(shí)例 …… 87
4.6 模型學(xué)習(xí)和預(yù)測 …… 89
4.6.1 統(tǒng)計(jì)學(xué)習(xí)模型 …… 90
4.6.2 P-value檢驗(yàn) …… 90
4.6.3 機(jī)器學(xué)習(xí)模型 …… 91
4.7 本章小結(jié) …… 93
第5章 實(shí)時流計(jì)算的狀態(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實(shí)現(xiàn)流信息狀態(tài)管理 …… 98
5.2.1 時間維度聚合特征計(jì)算 …… 98
5.2.2 一度關(guān)聯(lián)特征計(jì)算 …… 99
5.3 采用Apache Ignite實(shí)現(xiàn)流信息狀態(tài)管理 …… 100
5.3.1 時間維度聚合分析 …… 101
5.3.2 一度關(guān)聯(lián)特征計(jì)算 …… 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章 開源流計(jì)算框架 …… 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)做不到實(shí)時 …… 133
7.1 做不到實(shí)時的原因 …… 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)在實(shí)時流計(jì)算中的運(yùn)用 …… 137
7.3 Kappa架構(gòu)與架構(gòu)實(shí)例 …… 138
7.3.1 Kappa架構(gòu) …… 138
7.3.2 Kappa架構(gòu)實(shí)例 …… 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 使用消息中間件的注意事項(xiàng) …… 149
8.2 Apache Kafka …… 150
8.2.1 Kafka架構(gòu) …… 150
8.2.2 Kafka生產(chǎn)者 …… 152
8.2.3 Kafka消費(fèi)者 …… 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è)計(jì)原則 …… 167
9.2 點(diǎn)查詢 …… 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章 實(shí)時流計(jì)算應(yīng)用案例 …… 204
11.1 實(shí)時流數(shù)據(jù)特征提取引擎 …… 204
11.1.1 流數(shù)據(jù)特征提取引擎DSL定義 …… 204
11.1.2 實(shí)現(xiàn)原理 …… 208
11.1.3 具體實(shí)現(xiàn) …… 210
11.2 使用Flink實(shí)現(xiàn)風(fēng)控引擎 …… 216
11.2.1 實(shí)現(xiàn)原理 …… 217
11.2.2 具體實(shí)現(xiàn) …… 218
11.3 本章小結(jié) …… 225