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

溫馨提示×

溫馨提示×

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

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

如何實現Zuul的容錯回退與高可用

發布時間:2021-12-29 14:07:01 來源:億速云 閱讀:144 作者:小新 欄目:軟件技術

這篇文章主要介紹如何實現Zuul的容錯回退與高可用,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

zuul的容錯與回退

之前說到過,使用Hystrix實現微服務的容錯與回退,其實Zuul默認已經整合了Hystrix,使用起來也是比較簡單:

在原有 zuul-gateway 項目的基礎上新增,實現ZuulFallbackProvider接口,并實現getRoute和fallbackResponse方法。

import com.google.gson.Gson;
import com.simons.cn.util.CommonEnum;
import com.simons.cn.util.CommonResult;
import org.springframework.cloud.netflix.zuul.filters.route.ZuulFallbackProvider;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.client.ClientHttpResponse;
import org.springframework.stereotype.Component;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.Charset;
 
@Component
public class UserProviderZuulFallBack implements ZuulFallbackProvider {
 
    private static final String USER_PROVIDER_SERVICE = "user-provider";
 
    @Override
    public String getRoute() {
        return USER_PROVIDER_SERVICE; //返回你需要為哪個微服務提供回退
    }
 
    @Override
    public ClientHttpResponse fallbackResponse() {
        return new ClientHttpResponse() {
            /**
             * 返回Http狀態碼標識
             */
            @Override
            public HttpStatus getStatusCode() throws IOException {
                return HttpStatus.OK;
            }
 
            /**
             * 返回Http狀態碼對應數字:200,詳見HttpStatus
             */
            @Override
            public int getRawStatusCode() throws IOException {
                return 200;
            }
 
            /**
             *返回Http狀態碼對應中譯:OK,詳見HttpStatus
             */
            @Override
            public String getStatusText() throws IOException {
                return HttpStatus.OK.getReasonPhrase();
            }
 
            @Override
            public void close() {
 
            }
 
            /**
             *body響應體
             */
            @Override
            public InputStream getBody() throws IOException {
                String message = new Gson().toJson(CommonResult.success(CommonEnum.SERVICE_NOT_AVAILABLE.getCode(), CommonEnum.SERVICE_NOT_AVAILABLE.getMessage()));
                return new ByteArrayInputStream(message.getBytes("UTF-8"));
            }
 
            /**
             * 設置HttpHeaders
             */
            @Override
            public HttpHeaders getHeaders() {
                HttpHeaders headers = new HttpHeaders();
                //    MediaType mediaType = new MediaType("application/json;charset=utf-8");  //這是錯誤寫法
                MediaType mediaType = new MediaType("application", "json", Charset.forName("utf-8"));
                headers.setContentType(mediaType);
                return headers;
            }
        };
    }
}

CommonEnum中的枚舉(部分):

SERVICE_NOT_AVAILABLE("5001","當前服務不可用,請稍后重試!"),

測試:

啟動zuul-gateway項目和user-provider-eureka、discovery-eureka三個項目,瀏覽器訪問http://localhost:10010/user/getuserinfo?name=jack,效果如圖:

如何實現Zuul的容錯回退與高可用

關閉user-provider-eureka服務,再訪問http://localhost:10010/user/getuserinfo?name=jack,效果如圖:

如何實現Zuul的容錯回退與高可用

可以看到,當用戶微服務不可用時候,默認返回了自定義的json。

zuul的高可用策略

一、如果Zuul也注冊到了服務發現組件Eureka上,那么zuul就已經實現了高可用配置,這種情況和普通的服務消費者和提供者的高可用是一致的;

二、若zuul未注冊到Eureka上,則可以通過Nginx/HAProxy等負載均衡器來將請求分配到zuul的其中一個節點;這點更多的還是負載均衡器的配置。例如nginx的:

如何實現Zuul的容錯回退與高可用

以上是“如何實現Zuul的容錯回退與高可用”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

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

AI

五峰| 新营市| 隆安县| 河曲县| 鹤庆县| 通山县| 光泽县| 宣武区| 渝中区| 平邑县| 云安县| 长治县| 延津县| 南部县| 玛多县| 朝阳县| 龙游县| 临泉县| 永丰县| 夏津县| 滁州市| 尤溪县| 开封县| 丹阳市| 灵石县| 阿勒泰市| 高清| 耒阳市| 滦平县| 潞西市| 上杭县| 育儿| 长沙市| 义马市| 泾源县| 溆浦县| 和平区| 莱阳市| 名山县| 清涧县| 赤峰市|