第一层1个 flink sql 任务是将所有跟订单id有关的业务表 进行 10s的窗口去重获取到订单id; 第二层7个 flink sql任务,根据订单id分别查询对应的表,获取到宽表所需要的对应字段,分别发往下游的kafka中,第三层1个 flink sql任务,都是消费上面的kafka, 分别对7种主题的订单数据进行row_number()获取对应的 最新的订单主题数据,然后group by打宽到订单维度的 大宽表,将宽表落到clickhosue 并发送到kafka ;第四层 3个flink sql任务,对上游大宽表对应的 kafka消息 的 订单数据进行row_number()获取对应的 最新的订单宽表数据,按照天,周,月进行聚合,聚合表落到clickhouse表; Flink这种场景中的,第四步将 状态存储从内存换成rockdbs之后,还能扛得住吗?
在使用Flink SQL进行数据处理的场景中,如果状态数据量比较大,使用RocksDB作为状态存储后端通常是一个可行的选择。根据您描述的四层Flink作业流程,其中第四步考虑将状态存储从内存切换到RocksDB,这种改变是有可能支撑起您的数据处理需求的。
以下是一些关于使用RocksDB作为状态存储的分析:
总体而言,考虑到您提到的订单数据处理场景,特别是需要处理上百GB级别的大状态,使用RocksDB作为状态后端是比较合理的选择。它不仅能够提供足够的存储空间来保存大量状态,还能通过优化获得良好的性能表现。当然,为了达到最佳效果,您可能需要根据实际情况对RocksDB进行细致的性能调优。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。