Apache Geode 2.3 部署应用程序JAR到Geode成员

本文介绍在Apache Geode中如何部署和管理应用程序JAR文件,包括使用gfsh命令进行部署、取消部署,以及查看已部署的JAR文件列表。文章还详细解释了JAR文件的版本控制、自动类路径加载和自动功能注册机制。

部署应用程序JAR到Geode成员

您可以将应用程序JAR文件动态部署到特定成员或群集中的所有成员。 Geode自动跟踪JAR文件版本;将已部署的JAR文件自动加载到CLASSPATH;并自动注册JAR包含的任何函数。

要在Apache Geode中部署和取消部署应用程序JAR文件,请使用gfsh deploy或undeploy命令。 您可以部署单个JAR或多个JAR(通过指定JAR文件名或指定包含JAR文件的目录),也可以将部署目标指向成员组或多个成员组。例如,在连接到要部署JAR文件的群集后,可以在gfsh提示符下键入:

gfsh> deploy --jars=group1_functions.jar

此命令将group1_functions.jar文件部署到群集中的所有成员。

要将JAR文件部署到成员的子集,请使用--groups参数。例如:

gfsh> deploy --jars=group1_functions.jar --groups=MemberGroup1

在示例中,假设您已经定义了在启动成员时要使用的成员组。有关如何定义成员组以及如何将成员添加到组的详细信息,请参阅 Configuring and Running a Cluster.

gfsh> deploy --dir=libs/group1-libs

您可以提供JAR文件名或JAR目录以进行部署,但不能同时指定两者。

要在整个集群中取消部署所有以前部署的JAR文件:

gfsh> undeploy

要取消部署特定的JAR文件:

gfsh> undeploy --jars=group1_functions.jar

在取消部署所有JAR文件时定位特定成员组:

gfsh> undeploy --groups=MemberGroup1

以前只有部署在MemberGroup1组中的成员上的JAR文件将被取消部署。

要查看集群中所有已部署的JAR文件的列表,请执行以下操作:

gfsh> list deployed

要查看特定成员组中所有已部署JAR的列表,请执行以下操作:

gfsh> list deployed --groups=MemberGroup1

样本输出:


 Member   |     Deployed JAR     |                JAR Location            
--------- | -------------------- | ---------------------------------------------------
datanode1 | group1_functions.jar | /usr/local/gemfire/deploy/vf.gf#group1_functions.jar#1
datanode2 | group1_functions.jar | /usr/local/gemfire/deploy/vf.gf#group1_functions.jar#1

有关gfsh用法的更多信息,请参阅 gfsh.

JAR文件的部署位置

在每个成员上写入JAR文件的系统位置由为该成员配置的deploy-working-dir Geode属性确定。例如,您可以在您的成员的gemfire.properties文件中配置以下内容:

#gemfire.properties
deploy-working-dir=/usr/local/gemfire/deploy

此部署位置可以是本地或多个成员使用的共享网络资源(例如装载位置),以减少磁盘空间使用。如果使用共享目录,则仍需要在要访问应用程序的每个成员上部署JAR文件,因为部署会更新CLASSPATH和自动注册功能。

关于部署JAR文件和群集配置服务

默认情况下,群集配置服务将已部署的JAR文件分发到群集中的所有定位器。使用gfsh启动新服务器时,定位器将配置文件和已部署的jar文件提供给成员,并将它们写入服务器的目录。

请参阅 Overview of the Cluster Configuration Service.

JAR文件的版本控制

将JAR文件部署到群集或成员组时,将修改JAR文件以在其名称中指示版本信息。每个JAR文件名都以vf.gf#为前缀,并在文件名末尾包含版本号。 例如,如果您部署MyClasses.jar五次,则在列出所有已部署的jar时,文件名将显示为vf.gf#MyClasses.jar#5。

部署新JAR文件时,接收部署的成员会检查JAR文件是否重复,因为JAR文件已部署在该成员上,或者因为JAR文件已部署到共享部署工作目录,其他成员也在使用。如果另一个成员已将此JAR文件部署到共享目录(通过与其目录中的最新版本进行逐字节比较确定),则接收最新部署的成员不会将该文件写入磁盘。相反,该成员更新ClassPathLoader以使用已部署的JAR文件。如果在磁盘上检测到较新版本的JAR文件并且已在使用中,则会取消部署。

当成员开始使用JAR文件时,该成员将获取该文件的共享锁。 如果成员通过部署接收到较新版本,该成员将释放共享锁并尝试删除现有JAR文件以支持较新版本。如果没有其他成员在现有JAR上具有共享锁,则会删除现有的旧版本JAR。

自动类路径加载

启动缓存时,新缓存会请求将当前工作目录中每个JAR文件的最新版本添加到ClassPathLoader。如果已将JAR文件部署到ClassPathLoader,则ClassPathLoader会在找到更新版本时,更新其加载的版本;否则,没有变化。如果检测到,则如果没有其他成员对其具有共享锁,则会删除旧版本的JAR文件。

取消部署JAR文件不会自动卸载部署期间加载的类。您需要重新启动成员才能卸载这些类。

当缓存关闭时,它会请求从ClassPathLoader中删除所有当前部署的JAR文件。

如果使用共享部署工作目录,则共享该目录的所有成员应属于同一成员组。重新启动后,共享同一部署工作目录的所有成员将使用当前工作目录中找到的任何JAR部署和自动加载其CLASSPATH。这意味着某些成员可能会加载JAR,即使它们不是接收原始部署的成员组的一部分。

自动功能注册

部署包含函数的JAR文件(换句话说,包含实现Function接口的类)时,将通过FunctionService.registerFunction方法自动注册该函数。如果使用相同的函数部署了另一个JAR文件(具有相同的JAR文件名或其他文件名),则会注册该函数的新实现,覆盖旧的实现。如果取消部署JAR文件,则在部署时自动注册的任何功能都将取消注册。由于多次部署具有相同名称的JAR文件会导致JAR取消部署和重新部署,因此JAR中的函数将在每次发生时取消注册并重新注册。如果从多个不同名称的JAR文件中注册了具有相同ID的函数,则在重新部署或取消部署任何这些JAR文件时,将取消注册该函数。

在cache.xml加载期间,将保存任何声明的参数。如果在JAR文件中找到的函数也是可声明的,并且与加载cache.xml后保存参数的声明符具有相同的类名,则使用这些参数创建函数实例并进行注册。因此,如果在cache.xml中使用不同的参数集多次声明相同的函数,则在部署JAR时,将为每组参数实例化一个函数。如果使用来自cache.xml加载的参数注册任何函数,则不会注册默认的无参数函数。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值