- 博客(16)
- 收藏
- 关注
原创 14.ResourceMangaer启动解析
是 Flink 集群中的核心组件之一,负责资源的申请、分配与回收。RpcSystem我们就已经具备了阅读启动流程源码的基础。
2025-07-13 10:51:48
463
原创 flink解析番外:java的并发
flink 阅读过程中,发现还是需要一部分java的并发相关知识还能更好的理解。因此,整理了一下java并发相关的blog。
2025-07-12 23:25:39
792
原创 12.PekkoAkka解析
可以看到内部涉及了很多的类,而这3个是比较典型的类。用来管理内部。最后,在针对查看一下他的初始化方法,startSupervisorActor//获取对应的 actorSystem} else {} else {port = -1;//启动对应的 startSupervisorActor//SupervisorActor.startSupervisorActor 方法//这里没有用工厂方法,应该是可以改进的地方。但是只用这一次,也没啥必要。
2025-07-07 22:54:33
882
原创 11.PekkoAkka解析
本章节共分析了 6 个与PekkoAkka相关的核心类,均为 Flink 在构建基于 Actor 模型的远程通信体系中使用的重要工具类。PekkoUtils调用了作为引导类,用于创建实例。Flink 中的JobManager和均基于构建,该类增强了未捕获异常的处理机制,确保系统在出现严重错误时能及时终止,避免数据一致性问题。是 Flink RPC 通信体系中的核心工厂类,负责生成,并实现了包括 RPC URL 构造、地址端口解析、消息大小限制等依赖底层通信协议的细节方法。则是具体用于构建。
2025-07-05 15:33:49
912
原创 10.jobManager初始化流程
提供一些网络地址处理、消息大小限制等工具方法: 构造 rpc 地址字符串: 从 URL 解析 socket 地址: 获取最大消息大小:用于生命周期管理,定义了close()方法内部接口一些用于构建线程池的配置类(与load(...): 返回用于构建远程 RPC 服务的 builderload(...): 加载配置中指定的 RpcSystem(通常通过 SPI 实现)Flink 在和层做了通信抽象,实现了组件之间的消息解耦与方法绑定。
2025-06-22 16:07:32
923
原创 9.jobManager基础知识
Akka 框架通过初始化一个运行时环境,作为所有 actor 的容器和调度中心。在该环境中通过props创建各类 actor,并通过ActorRef(精确引用)或(路径匹配引用)与本地或远程的其他中的 actor 进行异步通信和交互。关键词含义Akka 的运行时容器,负责管理 actor 的生命周期和通信调度Actor独立的并发单元,封装状态和行为,通过消息驱动运行ActorRef指向具体 actor 的引用,用于精确发送消息通过路径匹配方式选中 actor,可延迟绑定远程通信。
2025-06-21 22:59:30
477
原创 7. flink作业提交的困惑
终于讲到第二章的内容。第3章~第6章都是关于的算子的实现和使用源码。而从本章开始,会真正开始分析一下的runtime的源码。通过连接的项目,并启动和。如果有问题。按3进行操作。在使用 VSCode 连接 WSL 时,进入用户的家目录,路径通常是 。接着执行如下命令:然后重新连接并让系统重新下载配置。连接成功后,再删除 目录即可。至于为什么不直接 ,这是一个良好的操作习惯。在生产环境中,绝不能轻易执行 删除操作,因为一旦误删,后果难以挽回。很多正式环境都会限制或禁用 ,改为通过“移动到指定清理目录 +
2025-06-08 02:49:10
937
原创 6.`Watermark`,分流和`Join`
的函数还有 和。相比之下,基于 窗口()的 或聚合等操作,由于窗口会自动管理状态的生命周期(比如过期数据的清理),因此实现相对简单,用户也无需手动管理数据保留或清理逻辑。有兴趣自己可以看下使用方法。内部通常会指定一个的策略。然后在某个进行分配。先看下 的组成以 为例,看下模块是如何实现的可以看到 继承自 。而的图如下:代码如下:该函数接口声明了两个方法。一个是来一条数据发一条。而则是周期发送。而实现非常简单。则是 内部维护了一个,定期发送最大的。从而确保数据局部无序。再细看一下方法。
2025-06-08 01:01:21
964
原创 5.聚合算子keyBy、sum和connect
算子首先看示例:根据传入的数据进行分组。这里是根据性别点进去 方法,可以看到它需要一个 对象。 是一个函数式接口,继承了 Flink 的 接口,并定义了一个 方法用于提取 key。调用 返回一个 ,它不会立即将新的 添加到 的 列表中,而是返回一个流对象,并将内部生成的 保存在 的 字段中。算子接下来看 方法。该方法本质上先构造一个 对象。该对象继承自 接口。以下是接口截图: 1. 这个方法还会构造一个 对象。该对象用来提供 方法,获取对应需要的对象。可
2025-06-07 23:31:23
617
原创 4.基础转换算子Map-Function和StreamOperator源码
的转换操作还是十分清晰的。分别继承了哪些类,这些类各自的作用。是 Flink 中流算子的核心抽象类,封装了大量通用的生命周期逻辑、状态管理、时间语义等操作。是 Flink 中所有算子的基类接口,定义了算子的生命周期方法(如初始化。类用于改进某些算子的生命周期控制与状态处理逻辑,但原有的。是 Flink 中最基础的函数接口,许多功能性接口(如。等)都继承自它,用于定义用户对流中数据的各种处理逻辑。从 Flink 1.15 开始,虽然引入了新的。,分别用于处理单输入流和双输入流的场景。子系统时再详细解析。
2025-06-02 21:20:14
897
原创 3. Flink源码解析—源算子源码
产生对应的分区切片和读取。从而简化数据分片,锁竞争和算子并行度的开发。接口 先不做过多的源码解析,等后续研究收集数据、生产水位线和。以 Socket 源算子为例。可以看到 同级别还有非常多的其余算子。在这个基础上,扩展了哪些功能。这个方法内部调用了 两个方法。类的构建方法中,新增了 构建方法。接口是Flink所有算子的。方法,用来生产数据。里面定义了各种算子操作。接口包含了3个实例。类定义了算子实际的操作。该方法返回了一个 真正的。方法构建Socket流。用作后续的转换操作。
2025-06-02 19:09:10
563
原创 1.Flink源码解析—搭建WSL2开发环境
WSL 2 是适用于 Linux 的 Windows 子系统体系结构的一个新版本,它支持适用于 Linux 的 Windows 子系统在 Windows 上运行 ELF64 Linux 二进制文件。它的主要目标是提高文件系统性能,以及添加完全的系统调用兼容性。Flink推荐WSL作为源码编译环境。
2025-06-02 19:05:20
1116
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人