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;
    }

}

当前题目:Ribbon之IPing
网站网址:https://www.cdcxhl.com/article8/jhddop.html

成都网站建设公司_创新互联,为您提供网站营销网站维护外贸网站建设服务器托管网页设计公司企业建站

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

手机网站建设