最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringCloud Zuul實(shí)現(xiàn)負(fù)載均衡和熔斷機(jī)制方式

 更新時(shí)間:2021年07月05日 09:04:19   作者:淺然言而信  
這篇文章主要介紹了SpringCloud Zuul實(shí)現(xiàn)負(fù)載均衡和熔斷機(jī)制方式,具有很好的參考價(jià)值,希望對大家有所幫助。

一、場景

筆者就Zuul網(wǎng)關(guān)下實(shí)現(xiàn)其負(fù)載均衡與熔斷機(jī)制(雪崩)進(jìn)行實(shí)踐,前提是已經(jīng)導(dǎo)入zuul相關(guān)依賴

springboot版本:1.5.9.RELEASE

springcloud版本:Dalston.SR5

<dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-zuul</artifactId>
        </dependency>
        <dependency>
            <groupId>com.netflix.zuul</groupId>
            <artifactId>zuul-core</artifactId>
            <version>1.3.0</version>
        </dependency>
</dependencies>

二、場景實(shí)現(xiàn)

1、在網(wǎng)關(guān)的配置文件中配置ribbon(負(fù)載均衡)和hystrix(熔斷機(jī)制)

#熔斷機(jī)制
hystrix:
  command:
    default:
      execution:
        isolation:
          thread:
            timeoutInMilliseconds: 6000
 
#負(fù)載均衡
ribbon:
  ConnectionTimeout: 500
  ReadTimeout: 2000
#端口
server:
  port: 8080
spring:
  #該配置文件中的配置,對應(yīng)的服務(wù)名稱是wc-gateway
  application:
    name: wc-gateway
  profiles:
    active: dev
#服務(wù)網(wǎng)關(guān)配置
zuul:
  host:
    connect-timeout-millis: 60000
    socket-timeout-millis: 60000
  #路由規(guī)則
  routes:
    api:
      path: /api/user/**
      serviceId: wc-client-user

其實(shí)ribbon的真實(shí)值=(ConnectionTimeout+ReadTimeout)*2,該值最好小于hystrix的timeoutInMilliseconds的值,因?yàn)槿绻笥谄渲禃?huì)失去負(fù)載均衡(ribbon)的重試機(jī)會(huì),而直接熔斷

2、驗(yàn)證負(fù)載均衡

因?yàn)閦uul下自帶了hystrix,ribbon相關(guān)jar包,所有現(xiàn)在已經(jīng)實(shí)現(xiàn)了負(fù)載均衡和熔斷機(jī)制,接下來進(jìn)行驗(yàn)證

在client服務(wù)下編寫controller,測試負(fù)載均衡

package top.wingcloud.controller; 
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
 
/**
 * @author: linjie
 * @description: 用戶服務(wù)請求處理控制器
 * @create: 2018/11/06 09:16
 */
@RestController
public class UserController {
    @Value("${server.port}")
    private int port; 
    @RequestMapping("index")
    public String index(){
        return "Hello World!"+port;
    }
}

依次啟動(dòng)注冊中心、配置中心、client服務(wù)、修改端口再次啟動(dòng)client服務(wù)、服務(wù)網(wǎng)關(guān)

根據(jù)網(wǎng)關(guān)的路由,訪問同一個(gè)路由,發(fā)現(xiàn)啟動(dòng)的兩個(gè)不同端口的client服務(wù)交替執(zhí)行

出現(xiàn)該情況即實(shí)現(xiàn)了負(fù)載均衡

3、驗(yàn)證熔斷機(jī)制

在網(wǎng)關(guān)服務(wù)中需要寫ZuulFallbackProvider的實(shí)現(xiàn)類

package top.wingcloud.filter; 
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;
 
/**
 * @author: linjie
 * @description:錯(cuò)誤攔截回顯,熔斷
 * @create: 2018/10/11 20:01
 */
@Component
public class ApiFallbackProvider implements ZuulFallbackProvider{
 
    @Override
    public String getRoute() {
        //設(shè)置熔斷的服務(wù)名
        //如果是所有服務(wù)則設(shè)置為*
        return "wc-client-user";
    }
 
    @Override
    public ClientHttpResponse fallbackResponse() {
        return new ClientHttpResponse() {
            @Override
            public HttpStatus getStatusCode() throws IOException {
                return HttpStatus.OK;
            }
 
            @Override
            public int getRawStatusCode() throws IOException {
                return 200;
            }
 
            @Override
            public String getStatusText() throws IOException {
                return "{code:0,message:service error =_=}";
            }
 
            @Override
            public void close() {
 
            }
 
            @Override
            public InputStream getBody() throws IOException {
                return new ByteArrayInputStream(getStatusText().getBytes());
            }
 
            @Override
            public HttpHeaders getHeaders() {
                HttpHeaders headers = new HttpHeaders();
                headers.setContentType(MediaType.APPLICATION_JSON);
                return headers;
            }
        };
    }
}

