Ribbon之IPing
发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,IPing是Ribbon 框架中,负责检查服务实例是否存活(UP)。IPingpublic interface IPing { // 检查是否存活的接口 public boolean is
千家信息网最后更新 2025年12月03日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安全错误
数据库的锁怎样保障安全
完善网络安全技术体系
宝塔打不开数据库显示502
大连市网络安全宣传活动
软件开发远程工作
学生网络安全使用问卷调查
服务器的状态
nas和个人服务器选哪个
软件开发公司的编程
云函数添加对象到数据库
中誉互联网科技有限公司
华为服务器南宁
如何查看当前数据库的时间
网络营销数据库的特点
数学英语不好能学软件开发吗
梦幻2022各服务器金价
数据库中权限的作用
网络安全验收标准
苏州小众软件开发
mr技术混合现实软件开发
增强网络安全意识重要性
网络安全法治宣传版面
云南省计算机软件开发中心
数据库IP多少
第五届上海网络安全
广州人工智能软件开发哪家好
word tools数据库
什么时候需要网络安全认证
服务器开机不显示
网络安全党组会议题请示
sam数据库安全防护需求