一、需要
在咱们我的项目公布的时候,如果咱们的注册核心应用的是eureka
,当咱们有多个服务实例,在公布某个服务的时候心愿达到平滑的公布,不要在服务的调用过程中呈现谬误。
eg:
比方:咱们的商品服务有2个,咱们公布的时候,先发实例A,在发实例B。 假如咱们要先发 A 实例,如果A实例曾经有正在解决的申请,要失常解决实现,当A实例齐全没有流量进入时,在关掉A实例,重启A实例。
二、实现步骤
1、应用 eureka 的 rest api 查问服务列表
发送GET
申请,拜访/eureka/apps
curl --location --request GET 'http://localhost:8761/eureka/apps' \--header 'Accept: Application/json' \--header 'User-Agent: apifox/1.0.0 (https://www.apifox.cn)'
2、应用 eureka 的 rest api 将 服务的状态标记为DOWN
。
> 此时只是将要下线的服务标记为down了,然而这个服务并没有关掉,还是能够对外提供服务的。 > 在下个eureka client 拉取eureka server 上可用的服务列表时,不会拉取 down 的服务。 > 此时可能须要期待肯定的工夫(eureka.client.registry-fetch-interval-second=30 + 肯定的业务解决工夫) 后执行下方的步骤3,保障这台机器上的工作都执行完,没有外来的流量流入就能够关掉服务了。 > 不必再去执行 DELETE /appId/instanceId 这个申请,将这个服务从eureka server上下调,如果解决的慢的话,可能这个服务在下个心跳的时候会再次注册到 eureka server 上。
发送 PUT
申请,拜访 /eureka/apps/appId/instanceId/status?value=DOWN
。
- appId 见上图的appId
- instanceId 见上图的instanceId
- value=[DOWN | UP]
DOWN
标记服务不可用,UP
标记服务可用。
curl --location --request PUT 'http://localhost:8761/eureka/apps/PRODUCT-PROVIDER/product-provider:192.168.0.85:8083/status?value=DOWN' \--header 'Accept: Application/json' \--header 'User-Agent: apifox/1.0.0 (https://www.apifox.cn)'
3、失常敞开服务、启动服务
敞开: kill -15 pid
启动: java -jar xxx.java 等等
三、 eureka rest api
四、参考链接
1、https://github.com/Netflix/eureka/wiki/Eureka-REST-operations