# Flink设计与实现-核心原理与源码解析 **Repository Path**: dhd_index/flink-source-code-book ## Basic Information - **Project Name**: Flink设计与实现-核心原理与源码解析 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 10 - **Created**: 2023-08-31 - **Last Updated**: 2023-08-31 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 目录 ## 第1章 设计理念与基本架构 ### 1.1 基本设计思想 #### 1.1.1 Stratosphere系统架构 #### 1.1.2 DataFlow模型的设计思想 #### 1.1.3 分布式一致快照算法 ### 1.2 Flink整体架构 #### 1.2.1 架构介绍 #### 1.2.2 Flink集群架构 #### 1.2.3 核心概念介绍 ### 1.3 Flink源码分析与编译 #### 1.3.1 源码编译 23 #### 1.3.2 源码调试环境搭建 ## 第2章 DataStream设计与实现 ### 2.1 DataStream API的主要组成 #### 2.1.1 DataStream API应用实例 #### 2.1.2 Transformation详解 ### 2.2 StreamOperator的定义与实现 #### 2.2.1 StreamOperator接口实现 #### 2.2.2 OneInputStreamOperator与TwoInputStreamOperator #### 2.2.3 StreamOperatorFactory详解 ### 2.3 Function定义与实现 #### 2.3.1 RichFunction详解 #### 2.3.2 SourceFunction与SinkFunction #### 2.3.3 ProcessFunction的定义与实现 ### 2.4 TimerService的设计与实现 #### 2.4.1 时间概念与Watermark #### 2.4.2 TimerService时间服务 #### 2.5 DataStream核心转换 #### 2.5.1 KeyedStream与物理分区 #### 2.5.2 WindowedStream设计与实现 ## 第3章 Runtime核心原理与实现 93 ### 3.1 Runtime整体架构 93 #### 3.1.1 Runtime整体概览 #### 3.1.2 集群启动与初始化 #### 3.2 Runtime组件创建和启动 #### 3.2.1 集群组件创建和启动 #### 3.2.2 WebMonitorEndpoint的创建与初始化 #### 3.2.3 Dispatcher创建与初始化 #### 3.2.4 ResourceManager创建与始化 #### 3.2.5 TaskManager创建与启动 ### 3.3 集群资源管理 #### 3.3.1 ResourceManager详解 #### 3.3.2 ResourceManagerGateway接口实现 #### 3.3.3 Slot计算资源管理 ### 3.4 系统高可用与容错 #### 3.4.1 HighAvailabilityServices的设计与实现 175 #### 3.4.2 基于Zookeeper实现高可用 181 #### 3.4.3 JobGraphStore的设计与实现 190 ## 第4章 任务提交与执行 193 ### 4.1 客户端作业提交 193 #### 4.1.1 命令行提交 193 #### 4.1.2 创建和初始化CLIFrontend 195 #### 4.1.3 PackagedProgram构造 198 ### 4.2 ExecutionEnvironment初始化 202 #### 4.2.1 ExecutionEnvironment类型 202 #### 4.2.2 StreamExecutionEnvironment详解 204 ### 4.3 Pipeline转换成JobGraph 214 #### 4.3.1 Transformations生成Pipeline 215 #### 4.3.2 StreamGraph转换为JobGraph 224 #### 4.3.2 提交JobGraph到集群运行时 233 ### 4.4 JobGraph接收与运行 237 #### 4.4.1 JobGraph提交整体流程 237 #### 4.4.2 Dispatcher任务与分发 239 #### 4.4.3 JobManager启动与初始化 244 #### 4.4.4 JobMaster详解 251 ### 4.5 ExcutionGraph调度与执行 260 #### 4.5.1 ExcutionGraph生成 262 #### 4.5.2 SchedulerNG调度器 265 ### 4.6 Task执行与注销 274 #### 4.6.1 Task启动与注销 276 #### 4.6.2 AbstractInvokable加载与初始化 280 #### 4.6.3 StreamTask详解 282 #### 4.6.4 StreamTask线程模型 287 #### 4.6.5 Task重启与容错策略 298 ## 第5章 集群部署模式 313 ### 5.1 基本概念 313 #### 5.1.1 ClusterClient的创建与获取 313 #### 5.1.2 ClusterEntrypoint集群启动类 319 ### 5.2 Flink On Yarn的设计与实现 324 #### 5.2.1 Yarn架构设计与实现 324 #### 5.2.2 Session集群部署与启动 327 #### 5.2.3 YarnResourceManager详解 335 ### 5.3 Flink On Kubernetes的设计与实现 343 #### 5.3.1 Flink On Kubernetes架构 344 #### 5.3.2 Session集群部署与启动 347 #### 5.3.3 KubernetesResourceManager详解 357 ## 第6章 状态管理与容错 366 ### 6.1 状态数据管理 367 #### 6.1.1 状态数据类型 367 #### 6.1.2 状态初始化流程 371 ### 6.2 KeyedState的创建与管理 381 #### 6.2.1 KeyedStateBackend的整体设计 381 #### 6.2.2 HeapKeyedStateBackend的实现 382 ### 6.3 OperatorState的创建与管理 394 #### 6.3.1 OperatorStateBackend整体设计 395 #### 6.3.2 基于DefaultOperatorStateBackend创建OperatorState 396 ### 6.4 StateBackend详解 400 #### 6.4.1 StateBackend的整体设计 401 #### 6.4.2 MemoryStateBackend实现 407 ### 6.5 Checkpoints的设计与实现 413 #### 6.5.1 Checkpoint的实现原理 414 #### 6.5.2 Checkpoint触发过程 424 ## 第7章 ⽹络通信 464 ### 7.1 集群RPC通信机制 464 #### 7.1.1 Flink RPC框架整体设计 464 #### 7.1.2 AkkaRpcService详解 470 #### 7.1.3 RpcServer动态代理实现 481 #### 7.1.4 AkkaRpcActor设计与实现 487 #### 7.1.5 集群组件之间RPC通信 491 ### 7.2 NetworkStatck设计与实现 503 #### 7.2.1 NetworkStatck整体概览 503 #### 7.2.2 StreamTask数据流 506 #### 7.2.3 RecordWriter详解 521 #### 7.2.4 ShuffleMaster与ShuffleEnvironment 535 #### 7.2.5 ResultPartition与InputGate详解 558 #### 7.2.6 ConnectManager的设计与实现 578 #### 7.2.7 NetworkBuffer资源管理 615 ### 7.3 基于Credit的反压机制实现 635 #### 7.3.1 反压机制理论基础 635 #### 7.3.2 基于Credit的反压机制详解 638 ## 第8章 内存管理 654 ### 8.1 内存管理概述 654 #### 8.1.1 积极的内存管理 654 #### 8.1.2 Flink内存模型 656 ### 8.2 MemorySegment设计与实现 658 #### 8.2.1 MemorySegment架构概览 658 #### 8.2.2 MemorySegment详解 660 #### 8.2.3 MemorySegment内存使用 666 ### 8.3 DataInputView与DataOutputView 670 #### 8.3.1 DataInputDeserializer和DataOutputSerializer 672 #### 8.3.2 DataInputViewStreamWrapper与DataOutputViewStreamWrapper 677 #### 8.3.3 AbstractPagedInputView与AbstractPagedOutputView 679 ### 8.4 数据序列化与反序列化 684 #### 8.4.1 TypeInformation类型系统 684 #### 8.4.2 RecordSerializer与RecordDeserializer 695 ### 欢迎支持个人作品,包含以上全部章节内容: IMG_4684 #### 京东商城: https://item.jd.com/12913445.html #### 当当: http://product.dangdang.com/29285280.html