這個(gè)時(shí)候關(guān)閉client所有服務(wù),再次訪問之前的網(wǎng)關(guān)路由

出現(xiàn)了getStatusText()中的提示,即實(shí)現(xiàn)了熔斷機(jī)制

好了,zuul下的負(fù)載均衡和熔斷已經(jīng)實(shí)現(xiàn)!

zuul網(wǎng)關(guān)配置+限流熔斷

被調(diào)方:延時(shí)600ms

在這里插入圖片描述

ahas:

在這里插入圖片描述

user限流:

在這里插入圖片描述

trade熔斷:(3秒內(nèi)請求數(shù)>4)&&(3s內(nèi)慢調(diào)用/請求數(shù)>50%) -》》開啟熔斷

慢調(diào)用標(biāo)準(zhǔn):響應(yīng)時(shí)間大于500ms

在這里插入圖片描述

20個(gè)請求測試:

在這里插入圖片描述

測試限流:

在這里插入圖片描述

測試限流和rt熔斷

在這里插入圖片描述

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Spring Eureka 未授權(quán)訪問漏洞修復(fù)問題小結(jié)

    Spring Eureka 未授權(quán)訪問漏洞修復(fù)問題小結(jié)

    項(xiàng)目組使用的 Spring Boot 比較老,是 1.5.4.RELEASE ,最近被檢測出 Spring Eureka 未授權(quán)訪問漏洞,這篇文章主要介紹了Spring Eureka 未授權(quán)訪問漏洞修復(fù)問題小結(jié),需要的朋友可以參考下
    2024-04-04
  • SpringBoot結(jié)合JWT登錄權(quán)限控制的實(shí)現(xiàn)

    SpringBoot結(jié)合JWT登錄權(quán)限控制的實(shí)現(xiàn)

    本文主要介紹了SpringBoot結(jié)合JWT登錄權(quán)限控制的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • java實(shí)現(xiàn)銀行ATM管理系統(tǒng)

    java實(shí)現(xiàn)銀行ATM管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)銀行ATM管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • Java處理Markdown格式轉(zhuǎn)換為Word文檔

    Java處理Markdown格式轉(zhuǎn)換為Word文檔

    這篇文章主要為大家詳細(xì)介紹了如何使用Java實(shí)現(xiàn)處理Markdown格式轉(zhuǎn)換為Word文檔,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以參考一下
    2025-03-03
  • Springboot Websocket Stomp 消息訂閱推送

    Springboot Websocket Stomp 消息訂閱推送

    本文主要介紹了Springboot Websocket Stomp 消息訂閱推送,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-07-07
  • Java實(shí)現(xiàn)消消樂中的消除功能

    Java實(shí)現(xiàn)消消樂中的消除功能

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)消消樂中的消除功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • restTemplate超時(shí)處理的策略方案

    restTemplate超時(shí)處理的策略方案

    這篇文章主要為大家介紹了restTemplate超時(shí)處理的策略方案,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • 詳解Springboot 優(yōu)雅停止服務(wù)的幾種方法

    詳解Springboot 優(yōu)雅停止服務(wù)的幾種方法

    這篇文章主要介紹了詳解Springboot 優(yōu)雅停止服務(wù)的幾種方法 ,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • Spring Boot與Kotlin 整合全文搜索引擎Elasticsearch的示例代碼

    Spring Boot與Kotlin 整合全文搜索引擎Elasticsearch的示例代碼

    本篇文章主要介紹了Spring Boot與Kotlin 整合全文搜索引擎Elasticsearch的示例代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • Java后臺(tái)如何處理日期參數(shù)格式

    Java后臺(tái)如何處理日期參數(shù)格式

    這篇文章主要介紹了Java后臺(tái)如何處理日期參數(shù)格式問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07

最新評論

英德市| 茶陵县| 广宗县| 晋中市| 贵港市| 安化县| 康平县| 陆川县| 桃园县| 光山县| 台北县| 通州区| 定襄县| 庐江县| 大荔县| 五寨县| 平谷区| 临漳县| 玉田县| 房产| 普安县| 乌鲁木齐市| 彭州市| 观塘区| 茂名市| 铁岭市| 牟定县| 五峰| 渑池县| 长白| 灵璧县| 福州市| 婺源县| 若羌县| 安福县| 虎林市| 泰安市| 江安县| 灵丘县| 大荔县| 宁南县|