您现在的位置是:主页 > news > 西安网站网络营销/湖北网络推广有限公司

西安网站网络营销/湖北网络推广有限公司

admin2025/6/5 16:37:39news

简介西安网站网络营销,湖北网络推广有限公司,个人制作个网站,南阳阿里巴巴网站推广jetlinks之cache、cluster 提示:主要目的是为了学习下jetlinks,比较倾向物模型,感谢大佬们的开源,学习路径先通过通读jetlinks-core源码开始 文章目录jetlinks之cache、cluster前言一、缓存代码结构二、代码学习分解1.缓存配置2.…

西安网站网络营销,湖北网络推广有限公司,个人制作个网站,南阳阿里巴巴网站推广jetlinks之cache、cluster 提示:主要目的是为了学习下jetlinks,比较倾向物模型,感谢大佬们的开源,学习路径先通过通读jetlinks-core源码开始 文章目录jetlinks之cache、cluster前言一、缓存代码结构二、代码学习分解1.缓存配置2.…

jetlinks之cache、cluster

提示:主要目的是为了学习下jetlinks,比较倾向物模型,感谢大佬们的开源,学习路径先通过通读jetlinks-core源码开始


文章目录

  • jetlinks之cache、cluster
  • 前言
  • 一、缓存代码结构
  • 二、代码学习分解
    • 1.缓存配置
    • 2.数据本地化
    • 2.集群定义
  • 总结


本章主要是jetlinks缓存配置及相应本地化数据


前言

提示:jetlink cache管理


提示:以下是本篇文章正文内容,下面案例可供参考

一、缓存代码结构

在这里插入图片描述
在这里插入图片描述

缓存工具 支持支持 jctools,Caffeine,Guava.。
JCTools (Java Concurrency Tools) 提供了一系列非阻塞并发数据结构(标准 Java 中缺失的),当存在线程争抢的时候,非阻塞并发数据结构比阻塞并发数据结构能提供更好的性能。JCTools 是一个开源工具包,在 Apache License 2.0 下发布,并在 Netty、Rxjava 等诸多框架中被广泛使用。
Caffeine 是基于Java 8的高性能,接近最佳的缓存库。Caffeine使用Google Guava启发的API提供内存缓存。 改进取决于您设计Guava缓存和ConcurrentLinkedHashMap的体验。
在这里插入图片描述

二、代码学习分解

1.缓存配置

Caches 主要根据环境来创建不同的ConcurrentMap实现

代码如下(示例):

 private static boolean caffeinePresent() {if (Boolean.getBoolean("jetlinks.cache.caffeine.disabled")) {return false;}try {Class.forName("com.github.benmanes.caffeine.cache.Cache");return true;} catch (ClassNotFoundException e) {return false;}}private static boolean jctoolPresent() {if (Boolean.getBoolean("jetlinks.cache.jctool.disabled")) {return false;}try {Class.forName("org.jctools.maps.NonBlockingHashMap");return true;} catch (ClassNotFoundException e) {return false;}}static {if (jctoolPresent()) {cacheSupplier = NonBlockingHashMap::new;} else if (caffeinePresent()) {cacheSupplier = Caches::createCaffeine;} else if (guavaPresent()) {cacheSupplier = Caches::createGuava;} else {cacheSupplier = ConcurrentHashMap::new;}}

优先级依次是jctools Caffeine Guava

2.数据本地化

基于文件的本地队列,可使用此队列进行数据本地持久化
在这里插入图片描述
在这里插入图片描述
FileQueue 本地化文件队列,提供builder创建。
Builder 队列创建 队列名称,编码器,文件存储路径,及其他队列构造配置等
FileQueueBuilderFactory 本地化文件队列工厂,jetlinks提供了默认实现,在jetlinks-support包中
Codec 编码器 后续会展开查看

SPIFileQueueBuilder 接口FileQueue.Builder的实现利用jdk spi功能进行自定义拓展:
代码如下(示例):

 static {ServiceLoader<FileQueueBuilderFactory> loader = ServiceLoader.load(FileQueueBuilderFactory.class, SPIFileQueueBuilder.class.getClassLoader());Iterator<FileQueueBuilderFactory> iterator = loader.iterator();if (!iterator.hasNext()) {SPIFileQueueBuilder.log.warn("Cant not load service [FileQueueBuilderFactory]");factory = new FileQueueBuilderFactory() {@Override@SuppressWarnings("all")public <T> FileQueue.Builder<T> create() {throw new UnsupportedOperationException("unsupported service FileQueueBuilderFactory");}};} else {factory = iterator.next();SPIFileQueueBuilder.log.debug("Load service [FileQueueBuilderFactory] : [{}]", factory.getClass());}}

对应resources下需配置

     --resources---|---META-INF---|-----|--services---|-----|-----|---org.jetlinks.core.cache.FileQueueBuilderFactory

该处使用的url网络请求的数据。

2.集群定义

ClusterCache 集群缓存,通常用于集群见共享数据.
ClusterCounter 集群计数器支持
ClusterManager 集群管理器
ClusterQueue 集群队列
ClusterSet 集群Set支持
ClusterTopic 集群广播
HaManager 集群高可用管理器,可用于监听集群中的节点上下线信息.
ServerNode 服务节点定义


总结

提示:这里对文章进行总结:
例如:以上就是今天要学习的内容。