有关Apache Ignite的peer class loading (P2P class loading)

目前用的是最新孵化版本:1.3.0-incubating。

官方文档https://apacheignite.readme.io/docs/zero-deployment    这里给出了一个一个分布式类加载机制(distributed ClassLoader)。

文档这么说的:

The closures and tasks that you use for your computations may be of any custom class, including anonymous classes. In Ignite, the remote nodes will automatically become aware of those classes, and you won‘t need to explicitly
deploy or move any .jar files to any remote nodes.

Such behavior is possible due to peer class loading (P2P class loading), a specialdistributed ClassLoader in Ignite for inter-node byte-code exchange. With peer-class-loading enabled, you don‘t have to manually
deploy your Java or Scala code on each node in the grid and re-deploy it each time it changes。

在你的计算中,所用到的闭包(java8概念)和任务,可能是我们程序自己写的类,包括匿名类。在Ignite集群中,远程节点们可以相互感知你这些类,这样,我们可以避免显示的把我们的类打包成一个jar文件,放到集群Ignite的每个lib文件下。

这个行为由于peer class loading,一种特殊的分布式类加载,可以在集群几点之间交换字节码,采用peer class loading,你的java代码或scala代码就不用手动发布或由于这些类根据业务需要改动而重新发布到集群机器上。

文档是这么说的,可现在的1.3.0-incubating,Apache Ignite并不是所有的功能能很好的支持。如sql查询,peer
class loading 就会失败。

我提出的isssue:https://issues.apache.org/jira/browse/IGNITE-1255 ,为什么sql查询配置了peer
class loading还是会失败,必须手动发布jar包才可以吗。

答案是:目前有些不支持的,必须手动发布jar包。

回答者这么说的:I think whenIGNITE-950
will be fixed, there will be no need to put user classes on the server side, sopeerClassLoadingEnabled setting will not have special behavior for caches anymore.

而且,目前官方只说了这么句:

It is recommended that peer-class-loading is disabled in production. Generally you want to have a controlled production environment without
any magic. To deploy your classes explicitly, you can copy them into Ignite
libs
folder or manually add them to the classpath on every node.

生成环境禁用这个peer-class-loading,好像目前版本,这个好功能没能很好的实现。

所以,我们还是手动发布jar包。

版权声明:本文为博主原创文章,未经博主允许不得转载[http://blog.csdn.net/doctor_who2004]。

时间: 2024-10-12 16:36:19

有关Apache Ignite的peer class loading (P2P class loading)的相关文章

Apache Ignite——新一代数据库缓存系统

Apache Ignite是一个通用的数据库缓存系统,它不仅支持所有的底层数据库系统,比如RDBMS.NoSQL和HDFS,还支持Write-Through和Read-Through.Write-Behind Caching等可选功能. Apache Ignite是一个聚焦分布式内存计算的开源项目,它在内存中储存数据,并分布在多个节点上以提供快速数据访问.此外,可选地将数据同步到缓存层同样是一大优势.最后,可以支持任何底层数据库存储同样让 Ignite成为数据库缓存的首先.

分布式数据库缓存系统Apache Ignite

Apache Ignite内存数据组织是高性能的.集成化的以及分布式的内存平台,他可以实时地在大数据集中执行事务和计算,和传统的基于磁盘或者闪存的技术相比,性能有数量级的提升. 将数据存储在缓存中能够显著地提高应用的速度,因为缓存能够降低数据在应用和数据库中的传输频率.Apache Ignite允许用户将常用的热数据储存在内存中,它支持分片和复制两种方式,让开发者可以均匀地将数据分布式到整个集群的主机上.同时,Ignite还支撑任何底层存储平台,不管是RDBMS.NoSQL,又或是HDFS. 在

Apache Ignite剖析

1.概述 Apache Ignite和Apache Arrow很类似,属于大数据范畴中的内存分布式管理系统.在<Apache Arrow 内存数据>中介绍了Arrow的相关内容,它统一了大数据领域各个生态系统的数据格式,避免了序列化和反序列化所带来的资源开销(能够节省80%左右的CPU资源).今天来给大家剖析下Apache Ignite的相关内容. 2.内容 Apache Ignite是一个以内存为中心的数据平台,具有强一致性.高可用.强大的SQL.K/V以及其所对应的应用接口(API).结构

Apache Ignite 改装(一) -- 服务异步化支持

本文假设读者了解Apache Ignite,阅读过ignite service grid的官方文档,或使用过ignite的service grid,本文同样假设读者了解 java的CompletionStage的相关用法.本文涉及的ignite版本为2.4.0. 使用Apache Ignite的Service grid作为微服务开发框架, 通常是如下定义和实现Service的: 服务接口: public interface MyService { public String sayHello(S

apache ignite系列(一): 简介

apache-ignite简介(一) 1,简介 ? ignite是分布式内存网格的一种实现,其基于java平台,具有可持久化,分布式事务,分布式计算等特点,此外还支持丰富的键值存储以及SQL语法(基于h2引擎),可以看成是一个分布式内存数据库. 与ignite类似的产品有gemfire(12306目前正在使用),其开源版为geode.与gemfire相比,ignite对sql的支持比较完善,提供了数据并置来提升性能,还有对分布式事物的支持以及对spring的集成都比较友好,很方便进行嵌入式集成进

apache ignite系列(九):使用ddl和dml脚本初始化ignite并使用mybatis查询缓存

? 博客又断了一段时间,本篇将记录一下基于ignite对jdbc支持的特性在实际使用过程中的使用. 使用ddl和dml脚本初始化ignite 由于spring-boot中支持通过spring.datasource.schema属性指定初始化DDL脚本,spring.datasource.data指定初始化DML脚本.而ignite支持jdbc协议,测试了一下,发现一样可以通过该配置初始化ignite. spring.datasource.url=jdbc:ignite:thin://127.0.

Apache Ignite上的TensorFlow

任何深度学习都是从数据开始的,这是关键点.没有数据,就无法训练模型,也无法评估模型质量,更无法做出预测,因此,数据源非常重要.在做研究.构建新的神经网络架构.以及做实验时,会习惯于使用最简单的本地数据源,通常是不同格式的文件,这种方法确实非常有效.但有时需要更加接近于生产环境,那么简化和加速生产数据的反馈,以及能够处理大数据就变得非常重要,这时就需要Apache Ignite大展身手了. Apache Ignite是以内存为中心的分布式数据库.缓存,也是事务性.分析性和流式负载的处理平台,可以实

apache ignite系列(九):ignite调优

1,配置文件调优 1.1 设置页面大小(pagesize) 先查看系统pagesiz,使用PAGE_SIZE或者PAGESIZE # getconf PAGE_SIZE 4096 # getconf PAGESIZE 4096 ignite默认配置是4k,也就是4096,如果服务器和ignite默认配置不一致,那么就得在配置文件中指定: <bean class="org.apache.ignite.configuration.IgniteConfiguration"> &l

获取apache ignite缓存中的数据行数少于实际行数

我将ignite项目打包放到linux下,在linux下获取window中存放在oracle数据库中的数据,linux服务器作为ignite的服务端节点,我在本地启动tomact,作为ignite客户端获取linux中缓存的数据.在未使用ignite的情况下,即在本地使用jdbc直接连接oracle数据库.获取出来的数据行数为94217使用了ignite,启动一个服务端节点(linux中)和一个客户端节点(window中),获取出来的数据行数为94107使用了ignite,启动两个服务端节点(l