ConcurrentSkipListMap 是JDK1.6提供的又一个线程安全有序的 map 集合,在高并发场景下有着不错的存取效率。使用起来和 TreeMap...
Java 7 中 ConcurrentHashMap 由很多个 Segment 组合,而每一个 Segment 是一个类似于 HashMap 的结构,所以每一个...
HashMap 主要用来存放键值对,它基于哈希表的 Map 接口实现,是常用的 Java 集合之一,是非线程安全的。
ArrayList 的底层是数组队列,相当于一个动态数组。与 Java 中的数组相比,它的容量能动态增粘,并且支持随即插入。在添加大量元素前,可以使用 ensu...
在介绍 Kafka Connector 之前,我们先来看一下在 Flink 中是如何支持自定义 Source 和 Sink 的。我们来看一张 Flink 官方文...
在以前的线程模型中,Flink 通过 checkpointLock 来隔离保证不同线程在修改内部状态时的正确性。通过 checkpointLock 控制并发会在...
JobManager 在 Flink 集群中发挥着重要的作用,包括任务调度和资源管理等工作。如果 JobManager 宕机,那么整个集群的任务都将失败。为了解...
前文中我们了解了 Flink 的数据交互过程,上游的 Task 将数据写入到 ResultSubpartition 的 buffers 队列中。下游的 Task...
经过前面的学习,Flink 的几个核心概念相关的源码实现我们已经了解了。本文我们来梳理 Task 的数据交互相关的源码。
通过Flink学习笔记:多流 Join一文的介绍,我们知道 Flink 有三种数据关联的方式,分别是 Window Join、Interval Join 和 C...
前文我们梳理了 Watermark 相关的源码,Watermark 的作用就是用来触发窗口,本文我们就一起看一下窗口相关的源码。
前面我们已经梳理了 Flink 状态和 Checkpoint 相关的源码。从本文开始,我们再来关注另外几个核心概念,即时间、Watermark 和窗口。
现代软件开发早已离不开开源软件。从庞大的Linux操作系统、Chromium浏览器,到小巧实用的日志工具,开源组件已成为软件开发的基石。对于 Linux 、An...
前文中,我们已经了解了 Flink 的三种执行图是怎么生成的。今天继续看一下 Flink 集群是如何启动的。
今天我们一起来了解 Flink 最后一种执行图,ExecutionGraph 的执行过程。
前文我们介绍了 Flink 的四种执行图,并且通过源码了解了 Flink 的 StreamGraph 是怎么生成的,本文我们就一起来看下 Flink 的另一种执...