91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Ribbon之IPing

發布時間:2020-07-26 15:48:02 來源:網絡 閱讀:2895 作者:乾坤刀 欄目:軟件技術

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

}











向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

璧山县| 邳州市| 阳江市| 凤阳县| 黑河市| 永城市| 通渭县| 台北市| 崇礼县| 永顺县| 大港区| 白银市| 平凉市| 南靖县| 普洱| 沙洋县| 沂源县| 广灵县| 陇川县| 贺兰县| 南康市| 托克逊县| 东明县| 车致| 涟源市| 和硕县| 天津市| 乌审旗| 陵水| 余干县| 桂东县| 通江县| 松原市| 龙口市| 开鲁县| 鄂托克前旗| 涟源市| 梁山县| 巢湖市| 额济纳旗| 乌鲁木齐县|