本書是對(duì)Java程序員面試中常見的微服務(wù)、網(wǎng)絡(luò)編程、分布式存儲(chǔ)和分布式計(jì)算等必備知識(shí)點(diǎn)的總結(jié),具體包括:Spring Web編程、Spring Cloud微服務(wù)開發(fā)、Netty網(wǎng)絡(luò)編程、ZooKeeper分布式協(xié)調(diào)器、Kafka分布式消息系統(tǒng)、Hadoop大數(shù)據(jù)存儲(chǔ)和計(jì)算、HBase大數(shù)據(jù)存儲(chǔ)、Cassandra大數(shù)據(jù)存儲(chǔ)、ElasticSearch大數(shù)據(jù)存儲(chǔ)、Spark大數(shù)據(jù)分析和Flink大數(shù)據(jù)分析。本書共11章,第1章講解Spring原理及應(yīng)用,涉及Spring IoC原理、Spring AOP原理、Spring MVC原理、事務(wù)、MyBatis緩存等內(nèi)容;第2章講解Spring Cloud原理及應(yīng)用,涉及Spring Boot、Spring Cloud Config、Eureka、Consul、Hystrix、Zuul和Spring Cloud鏈路監(jiān)控等服務(wù)組件;第3章講解Netty網(wǎng)絡(luò)編程原理及應(yīng)用;第4章講解ZooKeeper原理及應(yīng)用,涉及ZooKeeper選舉機(jī)制、ZooKeeper數(shù)據(jù)模型和ZooKeeper應(yīng)用場(chǎng)景等內(nèi)容;第5章講解Kafka原理及應(yīng)用,涉及Kafka組成、Kafka數(shù)據(jù)存儲(chǔ)設(shè)計(jì)、Kafka生產(chǎn)者并發(fā)設(shè)計(jì)、Kafka消費(fèi)者并發(fā)設(shè)計(jì),以及Kafka安裝和應(yīng)用;第6章講解Hadoop原理及應(yīng)用,涉及HDFS、MapReduce、YARN等內(nèi)容;第7章講解HBase原理及應(yīng)用,涉及HBase列式存儲(chǔ)數(shù)據(jù)模型、HBase架構(gòu)組成和HBase數(shù)據(jù)讀寫流程等內(nèi)容;第8章講解Cassandra原理及應(yīng)用,涉及Cassandra數(shù)據(jù)模型、Gossip協(xié)議、NWR理論、一致性Hash、Cassandra數(shù)據(jù)副本策略和讀寫機(jī)制等內(nèi)容;第9章講解ElasticSearch原理及應(yīng)用,涉及ElasticSearch數(shù)據(jù)模型、ElasticSearch分布式架構(gòu)、Elasticsearch數(shù)據(jù)讀寫原理和段合并等內(nèi)容;第10章講解Spark原理及應(yīng)用,涉及Spark特點(diǎn)、Spark模塊組成、Spark運(yùn)行機(jī)制和Spark RDD、Spark Streaming、Spark SQL、DataFrame、DataSet、Spark Structured Streaming等原理和使用;第11章講解Flink原理及應(yīng)用,涉及Flink核心概念、Flink架構(gòu)介紹、Flink事件驅(qū)動(dòng)模型、Flink數(shù)據(jù)分析應(yīng)用和Flink基于狀態(tài)的內(nèi)存計(jì)算等內(nèi)容。
王磊,現(xiàn)任國內(nèi)某知名互聯(lián)網(wǎng)公司大數(shù)據(jù)技術(shù)架構(gòu)師,有十余年豐富的物聯(lián)網(wǎng)及大數(shù)據(jù)研發(fā)和技術(shù)架構(gòu)經(jīng)驗(yàn),對(duì)物聯(lián)網(wǎng)及大數(shù)據(jù)的原理和技術(shù)實(shí)現(xiàn)有深刻的理解。長期從事海外項(xiàng)目的研發(fā)和交付工作,對(duì)異地多活數(shù)據(jù)中心的建設(shè)及高可用、高并發(fā)系統(tǒng)的設(shè)計(jì)有豐富的實(shí)戰(zhàn)經(jīng)驗(yàn)。
目錄
第1章 Spring原理及應(yīng)用 1
1.1 Spring的特性 1
1.1.1 輕量 2
1.1.2 控制反轉(zhuǎn) 2
1.1.3 面向容器 2
1.1.4 面向切面 2
1.1.5 框架靈活 3
1.2 Spring的模塊 3
1.2.1 核心容器層 3
1.Spring-Beans 4
2.Spring-Core 4
3.Spring-Context 4
4.SpEL 4
1.2.2 數(shù)據(jù)訪問層 4
1.JDBC 5
2.ORM 5
3.OXM 5
4.JMS 5
5.事務(wù)處理 5
1.2.3 Web應(yīng)用層 6
1.Web 6
2.Web-MVC 6
3.Web-Socket 6
4.Web-Portlet 6
1.2.4 其他重要模塊 6
1.AOP 6
2.Aspects 7
3.Instrumentation 7
4.Messaging 7
5.Test 7
1.3 Spring的核心JAR包 7
1.4 Spring的注解 8
1.4.1 Spring注解的使用 9
1.導(dǎo)入命名空間及規(guī)范 9
2.配置掃描包 9
3.使用注解 10
1.4.2 Spring的常用注解 10
1.5 Spring IoC的原理 12
1.5.1 Spring IoC簡(jiǎn)介 12
1.5.2 Spring Bean的裝配流程 12
1.5.3 Spring Bean的作用域 13
1.Singleton 13
2.Prototype 13
3.Request 14
4.Session 14
5.Global Session 14
1.5.4 Spring Bean的生命周期 14
1.5.5 Spring 的4種依賴注入 16
1.構(gòu)造器注入 16
2.set方法注入 16
3.靜態(tài)工廠注入 17
4.實(shí)例工廠注入 18
1.5.6 自動(dòng)裝配的5種方式 18
1.6 Spring AOP的原理 19
1.6.1 Spring AOP簡(jiǎn)介 19
1.6.2 AOP的核心概念 20
1.6.3 AOP的2種代理方式 20
1.6.4 AOP的5種通知類型 21
1.6.5 AOP的代碼實(shí)現(xiàn) 22
1.7 Spring MVC的原理 22
1.8 事務(wù) 23
1.8.1 本地事務(wù) 24
1.8.2 分布式事務(wù) 25
1.8.3 兩階段提交協(xié)議 26
1.準(zhǔn)備階段 26
2.提交階段 26
1.9 MyBatis的緩存 27
1.9.1 MyBatis的一級(jí)緩存原理 28
1.9.2 MyBatis的二級(jí)緩存原理 28
1.10 Spring的生態(tài) 28
1.10.1 Spring Data 29
1.Spring Data的特性 29
2.Spring Data的主項(xiàng)目 29
3.Spring Data的社區(qū)項(xiàng)目 30
1.10.2 Spring的其他服務(wù) 31
第2章 Spring Cloud原理及應(yīng)用 33
2.1 Spring Boot 35
2.1.1 Spring Boot的使用 35
2.1.2 Spring Boot Application Starters 38
2.1.3 Spring Boot的常用組件及其使用 40
1.Spring Boot使用MySQL 40
2.Spring Boot使用Redis 41
3.Spring Boot使用MongoDB 42
4.Spring Boot使用Neo4j 43
5.Spring Boot使用Solr 43
6.Spring Boot使用ElasticSearch 44
7.Spring Boot使用Cassandra 44
8.Spring Boot使用RabbitMQ 45
9.Spring Boot使用Kafka 46
2.2 Spring Cloud Config 47
2.2.1 Spring Cloud Config的原理 48
2.2.2 Config Server的定義和使用 48
2.2.3 Config Client 51
2.3 Spring Cloud Eureka 52
2.3.1 Spring Cloud Eureka的原理 52
1.服務(wù)注冊(cè) 53
2.服務(wù)同步 53
3.服務(wù)續(xù)約 54
4.服務(wù)啟動(dòng) 54
5.服務(wù)下線 54
6.服務(wù)發(fā)現(xiàn) 54
7.失效剔除 54
2.3.2 Spring Cloud Eureka的使用 55
1.注冊(cè)中心的定義 55
2.服務(wù)提供者的定義 57
3.服務(wù)消費(fèi)者的定義 59
2.4 Spring Cloud Consul 62
2.4.1 Spring Cloud Consul的原理 62
1.Consul的特性 62
2.Consul的角色 63
3.Consul的服務(wù)注冊(cè)與發(fā)現(xiàn)流程 64
2.4.2 Spring Cloud Consul的使用 65
1.Consul的服務(wù)啟動(dòng) 65
2.Consul服務(wù)提供者的定義 68
3.Consul服務(wù)消費(fèi)者的定義 70
2.5 Spring Cloud Feign 71
2.5.1 Feign的應(yīng)用 72
2.5.2 Feign的常用注解 74
2.6 Spring Cloud Hystrix 74
2.6.1 Hystrix的特性 75
1.服務(wù)熔斷 75
2.服務(wù)降級(jí) 75
3.依賴隔離 76
4.請(qǐng)求緩存 76
5.請(qǐng)求合并 76
2.6.2 Hystrix的服務(wù)降級(jí)流程 77
2.6.3 Hystrix的使用 78
2.6.4 異步請(qǐng)求 80
1.Future 80
2.Callable 82
2.6.5 Hystrix的常用配置 85
1.熔斷的配置參數(shù) 85
2.執(zhí)行的配置參數(shù) 85
2.6.7 Hystrix Dashboard 87
2.7 Spring Cloud Zuul 87
2.7.1 Zuul的概念和特點(diǎn) 87
2.7.2 Zuul的原理 88
2.7.3 Zuul的使用 89
2.7.4 PreRequestFilter的定義和注入 91
2.7.5 Fallback Provider的服務(wù)容錯(cuò) 92
2.8 Spring Cloud的鏈路監(jiān)控 94
2.8.1 Sleuth+Zipkin 94
1.Sleuth的介紹 94
2.Sleuth+Zipkin實(shí)現(xiàn)分布式鏈路追蹤 95
2.8.2 Pinpoint 101
1.Pinpoint的介紹 101
2.Pinpoint的組件 104
3.Pinpoint的數(shù)據(jù)結(jié)構(gòu) 104
4.Pinpoint的字節(jié)碼增強(qiáng)技術(shù) 104
5.Pinpoint的使用 105
第3章 Netty網(wǎng)絡(luò)編程原理及應(yīng)用 107
3.1 Reactor線程模型 107
3.1.1 Java NIO 107
1.Channel 108
2.Buffer 108
3.Selector 108
3.1.2 Reactor單線程模型 109
3.1.3 Reactor多線程模型 110
3.1.4 Reactor主從多線程模型 110
3.2 Netty的架構(gòu) 111
3.2.1 Netty簡(jiǎn)介 111
3.2.2 Netty的架構(gòu)設(shè)計(jì) 111
1.Transport Services 112
2.Protocol Support 112
3.Core 114
3.2.3 Netty的核心組件 114
3.2.4 Netty的原理 115
1.Netty Server的初始化步驟 115
2.BossGroup的職責(zé) 116
3.WorkerGroup的職責(zé) 117
3.3 Netty的特性 118
3.3.1 I/O多路復(fù)用模型 118
3.3.2 數(shù)據(jù)零拷貝 118
3.3.3 內(nèi)存重用機(jī)制 119
3.3.4 無鎖化設(shè)計(jì) 120
3.3.5 高性能的序列化框架 120
3.4 Netty的使用 121
第4章 ZooKeeper原理及應(yīng)用 128
4.1 ZooKeeper的原理 128
4.1.1 ZooKeeper的角色 128
1.Leader 129
2.Follower 129
3.Observer 129
4.1.2 ZAB協(xié)議 129
1.ZAB協(xié)議的4個(gè)階段 130
2.ZAB協(xié)議的Java實(shí)現(xiàn) 131
4.1.3 ZooKeeper的選舉機(jī)制和流程 131
4.2 ZooKeeper的應(yīng)用 133
4.2.1 ZooKeeper的數(shù)據(jù)模型 133
1.Znode的數(shù)據(jù)模型 133
2.Znode的控制訪問 134
3.Znode的節(jié)點(diǎn)類型 134
4.Znode的節(jié)點(diǎn)Watch 134
4.2.2 ZooKeeper的安裝 134
4.2.3 ZooKeeper的應(yīng)用場(chǎng)景 136
1.統(tǒng)一命名服務(wù) 136
2.配置管理 136
3.集群管理 136
4.分布式通知協(xié)調(diào) 136
5.分布式鎖 137
4.2.4 ZooKeeper節(jié)點(diǎn)的操作 137
第5章 Kafka原理及應(yīng)用 143
5.1 Kafka的原理 143
5.1.1 Kafka的組成 143
5.1.2 Kafka的數(shù)據(jù)存儲(chǔ)設(shè)計(jì) 145
1.Partition數(shù)據(jù)文件 145
2.Segment數(shù)據(jù)文件 146
3.?dāng)?shù)據(jù)文件索引 146
5.1.3 生產(chǎn)者并發(fā)設(shè)計(jì) 147
1.多個(gè)Producer并發(fā)生產(chǎn)消息 147
2.批量發(fā)送消息 148
3.壓縮消息 148
5.1.4 消費(fèi)者并發(fā)設(shè)計(jì) 148
1.多個(gè)Consumer并發(fā)消費(fèi)消息 148
2.Consumer Group的概念和特性 149
5.2 Kafka的應(yīng)用 150
5.2.1 Kafka的安裝 150
5.2.2 基于Spring Boot的Kafka應(yīng)用 152
第6章 Hadoop原理及應(yīng)用 156
6.1 HDFS 156
6.1.1 Client 156
6.1.2 NameNode 157
6.1.3 Secondary NameNode 157
6.1.4 DataNode 157
1.HDFS文件的寫入流程 157
2.HDFS文件的讀取流程 158
3.HDFS數(shù)據(jù)副本 159
6.2 MapReduce 159
6.2.1 Job Client 160
6.2.2 JobTracker 160
6.2.3 TaskTracker 160
6.2.4 Task 161
6.2.5 Reduce Task的執(zhí)行過程 161
6.2.6 Hadoop MapReduce的作業(yè)生命周期 162
6.3 YARN 163
6.3.1 ResourceManager 164
6.3.2 NodeManager 164
6.3.3 ApplicationMaster 165
6.3.4 Container 165
6.3.5 YARN的任務(wù)提交和運(yùn)行流程 165
6.4 Hadoop的安裝和應(yīng)用 167
6.4.1 Hadoop的安裝 167
6.4.2 Hadoop的應(yīng)用 172
1.MapReduce應(yīng)用程序概述 172
2.MapReduce應(yīng)用程序的輸入與輸出模型 173
3.在IDEA下運(yùn)行MapReduce WordCount程序 173
第7章 HBase原理及應(yīng)用 177
7.1 HBase的原理 177
7.1.1 HBase的概念 177
7.1.2 行式存儲(chǔ)和列式存儲(chǔ) 178
1.行式存儲(chǔ)的原理和特點(diǎn) 178
2.列式存儲(chǔ)的原理和特點(diǎn) 179
7.1.3 HBase列式存儲(chǔ)的數(shù)據(jù)模型 180
1.Column Family 180
2.RowKey 180
3.Region 180
4.TimeStamp 181
7.1.4 HBase的架構(gòu)組成 181
1.HBase Client 182
2.ZooKeeper 182
3.HMaster 182
4.Region Server 182
7.1.5 HBase的數(shù)據(jù)讀寫流程 184
1.HBase的數(shù)據(jù)寫入流程 184
2.HBase MemStore的刷盤邏輯 185
3.HBase的數(shù)據(jù)讀取流程 186
4.HBase的數(shù)據(jù)刪除 186
5.HBase的數(shù)據(jù)更新 187
7.2 HBase的使用 187
7.2.1 HBase的安裝 187
7.2.2 基于Spring Boot的HBase應(yīng)用 190
第8章 Cassandra原理及應(yīng)用 197
8.1 Cassandra的原理 197
8.1.1 Cassandra的特點(diǎn) 197
8.1.2 Cassandra的數(shù)據(jù)模型 198
1.Key Space 198
2.Key 199
3.Column 199
4.Super Column 199
5.Column Family 199
6.Standard Column Family 200
7.Super Column Family 200
8.1.3 Gossip協(xié)議 201
1.Gossip節(jié)點(diǎn)的通信方式 201
2.Gossip協(xié)議的收斂性 202
3.Cassandra中的Gossip協(xié)議 202
8.1.4 NWR理論 203
8.1.5 一致性Hash 204
1.一致性Hash的原理 204
2.一致性Hash的節(jié)點(diǎn)變動(dòng) 206
3.虛擬節(jié)點(diǎn) 208
4.Cassandra虛擬節(jié)點(diǎn)設(shè)計(jì) 208
5.一致性Hash的特點(diǎn) 210
8.1.6 Cassandra的數(shù)據(jù)副本策略 210
1.SimpleStrategy 210
2.NetworkTopologyStrategy 211
8.1.7 Cassandra數(shù)據(jù)存儲(chǔ) 211
1.Storage Model 211
2.MemTable的刷盤策略 212
3.SSTable的數(shù)據(jù)結(jié)構(gòu) 212
4.Commit Log 213
5.Compaction 213
8.1.8 Cassandra的數(shù)據(jù)寫入 214
1.Cassandra的數(shù)據(jù)寫入機(jī)制:Log Structured 214
2.Cassandra的數(shù)據(jù)寫入流程 214
8.1.9 Cassandra的數(shù)據(jù)讀取 216
1.?dāng)?shù)據(jù)讀取和后臺(tái)修復(fù) 216
2.?dāng)?shù)據(jù)讀取流程 217
8.1.10 Cassandra的數(shù)據(jù)刪除機(jī)制 220
8.1.11 Cassandra和HBase的核心差別 220
8.2 Cassandra的應(yīng)用 221
8.2.1 Cassandra的安裝 221
8.2.2 基于Spring Boot的Cassandra應(yīng)用 223
第9章 ElasticSearch原理及應(yīng)用 228
9.1 ElasticSearch的概念和原理 228
9.1.1 Lucene的介紹 228
1.Lucene簡(jiǎn)介 228
2.倒排索引 228
3.Lucene的架構(gòu) 229
4.Lucene的全文檢索流程 229
5.Lucene的使用 232
9.1.2 ElasticSearch的特點(diǎn) 236
9.1.3 ElasticSearch的應(yīng)用場(chǎng)景 237
9.1.4 ElasticSearch的數(shù)據(jù)模型 237
1.Index 238
2.Type 238
3.Document 239
4.Field 239
5.Mapping 239
6.Shard 239
9.1.5 ElasticSearch分布式架構(gòu) 240
1.集群節(jié)點(diǎn)角色 240
2.集群選舉原理 242
3.集群狀態(tài) 243
4.?dāng)?shù)據(jù)路由規(guī)則 243
5.文檔分片和副本策略 244
9.1.6 ElasticSearch的寫操作流程 245
1.ElasticSearch的寫操作 245
2.?dāng)?shù)據(jù)寫入一致性:Consistency 246
9.1.7 ElasticSearch的讀操作流程 247
9.1.8 ElasticSearch中的Translog 248
1.ElasticSearch Translog的介紹 248
2.ElasticSearch的數(shù)據(jù)更新和Translog操作流程 248
9.1.9 ElasticSearch段合并 249
1.段合并的介紹 249
2.段合并的流程 250
9.1.10 ElasticSearch的集群擴(kuò)容 251
9.2 ElasticSearch的應(yīng)用 252
9.2.1 ElasticSearch的安裝 252
9.2.2 ElasticSearch的配置和性能調(diào)優(yōu) 254
1.JVM性能調(diào)優(yōu) 254
2.操作系統(tǒng)的性能調(diào)優(yōu) 254
9.2.3 ElasticSearch API的使用 255
第10章 Spark原理及應(yīng)用 263
10.1 Spark的原理 263
10.1.1 Spark的特點(diǎn) 264
1.計(jì)算速度快 264
2.易于使用 264
3.通用大數(shù)據(jù)框架 264
4.支持多種資源管理器 264
5.Spark生態(tài)圈豐富 264
10.1.2 Spark的模塊 265
1.Spark Core 265
2.Spark SQL 266
3.Spark Streaming 266
4.GraphX 267
5.Spark MLlib 267
6.SparkR 267
10.1.3 Spark的運(yùn)行原理 267
1.Spark的運(yùn)行模式 267
2.Spark的集群架構(gòu) 268
3.Spark的運(yùn)行流程 269
10.2 Spark的使用 270
10.2.1 Spark的安裝 270
10.2.2 Spark RDD的使用 274
1.RDD的介紹 274
2.RDD的核心結(jié)構(gòu)及概念 275
3.創(chuàng)建一個(gè)RDD應(yīng)用 277
4.利用外部數(shù)據(jù)集生成RDD 279
5.RDD的轉(zhuǎn)換和操作 280
6.RDD持久化的概念、級(jí)別和原則 281
7.Spark函數(shù)的定義 283
8.鍵值對(duì)RDD的概念和使用 284
9.RDD的常用轉(zhuǎn)換 285
10.RDD的常用操作 285
11.Spark廣播變量的概念和使用 286
10.2.3 Spark Streaming的使用 287
1.Spark Streaming的介紹 287
2.創(chuàng)建一個(gè)Spark Streaming應(yīng)用 288
3.DStream和RDD的關(guān)系 291
4.Spark Streaming的數(shù)據(jù)源 292
5.DStream的操作 293
6.DStream的數(shù)據(jù)持久化 295
7.Spark Streaming的性能優(yōu)化 296
10.2.4 Spark SQL、DataFrame、DataSet的使用 297
1.Spark SQL簡(jiǎn)介 297
2.Spark SQL查詢語句 297
3.DataFrame 297
4.DataSet 297
5.創(chuàng)建一個(gè)Spark SQL應(yīng)用 298
6.Spark SQL的視圖操作 300
7.創(chuàng)建DataSet 301
8.DataSet與RDD相互轉(zhuǎn)換 302
9.DataFrame數(shù)據(jù)的加載 304
10.DataFrame數(shù)據(jù)的保存 305
10.2.5 Spark Structured Streaming的使用 305
1.Spark Structured Streaming簡(jiǎn)介 305
2.Spark Structured Streaming的數(shù)據(jù)模型 306
3.創(chuàng)建一個(gè)Spark Structured Streaming應(yīng)用 307
第11章 Flink原理及應(yīng)用 311
11.1 Flink的原理 311
11.1.1 Flink的特點(diǎn) 312
11.1.2 Flink的核心概念 314
1.Flink Cluster 314
2.Flink Master 314
3.Flink Job Manager 314
4.Flink Task Manager 314
5.Job 314
6.Flink Graph 314
7.Flink Operator和Operator Chain 315
8.Flink Task和SubTask 315
9.Event 315
10.Function 315
11.Flink Record 315
12.Flink State Backend 315
11.1.3 Flink架構(gòu)介紹 316
1.Job Manager的職責(zé) 316
2.Task Manager的職責(zé) 316
3.客戶端 316
4.Flink應(yīng)用程序的運(yùn)行流程 317
5.Flink Task Slot資源分配 318
6.Flink任務(wù)和算子 319
7.Flink狀態(tài)存儲(chǔ) 319
8.Flink運(yùn)行模式 321
11.1.4 Flink的事件驅(qū)動(dòng)模型 321
1.什么是事件驅(qū)動(dòng)模型 321
2.事件驅(qū)動(dòng)模型的特點(diǎn) 322
3.Flink的事件驅(qū)動(dòng)模型的特點(diǎn) 322
11.1.5 Flink的數(shù)據(jù)分析應(yīng)用 322
1.批量數(shù)據(jù)分析 323
2.流式數(shù)據(jù)分析 323
3.Flink中的流式數(shù)據(jù)分析 324
11.1.6 Flink的數(shù)據(jù)清洗和數(shù)據(jù)管道 324
1.?dāng)?shù)據(jù)清洗:定時(shí)處理 324
2.?dāng)?shù)據(jù)管道:實(shí)時(shí)處理 325
3.?dāng)?shù)據(jù)管道優(yōu)勢(shì):實(shí)時(shí)性高 325
4.Flink數(shù)據(jù)管道 325
11.1.7 Flink數(shù)據(jù)流處理基本概念 326
1.?dāng)?shù)據(jù)流 326
2.狀態(tài) 326
3.時(shí)間 327
11.1.8 API分類 328
1.Process Function 329
2.DataStream API 330
3.SQL和Table API 331
11.1.9 Flink基于狀態(tài)的內(nèi)存計(jì)算 331
11.1.10 Flink的編程模型 332
1.?dāng)?shù)據(jù)流 332
2.并行度 333
11.1.11 Flink窗口計(jì)算 334
1.翻滾窗口 334
2.滑動(dòng)窗口 335
3.會(huì)話窗口 335
4.全局窗口 336
11.1.12 Flink故障恢復(fù) 337
1.重啟策略 337
2.故障恢復(fù)策略 339
11.2 Flink的應(yīng)用 339
11.2.1 Flink的安裝 339
1.Flink的獨(dú)立集群模式安裝 340
2.Flink的高可用模式安裝 343
11.2.2 Flink實(shí)戰(zhàn)案例 345
1.構(gòu)建一個(gè)基于Java的Flink應(yīng)用 345
2.Flink DataStream API 350
3.Flink DataSet API 367
4.Flink Table API和SQL 370