剔除无效的consul服务

获取无效服务    http://ip:8500/v1/health/state/critical

返回样式:json

[{"Node": "server-xh-1","CheckID": "service:cmp-clue-10235","Name": "Service 'cmp-clue' check","Status": "critical","Notes": "","Output": "Get http://172.16.0.158:18121/actuator/health: dial tcp 172.16.0.158:18121: connect: connection refused","ServiceID": "cmp-clue-10235","ServiceName": "cmp-clue","ServiceTags": ["secure=false"],"Definition": {},"CreateIndex": 942733,"ModifyIndex": 961477},{"Node": "server-xh-1","CheckID": "service:cmp-clue-96450","Name": "Service 'cmp-clue' check","Status": "critical","Notes": "","Output": "Get http://172.16.0.159:18121/actuator/health: dial tcp 172.16.0.159:18121: connect: connection refused","ServiceID": "cmp-clue-96450","ServiceName": "cmp-clue","ServiceTags": ["secure=false"],"Definition": {},"CreateIndex": 934001,"ModifyIndex": 961479}
]

我们需要获取出无效服务的   ServiceID 这个参数

然后进行剔除

剔除方式:  http://ip:8500/v1/agent/service/deregister/+ServiceID 注意的是需要是PUT请求

下面是完整代码

package cn.com.provider.config;import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPut;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;import java.io.IOException;/*** @author 荡漾* @title: ConsuleliminateInvalidServicesMain* @projectName * @description: TODO* @date 2019/10/17  10:43*/
public class ConsuleliminateInvalidServicesMain {public static void main(String[] args) throws Exception {//获取出cosnul中无效服务集合,返回jsonString respStr = doGet("http://ip:8500/v1/health/state/critical");System.out.println(respStr);JSONArray jsonObject = JSONObject.parseArray(respStr);//遍历集合获取出无效服务的serviceIDjsonObject.forEach(object->{JSONObject consul = JSONObject.parseObject(object.toString());String serviceID = consul.getString("ServiceID");//发送剔除请求剔除需要是put请求doPut("http://ip:8500/v1/agent/service/deregister/".concat(serviceID));});}private static String doPut(String url) {// 创建Httpclient对象CloseableHttpClient httpclient = HttpClients.createDefault();String resultString = "";CloseableHttpResponse response = null;try {// 创建http GET请求HttpPut httpGet = new HttpPut(url);// 执行请求response = httpclient.execute(httpGet);// 判断返回状态是否为200if (response.getStatusLine().getStatusCode() == 200) {resultString = EntityUtils.toString(response.getEntity(), "UTF-8");}return resultString;} catch (Exception e) {e.printStackTrace();} finally {try {if (response != null) {response.close();}httpclient.close();} catch (IOException e) {e.printStackTrace();}}return resultString;}public static String doGet(String url ) {// 创建Httpclient对象CloseableHttpClient httpclient = HttpClients.createDefault();String resultString = "";CloseableHttpResponse response = null;try {// 创建uri// 创建http GET请求HttpGet httpGet = new HttpGet(url);// 执行请求response = httpclient.execute(httpGet);// 判断返回状态是否为200if (response.getStatusLine().getStatusCode() == 200) {resultString = EntityUtils.toString(response.getEntity(), "UTF-8");}} catch (Exception e) {e.printStackTrace();} finally {try {if (response != null) {response.close();}httpclient.close();} catch (IOException e) {e.printStackTrace();}}return resultString;}
}

解决

consul剔除无效服务相关推荐

  1. consul删除无效服务

    curl http://server_ip:8500/v1/agent/service/deregister/paas-portal-sit-9003 -X PUT 删除无效服务: paas-port ...

  2. consul+docker实现服务注册

    近期新闻 css宣布支持三角函数 ES10即将来临 基本架构 注册中心: 每个服务提供者向注册中心登记自己的服务,将服务名与主机Ip,端口等一些附加信息告诉注册中心,注册中心按服务名分类组织服务清单. ...

  3. consul重启导致服务必须跟着重启解决方案

