细说Springcloud eureka的几种主动下线服务的方式

本文会介绍几种eureka 注册中心服务下线的方式

补充:在启动eureka服务的时候发现控制台有以下的输出

由此猜想可以通过改接口下线服务, 于是尝试了一下

果然能从注册中心中移除该实例

1. 直接停掉服务。

默认情况下,如果Eureka Server在90秒没有收到Eureka客户的续约,它会将实例从其注册表中删除。但这种做法的不好之处在于, 客户端已经停止了运行,但仍然在注册中心的列表中。 虽然通过一定的负载均衡策略或使用熔断器可以让服务正常进行,但有没有方法让注册中心马上知道服务已经下线呢?

2.为了让注册中心马上知道服务要下线, 可以向eureka 注册中心发送delete 请求

格式为 /eureka/apps/{application.name}/

下面是下线一个hello-service的例子。

下图是用postman 发送delete请求

值得注意的是,Eureka客户端每隔一段时间(默认30秒)会发送一次心跳到注册中心续约。如果通过这种方式下线了一个服务,而没有及时停掉的话,该服务很快又会回到服务列表中。

所以,可以先停掉服务,再发送请求将其从列表中移除。

3. 客户端主动通知注册中心下线 

如果你的eureka客户端是是一个spring boot应用,可以通过调用以下代码通知注册中心下线。

DiscoveryManager.getInstance().shutdownComponent();

例子如下,

@RestController
public class HelloController {
 @Autowired
 private DiscoveryClient client;

 @RequestMapping(value = "/hello", method = RequestMethod.GET)
 public String index() {
  java.util.List<ServiceInstance> instances = client.getInstances("hello-service");
	return "Hello World";
 }

 @RequestMapping(value = "/offline", method = RequestMethod.GET)
 public void offLine(){
 	DiscoveryManager.getInstance().shutdownComponent();
 }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 从dubbo zookeeper注册地址提取出zookeeper地址的方法

    用途 项目中使用了 dubbo,注册中心使用的 zookeeper,使用 zookeeper 实现了一个简单的分布式锁(依赖 curator),因为配置文件存在 dubbo.registry 配置,为了直接使用这个地址来创建分布式锁,写了一个简单的方法来提取 zookeeper 地址. 效果 dubbo.registry 有多种配置方式,支持所有情况,下面是常见的例子和提取结果: zookeeper://localhost:2181 zookeeper://localhost:2181?clie

  • zookeeper概述图文详解

    1.1 概述 分布式系统:分布式系统指由很多台计算机组成的一个整体!这个整体一致对外,并且处理同一请求!系统对内透明,对外不透明!内部的每台计算机,都可以相互通信,例如使用RPC/REST或者是WebService!客户端向一个分布式系统发送的一次请求到接受到响应,有可能会经历多台计算机! Zookeeper是一个开源的分布式的,为分布式应用提供协调服务的Apache项目,多用作为集群提供服务的中间件! Zookeeper从设计模式角度来理解:是一个基于观察者模式设计的分布式服务管理框架,它负责

  • zookeeper监听器原理的详解

    1)监听原理详解: 1)首先要有一个main()线程 2)在main线程中创建Zookeeper客户端,这时就会创建两个线程,一个负责网络连接通信(connet),一个负责监听(listener). 3)通过connect线程将注册的监听事件发送给Zookeeper. 4)在Zookeeper的注册监听器列表中将注册的监听事件添加到列表中. 5)Zookeeper监听到有数据或路径变化,就会将这个消息发送给listener线程. 6)listener线程内部调用了process()方法. 2)常

  • SpringCloud Eureka实现服务注册与发现

    前言 Eureka是一种基于REST(具像状态传输)的服务,主要用于AWS云中定位服务,以实现中间层服务器的负载平衡和故障转移.本文记录一个简单的服务注册与发现实例. GitHub地址:https://github.com/Netflix/eureka 官网文档:https://cloud.spring.io/spring-cloud-static/spring-cloud-netflix/2.1.0.RC2/single/spring-cloud-netflix.html Eureka-Ser

  • JavaTCP上传文本文件代码

    基于聊天客户端的基础上的文件(TXT文件)传输 客户端代码: public class UploadClient { public static void main(String[] args) throws UnknownHostException, IOException { // TODO Auto-generated method stub //1,创建socket客户端对象 Socket s = new Socket("localhost",10005); //2,读取本地文

  • Spring Cloud Eureka 服务上下线监控的实现

    之前我们有介绍通过Spring Boot Admin来检测服务的上下线,然后进行通知功能. https://www.jb51.net/article/130943.htm 今天为大家介绍另外一种实现的方式,在Eureka服务中进行检测通知,Eureka中提供了事件监听的方式来支持扩展. EurekaInstanceCanceledEvent 服务下线事件 EurekaInstanceRegisteredEvent 服务注册事件 EurekaInstanceRenewedEvent 服务续约事件

  • 单台Spring Cloud Eureka升级到三台Eureka高可用集群

    概述 由于前段时间,公司业务发展快,接了太多的业务需求了,没有时间把Eureka搞成高可用的,先用一台Eureka应付.当时由于流量还不大,不会出现问题.但是最近一个月,流量逐渐增大,老板担心万一单台Eureka挂了,服务会用不了.让我赶紧升级成3台Eureka,并两两注册,做到高可用.下面就把升级的过程说一下. 未升级前 单台Eureka上,只有购物车这个服务提供方,共两台. 升级步骤 为了描述的方便,线上已经存在的Eureka称之为peer1,新增的两台Eureka分别叫peer2和peer

  • Java五子棋AI实现代码

    思路: ①五子棋界面的实现 ②交互下棋的实现 ③重绘 ④AI,实现人机对战 五子棋和简单AI的实现: 首先将五子棋的界面写出来. 首先我们写一个接口类,定义好棋盘的数据(目的是方便修改). public interface Config { public static final int X0=50;//左上角起点X值 public static final int Y0=50;//左上角起点Y值 public static final int ROWS=15;//横向线数 public sta

  • Zookeeper和Eureka哪个更好?

    Zookeeper和Eureka哪个更好? 1.CAP理论 一个分布式系统不可能同时很好的满足一致性,可用性和分区容错性这三个需求 C:数据一致性:保证所有数据都要同步 A:可用性:要保证任何时候请求数据都能够正常响应 P:分区容错性:当网络通信发生故障时,集群仍然可用,不会因为某个节点挂了或者存在问题,而影响整个系统的正常运作 对于分布式系统来说,出现网络分区是不可避免的,因此分区容错性是必须要具备的,也就是说,CAP三者,P是必须的 2.Zookeeper保证CP原则 当向注册中心查询服务列

  • zookeeper节点类型详解

    1)Znode有两种类型: 短暂(ephemeral):客户端和服务器端断开连接后,创建的节点自己删除 持久(persistent):客户端和服务器端断开连接后,创建的节点不删除 2)Znode有四种形式的目录节点(默认是persistent ) (1)持久化目录节点(PERSISTENT) 客户端与zookeeper断开连接后,该节点依旧存在 (2)持久化顺序编号目录节点(PERSISTENT_SEQUENTIAL) 客户端与zookeeper断开连接后,该节点依旧存在,只是Zookeeper

随机推荐