# 启动和停止节点

本章节介绍如何启动服务端和客户端节点。

节点的类型有两种:服务端节点和客户端节点。客户端节点也称为胖客户端,以区别于瘦客户端。服务端节点参与缓存、计算的执行、流数据处理等。客户端节点提供远程接入服务端的能力,有完整的Ignite API支持,包括近缓存、事务、计算、流处理、服务等。

所有的节点默认都以服务端模式启动,客户端模式需要显式指定。

# 1.启动服务端节点

可以使用下面的命令或者代码片段,启动一个普通的服务端节点:

    # 2.启动客户端节点

    要启动客户端节点,可以简单地在节点的配置中打开客户端模式:

      另外,还有个方便的方法,还可以通过Ignition类来启用或者禁用客户端模式,这样服务端和客户端就可以复用相同的配置。

        # 3.停止节点

        强制停止某个节点时,可能会导致数据丢失或数据不一致,甚至会使节点无法重启。当节点没有响应且无法正常关闭时,应将强制停止作为最后的手段。

        正常停止可以使节点完成关键操作并正确完成其生命周期,执行正常停止的正确过程如下:

        1. 使用以下方法之一停止节点:

          • 以编程方式调用Ignite.close()
          • 以编程方式调用System.exit()
          • 发送用户中断信号。Ignite使用JVM关闭钩子在JVM停止之前执行自定义逻辑。如果通过运行ignite.sh来启动节点并且不将其与终端分离,则可以通过按下Ctrl+C来停止节点。
        2. 基线拓扑中删除该节点。如果启用了基线自动调整,则可以不执行此步骤。

        从基准拓扑中删除节点将在其余节点上开始再平衡过程。如果计划在停止后立即重启该节点,则不必进行再平衡。在这种情况下,请勿从基准拓扑中删除该节点。

        # 5.节点生命周期事件

        生命周期事件使开发者有机会在节点生命周期的不同阶段执行自定义代码。

        共有4个生命周期事件:

        • BEFORE_NODE_START:Ignite节点的启动程序初始化之前调用;
        • AFTER_NODE_START:Ignite节点启动之后调用;
        • BEFORE_NODE_STOP:Ignite节点的停止程序初始化之前调用;
        • AFTER_NODE_STOP:Ignite节点停止之后调用。

        下面的步骤介绍如何添加一个自定义生命周期事件监听器:

        1. 开发一个实现LifecycleBean接口的类,该接口有一个onLifecycleEvent()方法,每个生命周期事件都会调用。
        public class MyLifecycleBean implements LifecycleBean {
            @IgniteInstanceResource
            public Ignite ignite;
        
            @Override
            public void onLifecycleEvent(LifecycleEventType evt) {
                if (evt == LifecycleEventType.AFTER_NODE_START) {
        
                    System.out.format("After the node (consistentId = %s) starts.\n", ignite.cluster().node().consistentId());
        
                }
            }
        }
        
        1. 将该类注册到节点的配置中:

          18624049226

          最后更新时间:: 1/17/2021, 4:56:48 PM