●前言
章 實時流計算
1.1 大數據時代的新挑戰:實時流計算
1.2 實時流計算使用場景
1.3 實時流數據的特點
1.4 實時流計算繫統架構
1.4.1 數據采集
1.4.2 數據傳輸
1.4.3 數據處理
1.4.4 數據存儲
1.4.5 數據展示
1.5 本章小結
第2章 數據采集
2.1 設計數據采集的接口
2.2 使用Sprin Boot實現數據采集服務器
2.3 BIO與NIO
2.3.1 BIO連接器
2.3.2 NIO連接器
2.4 NIO和異步
2.4.1 CPU密集型任務
2.4.2 I/O密集型任務
2.4.3 I/O和CPU都密集型任務
2.4.4 纖程
2.4.5 Actor
2.4.6 NIO配合異步編程
2.5 使用Netty實現數據采集服務器
2.5.1 使用Netty實現數據采集API
2.5.2 異步編程
2.5.3 流量控制和反向壓力
2.5.4 實現反向壓力
2.5.5 異步的不足之處
2.6 本章小結
第3章 實現單節點流計算應用
3.1 自己動手寫實時流計算框架
3.1.1 用DAG描述流計算過程
3.1.2 造一個流計算框架的輪子
3.1.3 實現特征提取DAG節點
3.1.4 實現特征提取DAG拓撲
3.2 CompletableFuture方法與原理
3.2.1 常用的CompletableFuture類方法
3.2.2 CompletableFuture的工作原理
3.3 采用CompletableFuture實現單節點流處理
3.3.1 基於CompletableFuture實現流計算應用
3.3.2 反向壓力
3.3.3 死鎖
3.3.4 再論流與異步的關繫
3.4 流計算應用的性能調優
3.4.1 優化機制
3.4.2 優化工具
3.4.3 線程狀態
3.4.4 優化方向
3.5 本章小結
第4章 數據處理
4.1 流計算到底在計算什麼
4.2 流數據操作
4.2.1 過濾
4.2.2 映射
4.2.3 展開映射
4.2.4 聚合
4.2.5 關聯
4.2.6 分組
4.2.7 遍歷
4.3 時間維度聚合特征計算
4.4 關聯圖譜特征計算
4.4.1 一度關聯
4.4.2 二度關聯
4.5 事件序列分析
4.5.1 CEP編程模式
4.5.2 Flink CEP實例
4.6 模型學習和預測
4.6.1 統計學習模型
4.6.2 P-value檢驗
4.6.3 機器學習模型
4.7 本章小結
第5章 實時流計算的狀態管理
5.1 流的狀態
5.1.1 流數據狀態
5.1.2 流信息狀態
5.2 采用Redis實現流信息狀態管理
5.2.1 時間維度聚合特征計算
5.2.2 一度關聯特征計算
5.3 采用Apache Ignite實現流信息狀態管理
5.3.1 時間維度聚合分析
5.3.2 一度關聯特征計算
5.4 擴展為集群
5.4.1 基於Redis的狀態集群
5.4.2 局部性原理
5.4.3 批次請求處理
5.4.4 基於Apache Ignite的狀態集群
5.4.5 基於分布式文件繫統的狀態管理集群
5.5 本章小結
第6章 開源流計算框架
6.1 Apache Storm
6.1.1 繫統架構
6.1.2 流的描述
6.1.3 流的執行
6.1.4 流的狀態
6.1.5 消息傳達可靠性保證
6.2 Spark Streaming
6.2.1 繫統架構
6.2.2 流的描述
6.2.3 流的執行
6.2.4 流的狀態
6.2.5 消息傳達可靠性保證
6.3 Apache Samza
6.3.1 繫統架構
6.3.2 流的描述
6.3.3 流的執行
6.3.4 流的狀態
6.3.5 消息傳達可靠性保證
6.4 Apache Flink
6.4.1 繫統架構
6.4.2 流的描述
6.4.3 流的執行
6.4.4 流的狀態
6.4.5 消息傳達可靠性
6.5 本章小結
第7章 當做不到實時
7.1 做不到實時的原因
7.2 Lambda架構
7.2.1 數據繫統和Lambda架構思想
7.2.2 Lambda架構
7.2.3 Lambda架構在實時流計算中的運用
7.3 Kappa架構與架構實例
7.3.1 Kappa架構
7.3.2 Kappa架構實例
7.4 本章小結
第8章 數據傳輸
8.1 消息中間件
8.1.1 為什麼使用消息中間件
8.1.2 消息中間件的工作模式
8.1.3 消息模式
8.1.4 使用消息中間件的注意事項
8.2 Apache Kafka
8.2.1 Kafka架構
8.2.2 Kafka生產者
8.2.3 Kafka消費者
8.2.4 將Kafka用於數據總線
8.3 RabbitMQ
8.3.1 RabbitMQ架構
8.3.2 RabbitMQ的使用
8.3.3 將RabbitMQ用於配置總線
8.4 Apache Camel
8.4.1 使用Apache Camel集成繫統
8.4.2 使用Apache camel管理流數據路由
8.5 本章小結
第9章 數據存儲
9.1 存儲的設計原則
9.2 點查詢
9.2.1 數據靈活性
9.2.2 MongoDB數據庫
9.2.3 數據過期和按時間分表
9.3 Ad-Hoc查詢
9.3.1 倒排索引
9.3.2 ElasticSearch
9.3.3 分索引存儲
9.4 離線分析
9.4.1 存儲
9.4.2 處理和分析
9.4.3 調度
9.5 關繫型數據庫查詢
9.6 本章小結
0章 服務治理和配置管理
10.1 服務治理
10.1.1 流服務和微服務
10.1.2 微服務框架Spring Cloud
10.2 面向配置編程
10.2.1 面向配置編程思想
10.2.2 更不錯的配置:領域特定語言
10.3 動態配置
10.4 將前端配置與後端服務配置隔離開
10.5 本章小結
1章 實時流計算應用案例
11.1 實時流數據特征提取引擎
11.1.1 流數據特征提取引擎DSL定義
11.1.2 實現原理
11.1.3 具體實現
11.2 使用Flink實現風控引擎
11.2.1 實現原理
11.2.2 具體實現
11.3 本章小結
內容簡介
全書分為11章。章介紹了實時流計算技術的產生背景、使用場景和通用架構。第2章通過實時流計算數據的采集,詳細分析了Java高性能編程的理論基礎。第3-6章通過從頭構造一個分布式實時流計算框架,詳細剖析了實時流計算中的幾個核心概念和技術重點,並通過多個開源流計算平臺的實現來驗證這些核心概念和技術重點。第7章談論了當實在做不到“實時”時,我們應該作出的備選方案。第8-10章闡述了構建一個完整實時流計算繫統時,必要的周邊輔助繫統。1章給出實時流計算應用案例。