實(shí)時(shí)流計(jì)算系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn) 版權(quán)信息
- ISBN:9787111645801
- 條形碼:9787111645801 ; 978-7-111-64580-1
- 裝幀:平裝-膠訂
- 冊(cè)數(shù):暫無(wú)
- 重量:暫無(wú)
- 所屬分類:>>
實(shí)時(shí)流計(jì)算系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn) 本書特色
透過(guò)現(xiàn)象看本質(zhì),掌握高性能、高并發(fā)、實(shí)時(shí)系統(tǒng)設(shè)計(jì)與權(quán)衡之道高度抽象出實(shí)時(shí)流計(jì)算系統(tǒng)的技術(shù)支撐、架構(gòu)模式、編程模式、系統(tǒng)實(shí)現(xiàn)與協(xié)同系統(tǒng),并從零編寫一個(gè)分布式實(shí)時(shí)流計(jì)算系統(tǒng)
實(shí)時(shí)流計(jì)算系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn) 內(nèi)容簡(jiǎn)介
全書分為11章。第1章介紹了實(shí)時(shí)流計(jì)算技術(shù)的產(chǎn)生背景、使用場(chǎng)景和通用架構(gòu)。第2章通過(guò)實(shí)時(shí)流計(jì)算數(shù)據(jù)的采集,詳細(xì)分析了Java高性能編程的理論基礎(chǔ)。第3-6章通過(guò)從頭構(gòu)造一個(gè)分布式實(shí)時(shí)流計(jì)算框架,詳細(xì)剖析了實(shí)時(shí)流計(jì)算中的幾個(gè)核心概念和技術(shù)重點(diǎn),并通過(guò)多個(gè)開(kāi)源流計(jì)算平臺(tái)的實(shí)現(xiàn)來(lái)驗(yàn)證這些核心概念和技術(shù)重點(diǎn)。第7章談?wù)摿水?dāng)實(shí)在做不到“實(shí)時(shí)”時(shí),我們應(yīng)該作出的備選方案。第8-10章闡述了構(gòu)建一個(gè)完整實(shí)時(shí)流計(jì)算系統(tǒng)時(shí),必要的周邊輔助系統(tǒng)。第11章給出實(shí)時(shí)流計(jì)算應(yīng)用案例。
實(shí)時(shí)流計(jì)算系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn) 目錄
前言
第1章 實(shí)時(shí)流計(jì)算 …… 1
1.1 大數(shù)據(jù)時(shí)代的新挑戰(zhàn):實(shí)時(shí)流計(jì)算 …… 1
1.2 實(shí)時(shí)流計(jì)算使用場(chǎng)景 …… 2
1.3 實(shí)時(shí)流數(shù)據(jù)的特點(diǎn) …… 4
1.4 實(shí)時(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ù)存儲(chǔ) …… 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 自己動(dòng)手寫實(shí)時(shí)流計(jì)算框架 …… 38
3.1.1 用DAG描述流計(jì)算過(guò)程 …… 38
3.1.2 造一個(gè)流計(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 過(guò)濾 …… 70
4.2.2 映射 …… 70
4.2.3 展開(kāi)映射 …… 71
4.2.4 聚合 …… 72
4.2.5 關(guān)聯(lián) …… 73
4.2.6 分組 …… 75
4.2.7 遍歷 …… 75
4.3 時(shí)間維度聚合特征計(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ù)測(cè) …… 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í)時(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 時(shí)間維度聚合特征計(jì)算 …… 98
5.2.2 一度關(guān)聯(lián)特征計(jì)算 …… 99
5.3 采用Apache Ignite實(shí)現(xiàn)流信息狀態(tài)管理 …… 100
5.3.1 時(shí)間維度聚合分析 …… 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 批次請(qǐng)求處理 …… 108
5.4.4 基于Apache Ignite的狀態(tài)集群 …… 109
5.4.5 基于分布式文件系統(tǒng)的狀態(tài)管理集群 …… 109
5.5 本章小結(jié) …… 110
第6章 開(kāi)源流計(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í)時(shí) …… 133
7.1 做不到實(shí)時(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í)時(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ù)存儲(chǔ) …… 167
9.1 存儲(chǔ)的設(shè)計(jì)原則 …… 167
9.2 點(diǎn)查詢 …… 169
9.2.1 數(shù)據(jù)靈活性 …… 170
9.2.2 MongoDB數(shù)據(jù)庫(kù) …… 171
9.2.3 數(shù)據(jù)過(guò)期和按時(shí)間分表 …… 172
9.3 Ad-Hoc查詢 …… 174
9.3.1 倒排索引 …… 175
9.3.2 ElasticSearch …… 176
9.3.3 分索引存儲(chǔ) …… 177
9.4 離線分析 …… 178
9.4.1 存儲(chǔ) …… 179
9.4.2 處理和分析 …… 182
9.4.3 調(diào)度 …… 183
9.5 關(guān)系型數(shù)據(jù)庫(kù)查詢 …… 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 更高級(jí)的配置:領(lǐng)域特定語(yǔ)言 …… 196
10.3 動(dòng)態(tài)配置 …… 196
10.4 將前端配置與后端服務(wù)配置隔離開(kāi) …… 201
10.5 本章小結(jié) …… 202
第11章 實(shí)時(shí)流計(jì)算應(yīng)用案例 …… 204
11.1 實(shí)時(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
展開(kāi)全部
實(shí)時(shí)流計(jì)算系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn) 作者簡(jiǎn)介
周爽,上海行邑信息科技有限公司移動(dòng)反欺詐產(chǎn)品項(xiàng)目負(fù)責(zé)人及技術(shù)負(fù)責(zé)人。曾就職于華為技術(shù)有限公司2012實(shí)驗(yàn)室高斯部門,主要從事華為公有云RDS服務(wù)研發(fā)。精通、Java語(yǔ)言,擅長(zhǎng)實(shí)時(shí)流計(jì)算技術(shù),有5年、Java相關(guān)開(kāi)發(fā)經(jīng)驗(yàn);近期關(guān)注物聯(lián)網(wǎng)和在線教育。參與開(kāi)源搜索緩存方案DSCache,https://github.comlalain898/distributed-search-cache。