您现在的位置是:主页 > news > 西安网站网络营销/湖北网络推广有限公司
西安网站网络营销/湖北网络推广有限公司
admin2025/6/5 16:37:39【news】
简介西安网站网络营销,湖北网络推广有限公司,个人制作个网站,南阳阿里巴巴网站推广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 服务节点定义
总结
提示:这里对文章进行总结:
例如:以上就是今天要学习的内容。