摘要: 1.前言 之前几篇文章都是围绕Rocksdb状态后端引申出来的一系列问题,本文主要介绍一下Rocksdb作为状态后端的一些技术细节,以及Flink的状态抽象是如何设计的,为开发一个新的状态后端做指导。 本文基于Flink 1.8.2,目前Flink版本处于一种快速变化的过程,所以可能不适用于高版本, 阅读全文
posted @ 2020-07-07 10:33 dark_saber 阅读(3749) 评论(2) 推荐(1) 编辑
摘要: 1.前言 本节主要是由于Rocksdb的数据结构LSM树,所以介绍一下常见的树结构在不同场景下的应用,更好的理解一下常见的数据库,KV存储系统都是如何设计,以及为什么这样设计的。 2. 二叉树 二叉树:每个节点至多有两个子节点。可以计算高度为N(从0开始计数)的二叉树,最后一层最多有2^N个节点,全 阅读全文
posted @ 2020-07-02 15:03 dark_saber 阅读(489) 评论(0) 推荐(0) 编辑
摘要: 1.前言 本文主要基于实践过程中遇到的一系列问题,来详细说明Flink的状态后端是什么样的执行机制,以理解自定义函数应该怎么写比较合理,避免踩坑。 内容是基于Flink SQL的使用,主要说明自定义聚合函数的一些性能问题,状态后端是rocksdb。 2.Flink State https://ci. 阅读全文
posted @ 2020-06-28 11:09 dark_saber 阅读(1363) 评论(0) 推荐(0) 编辑
摘要: 1.前言 对于做实时计算的朋友来说,资源设置都是一个比较麻烦的问题。实时计算不同于离线计算,它的任务都是并行的,启动就会一直占用集群资源,如果资源设置的过多会造成极大的浪费,设置的过少任务会不断发生failover。这里说的资源主要指的就是内存资源,所以本文对Flink的内存设置提供一些思路,尤其是 阅读全文
posted @ 2020-06-06 16:37 dark_saber 阅读(11034) 评论(0) 推荐(4) 编辑
摘要: 1.前言 本文介绍一下Java并发框架AQS,这是大神Doug Lea在JDK5的时候设计的一个抽象类,主要用于并发方面,功能强大。在新增的并发包中,很多工具类都能看到这个的影子,比如:CountDownLatch、Semaphore、ReentrantLock等,其内部基本都有一个Sync对象是实 阅读全文
posted @ 2018-07-24 21:28 dark_saber 阅读(467) 评论(0) 推荐(0) 编辑
摘要: 1.前言 之前的文章记录了一下Java的内存模型和线程的关系,其实已经由内存模型谈到了线程安全的问题。本文将对线程安全进行具体的描述,对锁的实现进行探究,要明白锁的原理是什么,才能更好的利用锁,排查相关问题。 2.线程安全 《Java Concurrency In Practice》作者Brian 阅读全文
posted @ 2018-07-23 22:22 dark_saber 阅读(329) 评论(1) 推荐(0) 编辑
摘要: 1.前言 本文记录一下Java的线程与内存等知识,更好的理解Java的线程是如何工作的。 让计算机并发执行若干个运算任务和更充分地利用计算机处理器的效能之间看起来是因果关系,但实际上没那么简单。CPU的运算能力十分强大,但是任何任务都不太可能单单靠CPU就能够完成,比如读取内存,存储的数据,网络的请 阅读全文
posted @ 2018-07-22 15:02 dark_saber 阅读(968) 评论(0) 推荐(0) 编辑
摘要: 1.前言 本文记录内容来自《深入理解Java虚拟机》的第十章早期(编译期)优化其中一节内容,其他的内容个人觉得暂时不需要过多关注,比如语法、词法分析,语义分析和字节码生成的过程等。主要关注的就是Java的一些语法糖是如何实现的。 语法糖不会提供实质性的功能改进,但是它们或能提高效率,或能提升语法的严 阅读全文
posted @ 2018-07-21 21:44 dark_saber 阅读(482) 评论(0) 推荐(0) 编辑
摘要: 1.前言 之前对虚拟机的加载机制进行了描述:这里,本章主要对虚拟机的运行机制进行记录说明。 虚拟机区别于物理机就在于运行方面,物理机的执行引擎是直接建立在处理器、硬件、指令集和操作系统层次上的,虚拟机的执行引擎是自己实现的,可以自行定制指令集。所以JVM可以进行跨平台。 2.栈帧的结构 在最早的文章 阅读全文
posted @ 2018-07-20 22:17 dark_saber 阅读(244) 评论(0) 推荐(0) 编辑
摘要: 1.前言 本章记录一下Class文件是怎么被加载到内存中进行执行的。 虚拟机并没有约束一定是本地文件才能进行加载,网络文件也是可以的,也没有约束必须是Java文件,一切遵守虚拟机解析规则的文件都能被加载,Java对应的就是Class字节码文件了。 不同于其他语言,在编译时就需要进行连接,Java语言 阅读全文
posted @ 2018-07-19 21:44 dark_saber 阅读(858) 评论(0) 推荐(0) 编辑