当前位置: 首页 > news >正文

怎么做售房网站开平市建设工程站网站

怎么做售房网站,开平市建设工程站网站,棋牌源码资源网,做网站的好公司目录 背景 Guava Cache 简介 实现方案 1. 项目依赖 2. Guava Cache 集成到 Flink (1) 定义 Cache (2) 使用 Cache 优化维表查询 3. 应用运行效果 (1) 维表查询逻辑优化 (2) 减少存储压力 Guava Cache 配置优化 总结 背景 在实时计算场景中,Flink 应用中…

目录

背景

Guava Cache 简介

实现方案

1. 项目依赖

(1) 定义 Cache

(2) 使用 Cache 优化维表查询

3. 应用运行效果

(1) 维表查询逻辑优化

(2) 减少存储压力

Guava Cache 配置优化

总结


背景

在实时计算场景中,Flink 应用中经常需要通过维表进行维度数据的关联。为了保证关联的实时性,常将维表数据存储在 Redis 或数据库中。然而,这种方案可能会因高频访问导致存储压力过大,甚至出现性能瓶颈。

为了解决这个问题,可以在 Flink 中引入本地缓存。本文介绍如何通过 Google 的开源库 Guava Cache,实现对热存储维表访问的优化。


Guava Cache 简介

Guava Cache 是 Google 开发的一个 Java 缓存工具库,具有以下优点:

  1. 支持本地缓存,提升查询性能。
  2. 提供缓存淘汰策略(如基于时间或容量)。
  3. 线程安全,适合高并发场景。
  4. 提供监听机制,可在缓存失效时触发回调。

实现方案

1. 项目依赖

在 Maven 项目中引入 Guava 依赖:

<dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>31.1-jre</version>
</dependency>

以下是一个典型的实现步骤:

(1) 定义 Cache

使用 Guava 提供的 CacheBuilder 创建一个本地缓存:

import com.google.common.cache.Cache;
import com.google.common.cache.CacheBuilder;import java.util.concurrent.TimeUnit;public class CacheUtil {private static final Cache<String, String> DIM_CACHE = CacheBuilder.newBuilder().maximumSize(10000) // 最大缓存数量.expireAfterWrite(10, TimeUnit.MINUTES) // 缓存过期时间.build();public static String getFromCache(String key) {return DIM_CACHE.getIfPresent(key);}public static void putToCache(String key, String value) {DIM_CACHE.put(key, value);}
}
(2) 使用 Cache 优化维表查询

在自定义的 RichFlatMapFunction 中使用缓存查询维表数据:

import org.apache.flink.api.common.functions.RichFlatMapFunction;
import org.apache.flink.configuration.Configuration;
import org.apache.flink.util.Collector;public class DimensionJoinFunction extends RichFlatMapFunction<String, String> {@Overridepublic void open(Configuration parameters) throws Exception {// 初始化连接到 Redis 或其他外部存储}@Overridepublic void flatMap(String value, Collector<String> out) throws Exception {String dimKey = extractKey(value);// 1. 先查询缓存String dimValue = CacheUtil.getFromCache(dimKey);// 2. 如果缓存未命中,再查询外部存储if (dimValue == null) {dimValue = queryFromExternalStorage(dimKey);if (dimValue != null) {CacheUtil.putToCache(dimKey, dimValue); // 写入缓存}}// 3. 关联维度数据if (dimValue != null) {String result = enrichData(value, dimValue);out.collect(result);}}private String extractKey(String value) {// 从输入数据中提取维表关联键return value.split(",")[0];}private String queryFromExternalStorage(String key) {// 模拟查询 Redis 或数据库return "mock_value_for_" + key;}private String enrichData(String input, String dimValue) {// 组合维度数据return input + "," + dimValue;}
}

3. 应用运行效果

(1) 维表查询逻辑优化
  • 缓存命中时:直接返回缓存数据,访问延迟为纳秒级。
  • 缓存未命中时:查询外部存储,并将结果写入缓存,后续重复访问相同的 Key 时不再查询外部存储。
(2) 减少存储压力

Guava Cache 本地缓存避免了大量高频查询直接命中外部存储,降低了 Redis、MySQL 等服务的负载。


Guava Cache 配置优化

  1. 缓存淘汰策略

    • expireAfterWrite:基于写入时间自动过期。
    • expireAfterAccess:基于访问时间自动过期。
    • maximumSize:限制最大缓存数量,避免内存占用过高。
  2. 异步加载机制: 如果需要异步加载数据,可以使用 CacheLoader,在缓存未命中时自动加载:

    Cache<String, String> cache = CacheBuilder.newBuilder().maximumSize(10000).build(new CacheLoader<String, String>() {@Overridepublic String load(String key) throws Exception {return queryFromExternalStorage(key);}});
  3. 监控与统计: 使用 Cache.stats() 查看缓存命中率等统计数据,便于优化缓存策略。


总结

通过在 Flink 中引入 Guava Cache,可以显著降低热存储维表的访问压力,提升系统性能。
这种方案适用于维表数据更新频率较低,且查询热点相对集中的场景

http://www.yayakq.cn/news/855896/

相关文章:

  • 网站空间ip查询免费下载微信并安装
  • 成都房地产网站建设电子商务网站开发指南
  • 浙江网站建设哪里好常见行业门户网站
  • 上海优质网站seo有哪些哪些网站可以做免费推广
  • 手机建设银行网站塘沽集团网站建设
  • 做网站需要考虑seo吗全球搜索引擎排行榜
  • 青岛做网站皆赴青岛博有哪些黄页网不付费
  • 有创意的婚纱网站模板做网站加一个定位功能要多少钱
  • 荆州建设局网站微信自己怎么弄小程序
  • 商业网站缩写大连制作网站多少钱
  • 腾冲住房和城乡建设局门户网站中国室内设计联盟网
  • 刷赞网站空间免费增加wordpress页脚小工具
  • 网站全面详细创建步骤代做备案网站
  • 深圳 网站建设培训学校seo关键词有话要多少钱
  • 网站可以做外部链接吗标题关键词优化技巧
  • 泉州制作网站公司苏州网站建设最佳方案
  • 劳保用品 技术支持 东莞网站建设长春建站费用
  • 办公用品网站建设市场定位网站怎么做用什么软件
  • 大连建设项目河南整站关键词排名优化软件
  • 小说网站怎么做防采集新品发布会流程
  • flashfxp 网站新闻最新热点
  • 资阳地网站seo云主机重装系统后网站重新部署吗
  • 企业网站开发有哪些运维工程师简历
  • 上海网站seo牛巨微宁波网站建设应届生
  • dedecms网站地图路径修改生成后 网站地图前台路径不变wordpress设置禁止蜘蛛抓取
  • 苏州网站网页设计成都建网站哪家好
  • 服务网站建设的公司登录wordpress后台
  • 简洁的网站模板WordPress会员中心模板
  • 网站建设和维护要学多久广州关键词搜索排名
  • 网站建设企业建站要多久柳州网站开发公司