关于Flink的旁路缓存与异步操作
1. 旁路缓存
1. 什么是旁路缓存?
将数据库中的数据,比较经常访问的数据,保存起来,以减少和硬盘数据库的交互
比如: 我们使用mysql时 经常查询一个表 , 而这个表又一般不会变化,就可以放在内存中,查找时直接对内存进行查找,而不需要再和mysql交互
2. 旁路缓存例子使用
dim层使用的是hbase存储,因为dim层可能会出现大表,出现数据量过大,所以存储到磁盘合适,使用hbase
而dwd的连接, dwd是从kafka读取ods的数据,并且存入kafka.
因为dwd表是由ods表与dim表关联,所以需要经常和dim互动,互动的话,需要经常传输数据,而从磁盘到内存,显然比不过直接从内存中读取来的快,所以这里使用redis进行操作.
旁路缓存的步骤:
- 从缓存中查找数据 ,查找到 ,缓存命中, 结束, 查找不到,继续2
- 从dim(或者说磁盘数据库)中查找数据,
但是要注意,如果磁盘数据库中的数据发生变化,就需要将缓存的数据直接清除掉,

同时,也要给缓存设置保存时间,不然保存过多就没有意义了
2.异步操作(异步IO)
https://nightlies.apache.org/flink/flink-docs-release-1.18/zh/docs/dev/datastream/operators/asyncio/
1. 同步与异步
同步就是,第二个任务必须等待第一个任务做完,也就是说,流水线
异步 两个任务同时做,不互相牵扯
例子: 饭店点餐:
同步: 只有一个服务员,点餐由服务员来登记,每个餐桌必须按顺序等服务员来记录
异步: 扫码点餐,互相不影响.
2.异步的实现
Flink官方为我们提供了JAVA方法RichAsyncFunction,主要方法是invoke,

