flink 实时计算与RockDB状态存取的猜想

前言

flink sql ETL 逻辑:source 多个表,select 多表 同时 group by 字段

flink sql 多表ETL执行计划

1、source 表数据以表主键分发
2、以from 表为主表, 多表关联时以主表关联字段分发到下游算子
3、存储所有算子的状态(包括join 、group by)

flink sql etl 状态流程[猜想]

1、insert : insert 一条 key - value , 同时group by 对应key的value + 1(假设是 count);
2、delete:join 状态会insert 一条key - null , 同时group by 状态基于此减1 (不是重算)
3、update:join 状态会先insert 一条key - null , 同时group by 状态基于此减1 ; 然后再insert 一条 key - value , 同时group by 会加1 (不是重算);相当于是先delete后再insert

flink 基于RockDB的状态存储

RockDB数据库

  1. 基于LSM树结构,实现快速写,读稍慢【相对写而言】;
  2. 是一种K-V数据库
  3. 插入100W数据,查询第50W条对应的一条数据,查询耗时0ms [毫秒]

LSM 树型结构思想:
1、磁盘顺序写 + 多个树(状数据结构) + 冷热(新老)数据分级 + 定期归并 + 非原地更新。
2、横跨内存和磁盘的,包含多颗"子树"的一个森林
3、内存中的Level 0子树一般采用排序树(红黑树/AVL树)、跳表或者TreeMap等这类有序的数据结构,方便后续顺序写磁盘。
4、磁盘的树:数据按key排序后顺序写到磁盘上的文件

flink 初始化慢的优化思想

离线计算好每个算子的状态,存储在RockDB , flink 启动任务读取RockDB状态进行消费数据【估计要改源码】@一个低调的同事的优化思想

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值