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 CompletableFuture supplyAsync(Supplier supplier); public static CompletableFuture supplyAsync(Supplier supplier, Executor executor);
2.无返回值
public static CompletableFuturerunAsync(Runnable runnable); public static CompletableFuture runAsync(Runnable runnable, Executor executor);
2.后续的串行方法
then 表示是异步的串行方法,
run 表示 无参
accept 有参
apply 有参 有返回值
而async表示这个方法执行的任务最终还是异步
// 使线程串行执行,无入参,无返回值 public CompletableFuturethenRun(Runnable action); public CompletableFuture thenRunAsync(Runnable action); public CompletableFuture thenRunAsync(Runnable action, Executor executor); // 使线程串行执行,有入参,无返回值 public CompletableFuture thenAccept(Consumer super T> action); public CompletableFuture thenAcceptAsync(Consumer super T> action); public CompletableFuture thenAcceptAsync(Consumer super T> action, Executor executor); // 使线程串行执行,有入参,有返回值 public CompletableFuture thenApply(Function super T,? extends U> fn); public CompletableFuture thenApplyAsync(Function super T,? extends U> fn); public CompletableFuture thenApplyAsync(Function super T,? extends U> fn, Executor executor);
猜你喜欢
- 1小时前QT基础篇(7)QT5图形视图框架
- 1小时前七、Qt 信号和槽
- 1小时前vue中PC端使用高德地图 -- 实现搜索定位、地址标记、弹窗显示定位详情
- 1小时前【JaveWeb教程】(15) SpringBootWeb之 响应 详细代码示例讲解
- 1小时前若依框架详细使用
- 1小时前ImageNet Classification with Deep Convolutional 论文笔记
- 1小时前kafka服务器连接出现:[NetworkClient.java:935] [Producer clientId=producer-1] Node -1 disconnected原因分析
- 1小时前留学中介收费情况(留学中介机构收费标准)
- 48分钟前宋氏家族(宋氏家族的后人们现在怎么样)
- 3分钟前手机游戏键盘怎么使用(手机游戏键盘如何使用)
网友评论
- 搜索
- 最新文章
- 热门文章