这里学习了一个博主的思路
https://blog.csdn.net/w306026355/article/details/109707269
1.CompletableFuture
1. 创建异步编排对象
- 有返回值
public static <U> CompletableFuture<U> supplyAsync(Supplier<U> supplier);
public static <U> CompletableFuture<U> supplyAsync(Supplier<U> supplier, Executor executor);
2.无返回值
public static CompletableFuture<Void> runAsync(Runnable runnable);
public static CompletableFuture<Void> runAsync(Runnable runnable, Executor executor);
2.后续的串行方法
then 表示是异步的串行方法,
run 表示 无参
accept 有参
apply 有参 有返回值
而async表示这个方法执行的任务最终还是异步
// 使线程串行执行,无入参,无返回值
public CompletableFuture<Void> thenRun(Runnable action);
public CompletableFuture<Void> thenRunAsync(Runnable action);
public CompletableFuture<Void> thenRunAsync(Runnable action, Executor executor);// 使线程串行执行,有入参,无返回值
public CompletableFuture<Void> thenAccept(Consumer<? super T> action);
public CompletableFuture<Void> thenAcceptAsync(Consumer<? super T> action);
public CompletableFuture<Void> thenAcceptAsync(Consumer<? super T> action, Executor executor);// 使线程串行执行,有入参,有返回值
public <U> CompletableFuture<U> thenApply(Function<? super T,? extends U> fn);
public <U> CompletableFuture<U> thenApplyAsync(Function<? super T,? extends U> fn);
public <U> CompletableFuture<U> thenApplyAsync(Function<? super T,? extends U> fn, Executor executor);
相关文章:
关于Flink的旁路缓存与异步操作
1. 旁路缓存 1. 什么是旁路缓存? 将数据库中的数据,比较经常访问的数据,保存起来,以减少和硬盘数据库的交互 比如: 我们使用mysql时 经常查询一个表 , 而这个表又一般不会变化,就可以放在内存中,查找时直接对内存进行查找,而不需要再和mysql交互 2. 旁路缓存例子使用 dim层…...
MyBatis-Plus的分页插件和乐观锁插件
MyBatis-Plus: 探索分页查询和乐观锁插件 在现代的Web应用开发中,高效的数据处理是不可或缺的一部分。MyBatis-Plus,作为MyBatis的增强版,提供了多种插件来简化和优化数据库操作。在这篇博客中,我们将重点介绍两个非常实用的插件…...
批量将本地N个英文Html文档进行中文翻译-操作篇
Unity3D特效百例案例项目实战源码Android-Unity实战问题汇总游戏脚本-辅助自动化Android控件全解手册再战Android系列Scratch编程案例软考全系列Unity3D学习专栏蓝桥系列ChatGPT和AIGC 👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分…...
解决cad找不到vcruntime140.dll的方法,实测有效的5个的方法
最近,我在使用CAD软件时遇到了一个困扰我已久的问题:由于找不到vcruntime140.dll文件而导致CAD无法正常运行。经过一番努力和尝试,我终于找到了解决这个问题的方法。那么,如何解决vcruntime140.dll丢失的问题呢?本文将…...
2023亚太杯数学建模C题:我国新能源电动汽车的发展趋势,思路模型代码
问题C 我国新能源电动汽车的发展趋势 赛题思路:获取思路见文末名片,第一时间更新 新能源汽车是指以先进技术原理、新技术、新结构的非常规汽车燃料为动力来源( 非常规汽车燃料指汽油、柴油以外的燃料),将先进技术进行汽车动力控制…...
英语学习-爆破音
英文爆破音有:[p],[b],[t],[d],[k],[g]。 同时爆破音的发音会根据前后音的不同,发音不同,具体如下: ⒈ [p],[b],[t],[d],[k],[g] 中的任何两个音素相邻时,前面的发不完全爆破音,后面的就要完全地爆破。如…...
【Vue】图片切换
上一篇: vue的指令 https://blog.csdn.net/m0_67930426/article/details/134599378?spm1001.2014.3001.5502 本篇所需要的指令有: v-on v-bind v-show <!DOCTYPE html> <html lang"en"> <head><meta charset"…...
C++模拟如何实现vector的方法
任意位置插入,insert的返回值为新插入的第一个元素位置的迭代器;因为插入可能会进行扩容,导致start的值改变,所以先定义一个变量保存pos与start的相对位置;判断是否需要扩容;从插入位置开始,将所…...
芯知识 | 混音播报语音芯片的优势:革新音频应用的新力量
随着科技的进步,语音芯片在各个领域的应用越来越广泛。而在众多语音芯片中,混音播报语音芯片以其独特的优势,正逐渐成为音频应用领域的翘楚。本文将重点探讨混音播报语音芯片的优势及其在现代科技应用中的价值。 一、混音播报语音芯片概述 …...
Arduino驱动PT100数字K型高温传感器(温湿度传感器)
目录 1、传感器特性 2、控制器和传感器连线图 3、硬件原理图 4、驱动程序 PT100适用于大部分400℃以下高温的测量,但是通常家用天然气灶焰芯温度可达800℃以上,烧制陶瓷的窖子或者大功率电炉温度更可超过1000℃,在这些超高温度的场景下就需要用到K型热电偶。...
【C/PTA —— 11.函数2(课外实践)】
C/PTA —— 11.函数2(课外实践) 一.函数题6-1 计算A[n]1/(1 A[n-1])6-2 递归实现顺序输出整数6-3 自然数的位数(递归版)6-4 分治法求解金块问题6-5 汉诺塔6-6 重复显示字符(递归版)6-7 显示平行四边形(右)(递归版) 二.编程题7-2 N阶楼梯上楼问题 一.函数…...
2023 Unite 大会关于“Muse“ AI 大模型训练
Unity Muse 借助强大的 AI 能力帮助你探索、构思和迭代,其中包括纹理和精灵两项功能,可将自然语言和视觉输入转化为可用资产。 将 AI 引入 Unity Editor 中的 Muse 提供了更快将想法转化为实物的选项。您可以调整并使用文本提示、图案、颜色和草图&…...
Day28|Leetcode 93. 复原 IP 地址 Leetcode 78. 子集 Leetcode 90. 子集 II
Leetcode 93. 复原 IP 地址 题目链接 93 复原 IP 地址 本题目也是分割的典型题目,属于分割回文子串的升级版,大概的思路都是一样的,注意几点,第一个是对ip地址正确与否的条件,第二个插入逗点后,下一个子串…...
【Java 进阶篇】Jedis 操作 String:Redis中的基础数据类型
在Redis中,String是最基础的数据类型之一,而Jedis作为Java开发者与Redis交互的利器,提供了丰富的API来操作String。本文将深入介绍Jedis如何操作Redis中的String类型数据,通过生动的代码示例和详细的解释,让你轻松掌握…...
MySQL 8 配置文件详解与最佳实践
MySQL 8 是一款强大的关系型数据库管理系统,通过适当的配置文件设置,可以充分发挥其性能潜力。在这篇博客中,我们将深入探究 MySQL 8 常用的配置文件,并提供一些建议,帮助您优化数据库性能。 配置文件概览 在 MySQL …...
K8s client go 创建CRD的informer
背景 需要监听K8s中CRD资源的变动, 做出相应的处理, 需要针对 CRD资源建立informer 实现 dynamicClient 是 创建的K8s的client, 这里使用的是 Unstructured 接収的CRD的结果, 加工的时候使用了convertUnstructuredProject 加工了一下, convertUnstructuredProject 实现下面提…...
使用jmx_exporter监控Kafka
prometheus 监控 kafka 常见的有两种开源方案,一种是传统的部署 exporter 的方式,一种是通过 jmx 配置监控,本文将采用第二种方式进行配置。 项目地址: kafka_exporter:https://github.com/danielqsj/kafka_exporterjmx_exporter:https://github.com/prometheus/jmx_expo…...
什么是网络爬虫技术?它的重要用途有哪些?
网络爬虫(Web Crawler)是一种自动化的网页浏览程序,能够根据一定的规则和算法,从互联网上抓取和收集数据。网络爬虫技术是随着互联网的发展而逐渐成熟的一种技术,它在搜索引擎、数据挖掘、信息处理等领域发挥着越来越重…...
Android MemoryFile 共享内存
应用场景: 跨进程传输大数据,如文件、图片等; 技术选型: 共享内存–MemoryFile; 优点: 1. 共享内存没有传输大小限制,所以和应用总的分配内存一样(512MB)࿱…...
【lua】记录函数名和参数(为了延后执行)
需求背景 一个服务缓存玩家信息到对象里,通过对象的函数定时同步到数据库中,如果玩家掉线 清空对象,但是后续步骤导致对象数据需要变更,对象不存在, 就不方便变更了,怎么处理? 方案思考 1.临…...
海外党福音:英文论文AI率超标怎么降?从86%到稳过Turnitin的保姆级教程
给英文文章做降ai处理,真的比中文让人头疼很多! 前不久我刚刚写完初稿,给正文部分做了检测后没发现什么问题,当时还以为大功告成,结果到了晚上就被通知学校还要查英文摘要。“不就是再给英文部分做一遍润色嘛”&#…...
NocoBase 一周更新:多版本推新特性、优化功能并修复多项问题
NocoBase 目前更新的版本分支NocoBase 目前更新包括的版本更新包括三个分支:main ,next 和 develop 。main 是截止目前最稳定的版本,推荐安装此版本;next 包含即将发布的新功能,经过初步测试,可能存在部分已…...
AZ音乐下载器完整使用攻略:三步搞定高品质音乐下载
AZ音乐下载器完整使用攻略:三步搞定高品质音乐下载 【免费下载链接】AZMusicDownloader AZ音乐下载器 - 优雅地下载音乐 - 多API集成客户端 | Download music gracefully 项目地址: https://gitcode.com/gh_mirrors/az/AZMusicDownloader 你是否经常为找不到…...
中小企业短期靠外包,长期必须培养懂业务的AI核心人才。
在这种现实约束下,“短期靠外包,长期培养懂业务的AI核心人才”,成为中小企业实现AI落地、构筑核心竞争力的可行路径——短期外包解决“燃眉之急”,快速验证AI价值;长期育才筑牢“发展之基”,实现能力内化。…...
VSCode 2026实时协作不是“多人编辑”——而是重构了IDE生命周期(含VS Code Server v1.92内核补丁解读)
更多请点击: https://intelliparadigm.com 第一章:VSCode 2026实时协作的本质跃迁 VSCode 2026 将实时协作从“状态同步”推向“意图协同”,其核心在于服务端运行的 Collaborative Runtime Engine(CRE)直接解析编辑操…...
Windows 11 窗口美化终极指南:让所有应用焕发 Mica 质感
Windows 11 窗口美化终极指南:让所有应用焕发 Mica 质感 【免费下载链接】MicaForEveryone Mica For Everyone is a tool to enable backdrop effects on the title bars of Win32 apps on Windows 11. 项目地址: https://gitcode.com/gh_mirrors/mi/MicaForEvery…...
别只当普通鼠标用!快鼠P30的语音听写功能,在写代码、写文档时到底香不香?
快鼠P30语音听写实测:程序员与技术写作者的高效利器 第一次听说鼠标还能语音输入时,我的反应和大多数人一样——这玩意儿真能有用?直到上个月连续加班赶项目文档,手腕酸痛到贴满膏药时,才抱着试试看的心态入手了快鼠P3…...
TPFanCtrl2:探索ThinkPad嵌入式控制器直连架构下的精准风扇控制技术
TPFanCtrl2:探索ThinkPad嵌入式控制器直连架构下的精准风扇控制技术 【免费下载链接】TPFanCtrl2 ThinkPad Fan Control 2 (Dual Fan) for Windows 10 and 11 项目地址: https://gitcode.com/gh_mirrors/tp/TPFanCtrl2 在移动计算领域,散热管理的…...
别再只用JTAG下载程序了!手把手教你用边界扫描给BGA芯片做‘体检’
硬件工程师的BGA检测秘籍:边界扫描实战指南 当一块搭载BGA封装芯片的电路板从产线下来,如何快速判断数百个焊点是否存在虚焊、短路?传统方法可能需要X光检测或破坏性测试,而边界扫描技术提供了一种非侵入式、高效率的解决方案。本…...
从“翻车”到“神图”:我的Stable Diffusion提示词避坑与调优笔记(附Lora使用心得)
从“翻车”到“神图”:我的Stable Diffusion提示词避坑与调优笔记 深夜三点,屏幕上的AI少女长着七根手指,背景里漂浮着半截手臂——这已经是我今晚第十七张“恐怖片剧照”了。作为从MidJourney转战Stable Diffusion的老玩家,我经历…...
