Ribbon之IPing
发表于:2025-02-02 作者:千家信息网编辑
千家信息网最后更新 2025年02月02日,IPing是Ribbon 框架中,负责检查服务实例是否存活(UP)。IPingpublic interface IPing { // 检查是否存活的接口 public boolean is
千家信息网最后更新 2025年02月02日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安全错误
数据库的锁怎样保障安全
非计算机专业 软件开发
服务器厂家
芝罘区软件开发外包公司
茂名市微来者互联网科技有限公司
虹膜识别技术数据库制作流程图
数据库中的case是什么意思
网络安全在大数据的应用
云服务器主要用途
南平rpa软件开发
新人民银行软件开发中心
mfc更改数据库
网络安全法规定使用信息
vc软件开发报价
web 数据库技术
江阴测试软件开发定做价格
哪个数据库可以检索到期刊论文
湖南常用软件开发单价
手机原神两个服务器
网络安全等级测评推荐
数据库出版收入模式
知网数据库是不是免费数据库
数据库管理员是工程技术人员吗
中学生网络安全教学反思
svn服务器注册管理员
江西正一互联网络科技
华勤主要生产服务器
看电影服务器超时怎么处理
服务器申请管理员
湖北软件开发服务
关系型数据库具体名称