Ribbon之IPing
发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,IPing是Ribbon 框架中,负责检查服务实例是否存活(UP)。IPingpublic interface IPing { // 检查是否存活的接口 public boolean is
千家信息网最后更新 2026年11月04日Ribbon之IPing
IPing是Ribbon 框架中,负责检查服务实例是否存活(UP)。
IPing
public interface IPing { // 检查是否存活的接口 public boolean isAlive(Server server);}DummyPing
一个虚设的IPing实现,永远返回true。
public class DummyPing extends AbstractLoadBalancerPing { public DummyPing() { } // 直接返回true public boolean isAlive(Server server) { return true; } @Override public void initWithNiwsConfig(IClientConfig clientConfig) { }}- NoOpPing
什么也不做,直接返回true。
public class NoOpPing implements IPing { @Override public boolean isAlive(Server server) { return true; }}- PingConstant
一个工具类的IPing实现,只要常量参数为true,则表示服务存活,否则都是失效的服务实例。
public class PingConstant implements IPing { boolean constant = true; public void setConstant(String constantStr) { constant = (constantStr != null) && (constantStr.toLowerCase().equals("true")); } public void setConstant(boolean constant) { this.constant = constant; } public boolean getConstant() { return constant; } public boolean isAlive(Server server) { return constant; }}- PingUrl
通过request访问服务返回的状态码来判定服务是否存活。
public class PingUrl implements IPing { public boolean isAlive(Server server) { String urlStr = ""; if (isSecure){ urlStr = "https://"; }else{ urlStr = "http://"; } urlStr += server.getId(); urlStr += getPingAppendString(); boolean isAlive = false; HttpClient httpClient = new DefaultHttpClient(); HttpUriRequest getRequest = new HttpGet(urlStr); String content=null; try { HttpResponse response = httpClient.execute(getRequest); content = EntityUtils.toString(response.getEntity()); isAlive = (response.getStatusLine().getStatusCode() == 200); // 根据状态码和返回的内容来判定服务实例是否有效 if (getExpectedContent()!=null){ LOGGER.debug("content:" + content); if (content == null){ isAlive = false; }else{ if (content.equals(getExpectedContent())){ isAlive = true; }else{ isAlive = false; } } } } catch (IOException e) { e.printStackTrace(); }finally{ // Release the connection. getRequest.abort(); } return isAlive; }}- NIWSDiscoveryPing
通过Eureka来判定服务实例是否存活。
public class NIWSDiscoveryPing extends AbstractLoadBalancerPing { public boolean isAlive(Server server) { boolean isAlive = true; if (server!=null && server instanceof DiscoveryEnabledServer){ DiscoveryEnabledServer dServer = (DiscoveryEnabledServer)server; // 通过Eureka的服务机制来判定服务是否存活 InstanceInfo instanceInfo = dServer.getInstanceInfo(); if (instanceInfo!=null){ InstanceStatus status = instanceInfo.getStatus(); if (status!=null){ isAlive = status.equals(InstanceStatus.UP); } } } return isAlive; }}
服务
实例
状态
检查
有效
内容
参数
工具
常量
接口
机制
框架
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
深圳市人人互联网科技有限公司
互联网是第几次科技革命的成果
科技企业和互联网企业
互联网为科技
美国互联网科技巨头监管
上海互联网科技有限公司
金融科技与互联网金融
齐家互联网科技
睿民互联网科技
互联网科技创新企业排名
湖南洣水互联网科技有限公司扣款
上海电发互联网科技有限公司
科技赋能互联网健康
允成互联网科技有限公司融资
互联网科技和法律行业
用友工业互联网科技发展
上海科技产业互联网平台
珠海东科互联网科技有限公司
中国新注册互联网科技
互联网科技自媒体灵感
互联网科技官网
互联网科技会
金诺互联网科技
中国 科技 互联网
互联网科技小额贷款
来此购互联网科技有限公司
佳云科技和互联网广告
互联网软件和科技
郑州欣桑互联网科技有限公司
互联网领先科技活动