【Eureka】【源码+图解】【七】Eureka的下线功能
创始人
2024-03-05 12:14:41
0

【Eureka】【源码+图解】【六】Eureka的续约功能

目录

  • 6. 下线
    • 6.1 shutdown()
    • 6.2 服务端cancel
    • 6.3 同步其他server节点

6. 下线

主动下线方式

服务端:/eureka/apps/{application.name}/{instance-id},以本系列文章的helloworld为例,发送DELETE请求http://localhost:3333/eureka/apps/MY-EUREKA-CLIENT/localhost:my-eureka-client:2222便可将客户端实例下线

客户端

1、创建Controller

@RestController
public class EurekaController {@GetMapping("/cancel")public void cancel() {DiscoveryManager.getInstance().shutdownComponent();}
}

2、浏览器直接拍http://localhost:2222/cancel即可将客户端实例下线

下线的整体流程图

在这里插入图片描述

主要分析绿色的三个步骤

6.1 shutdown()

public class DiscoveryClient implements EurekaClient {@PreDestroy@Overridepublic synchronized void shutdown() {if (isShutdown.compareAndSet(false, true)) {......// 注销监听器if (statusChangeListener != null && applicationInfoManager != null) {applicationInfoManager.unregisterStatusChangeListener(statusChangeListener.getId());}// 取消定时任务,包括注册、续约、更新注册信息等cancelScheduledTasks();// 注销if (applicationInfoManager != null&& clientConfig.shouldRegisterWithEureka()&& clientConfig.shouldUnregisterOnShutdown()) {applicationInfoManager.setInstanceStatus(InstanceStatus.DOWN);unregister(); // 向服务端发送下线请求}if (eurekaTransport != null) {// 关闭eurekaTransporteurekaTransport.shutdown();}......}}
}

6.2 服务端cancel

public abstract class AbstractInstanceRegistry implements InstanceRegistry {@Overridepublic boolean cancel(String appName, String id, boolean isReplication) {// 1、从内存实例注册表registry删除// 2、添加到recentCanceledQueue// 3、从overriddenInstanceStatusMap删除// 4、添加到recentlyChangedQueue// 5、从缓存responseCache中删除return internalCancel(appName, id, isReplication);}
}

6.3 同步其他server节点

public class PeerAwareInstanceRegistryImpl extends AbstractInstanceRegistry implements PeerAwareInstanceRegistry {@Overridepublic boolean cancel(final String appName, final String id,final boolean isReplication) {if (super.cancel(appName, id, isReplication)) {// 除了Action.Cancel与register不同,其他可参考register章节replicateToPeers(Action.Cancel, appName, id, null, null, isReplication);return true;}return false;}
}

未完待续

相关内容

热门资讯

保存时出现了1个错误,导致这篇... 当保存文章时出现错误时,可以通过以下步骤解决问题:查看错误信息:查看错误提示信息可以帮助我们了解具体...
汇川伺服电机位置控制模式参数配... 1. 基本控制参数设置 1)设置位置控制模式   2)绝对值位置线性模...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
表格中数据未显示 当表格中的数据未显示时,可能是由于以下几个原因导致的:HTML代码问题:检查表格的HTML代码是否正...
本地主机上的图像未显示 问题描述:在本地主机上显示图像时,图像未能正常显示。解决方法:以下是一些可能的解决方法,具体取决于问...
表格列调整大小出现问题 问题描述:表格列调整大小出现问题,无法正常调整列宽。解决方法:检查表格的布局方式是否正确。确保表格使...
不一致的条件格式 要解决不一致的条件格式问题,可以按照以下步骤进行:确定条件格式的规则:首先,需要明确条件格式的规则是...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...