一、需要
在咱们我的项目公布的时候,如果咱们的注册核心应用的是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