    问题:consul作为注册中心和eureka的机制不同. 当微服务启动后首先向注册中心发注册请求,这点两者一致.之后consul在维护可用服务列表时,采用的是主动向微服务发健康检查的接口(也可以配置成 ...

  4. consul报错Error watching Consul CatalogService重启服务解决

    问题 使用的是springcloud系列框架,注册中心开始使用的是eureka,后来要把服务进行监控,于是又多加了一个注册中心consul,把服务另外注册一份到consul注册中心上用于监控,如下是线 ...

  5. 【微服务】Spring-Boot整合Consul (自定义服务配置及健康检查)

    为什么80%的码农都做不了架构师?>>>    目的 上文提到仅使用discovery包自带的注册功能进行服务注册,但是由于监控的是 /health,使用actuator实现自由度不 ...

  6. 基于consul实现微服务的服务发现和负载均衡

    一. 背景 随着2018年年初国务院办公厅联合多个部委共同发布了<国务院办公厅关于促进"互联网+医疗健康"发展的意见(国办发[2018]26号)>,国内医疗IT领域又迎 ...

  7. Consul与外部服务

    HashiCorp Consul是一个服务网格,用于服务发现.运行时配置和微服务应用程序和基础设施的服务分割.Consul允许注册和发现"内部"服务到您的基础设施,以及" ...

  8. spss数据预处理步骤_数据处理之剔除无效问卷

    我们都知道在数据分析前,首先需要对数据进行预处理,检查数据中是否含有存在无效样本.异常值等.如果同一样本中存在大量漏填数据或相似答案过多的情况这样的样本都应该算作无效样本来处理. 无效样本的常见使用场 ...

  9. Swoft 2.x 微服务基础(Consul、RPC 服务发现、限流与熔断器)

    本篇概要: 1. Swoft 服务注册与发现: 1.1 Consul 概况: 1.2 在 Consul 注册服务.反注册: 1.2.1 注册服务: 1.2.2 反注册: 1.3 健康检查: 1.4 服 ...

  10. .Net Core 商城微服务项目系列(二):使用Ocelot + Consul构建具备服务注册和发现功能的网关...

    1.服务注册 在上一篇的鉴权和登录服务中分别通过NuGet引用Consul这个包,同时新增AppBuilderExtensions类: public static class AppBuilderEx ...

最新文章

  1. CF912D Fishes 期望
  2. 聊下并发和Tomcat线程数(Updated)
  3. .net WCF简单实例
  4. 截图如何能截到鼠标?脑洞小方法
  5. mysql 命令记录_mysql命令记录 - 我要五个字的个人空间 - OSCHINA - 中文开源技术交流社区...
  6. STM32F4+Wi-Fi+EDP 向 OneNet 上传数据
  7. 主机不支持php5.4,GoDaddy Linux主机不再支持PHP5.3版本 | Godaddy美国主机中文指南
  8. oracle链接失去联系,[Oracle报错]ORA-03135: connection lost contact.
  9. android菜单动画,利用 android studio 制作一个菜单动画
  10. 机房收费系统重构版:照葫芦画瓢
  11. java编程实现食堂饭卡刷卡_食堂饭卡管理系统设计方案报告.docx
  12. 常用命令详解-Net命令
  13. 数学建模多元分析实例
  14. 88家上市公司区块链分布图:七成拓展落地应用 互联网公司善于底层基础
  15. C++ | (struct)结构体变量作为函数参数调用的方法小结
  16. 开机启动时间计算机,Windows系统更改开机启动时间三种方法
  17. 初等变换和阶梯矩阵【】
  18. IP地址中的网络地址和主机地址分别是什么意思
  19. 1.23英文题面翻译
  20. JavaScript Navigator

热门文章

  1. Kafka-安装和使用
  2. 日语——动词的各种变形
  3. GROMACS Tutorial 3-Umbrella Sampling
  4. 满腔热诚永不忘,我以我血荐轩辕!
  5. Google 101 Tips
  6. 邮件个性签名html,iphone发邮件添加个性签名方法
  7. python read_csv chunk_Python chunk读取超大文件
  8. Ansys2020r2 提示The requested data is not available.The ETABLE command is ignored
  9. 微信小程序音频功能开发实(cai)践(keng)
  10. 如何取消文件关联,恢复文件默认的图标,最简单的办法!!!!!