0


关于Flink的旁路缓存与异步操作

1. 旁路缓存

1. 什么是旁路缓存?

将数据库中的数据,比较经常访问的数据,保存起来,以减少和硬盘数据库的交互
比如: 我们使用mysql时 经常查询一个表 , 而这个表又一般不会变化,就可以放在内存中,查找时直接对内存进行查找,而不需要再和mysql交互

2. 旁路缓存例子使用

dim层使用的是hbase存储,因为dim层可能会出现大表,出现数据量过大,所以存储到磁盘合适,使用hbase
而dwd的连接, dwd是从kafka读取ods的数据,并且存入kafka.
因为dwd表是由ods表与dim表关联,所以需要经常和dim互动,互动的话,需要经常传输数据,而从磁盘到内存,显然比不过直接从内存中读取来的快,所以这里使用redis进行操作.
旁路缓存的步骤:

  1. 从缓存中查找数据 ,查找到 ,缓存命中, 结束, 查找不到,继续2
  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. 创建异步编排对象
  1. 有返回值
publicstatic<U> CompletableFuture<U>supplyAsync(Supplier<U> supplier);publicstatic<U> CompletableFuture<U>supplyAsync(Supplier<U> supplier, Executor executor);

2.无返回值

publicstatic CompletableFuture<Void>runAsync(Runnable runnable);publicstatic CompletableFuture<Void>runAsync(Runnable runnable, Executor executor);

2.后续的串行方法

then 表示是异步的串行方法,
run 表示 无参
accept 有参
apply 有参 有返回值
而async表示这个方法执行的任务最终还是异步

// 使线程串行执行,无入参,无返回值publicCompletableFuture<Void>thenRun(Runnable action);publicCompletableFuture<Void>thenRunAsync(Runnable action);publicCompletableFuture<Void>thenRunAsync(Runnable action,Executor executor);// 使线程串行执行,有入参,无返回值publicCompletableFuture<Void>thenAccept(Consumer<?superT> action);publicCompletableFuture<Void>thenAcceptAsync(Consumer<?superT> action);publicCompletableFuture<Void>thenAcceptAsync(Consumer<?superT> action,Executor executor);// 使线程串行执行,有入参,有返回值public<U>CompletableFuture<U>thenApply(Function<?superT,?extendsU> fn);public<U>CompletableFuture<U>thenApplyAsync(Function<?superT,?extendsU> fn);public<U>CompletableFuture<U>thenApplyAsync(Function<?superT,?extendsU> fn,Executor executor);
标签: flink 缓存 大数据

本文转载自: https://blog.csdn.net/qq_42265608/article/details/134557244
版权归原作者 叫我莫言鸭 所有, 如有侵权,请联系我们删除。

“关于Flink的旁路缓存与异步操作”的评论:

还没有评论