上海古都建筑设计集团,上海办公室装修设计公司,上海装修公司高质量的内容分享社区,上海装修公司我们不是内容生产者,我们只是上海办公室装修设计公司内容的搬运工平台

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

guduadmin216小时前

1. 旁路缓存

1. 什么是旁路缓存?

将数据库中的数据,比较经常访问的数据,保存起来,以减少和硬盘数据库的交互

比如: 我们使用mysql时 经常查询一个表 , 而这个表又一般不会变化,就可以放在内存中,查找时直接对内存进行查找,而不需要再和mysql交互

2. 旁路缓存例子使用

dim层使用的是hbase存储,因为dim层可能会出现大表,出现数据量过大,所以存储到磁盘合适,使用hbase

而dwd的连接, dwd是从kafka读取ods的数据,并且存入kafka.

因为dwd表是由ods表与dim表关联,所以需要经常和dim互动,互动的话,需要经常传输数据,而从磁盘到内存,显然比不过直接从内存中读取来的快,所以这里使用redis进行操作.

旁路缓存的步骤:

  1. 从缓存中查找数据 ,查找到 ,缓存命中, 结束, 查找不到,继续2
  2. 从dim(或者说磁盘数据库)中查找数据,

但是要注意,如果磁盘数据库中的数据发生变化,就需要将缓存的数据直接清除掉,

关于Flink的旁路缓存与异步操作,在这里插入图片描述,第1张

同时,也要给缓存设置保存时间,不然保存过多就没有意义了

2.异步操作(异步IO)

https://nightlies.apache.org/flink/flink-docs-release-1.18/zh/docs/dev/datastream/operators/asyncio/

1. 同步与异步

同步就是,第二个任务必须等待第一个任务做完,也就是说,流水线

异步 两个任务同时做,不互相牵扯

例子: 饭店点餐:

同步: 只有一个服务员,点餐由服务员来登记,每个餐桌必须按顺序等服务员来记录

异步: 扫码点餐,互相不影响.

2.异步的实现

Flink官方为我们提供了JAVA方法RichAsyncFunction,主要方法是invoke,

关于Flink的旁路缓存与异步操作,在这里插入图片描述,第2张

这里学习了一个博主的思路

https://blog.csdn.net/w306026355/article/details/109707269

1.CompletableFuture

1. 创建异步编排对象
  1. 有返回值
public static  CompletableFuture supplyAsync(Supplier supplier);
public static  CompletableFuture supplyAsync(Supplier supplier, Executor executor);

2.无返回值

public static CompletableFuture runAsync(Runnable runnable);
public static CompletableFuture runAsync(Runnable runnable, Executor executor);

2.后续的串行方法

then 表示是异步的串行方法,

run 表示 无参

accept 有参

apply 有参 有返回值

而async表示这个方法执行的任务最终还是异步

// 使线程串行执行,无入参,无返回值
public CompletableFuture thenRun(Runnable action);
public CompletableFuture thenRunAsync(Runnable action);
public CompletableFuture thenRunAsync(Runnable action, Executor executor);
// 使线程串行执行,有入参,无返回值
public CompletableFuture thenAccept(Consumer action);
public CompletableFuture thenAcceptAsync(Consumer action);
public CompletableFuture thenAcceptAsync(Consumer action, Executor executor);
// 使线程串行执行,有入参,有返回值
public  CompletableFuture thenApply(Function fn);
public  CompletableFuture thenApplyAsync(Function fn);
public  CompletableFuture thenApplyAsync(Function fn, Executor executor);

网友评论

搜索
最新文章
热门文章
热门标签