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

Springcloud sentinel安裝和使用方法解析

 更新時間:2020年12月07日 08:40:26   作者:夢澤千秋  
這篇文章主要介紹了Springcloud sentinel安裝和使用方法解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

作為阿里版的hystrix,sentinel簡化了配置方式,提供了可視化界面網(wǎng)站和便捷的配置方式,更加貼合實際的使用方式,各種優(yōu)點使得sentinel成為服務降級熔斷流控等的最佳選擇。

1.安裝啟用

https://github.com/alibaba/Sentinel/releases

官網(wǎng)選擇合適的版本下載,其本體是jar文件。

java -jar sentinel-dashboard-1.7.2.jar

由于下載的安裝包是jar,所以直接在cmd中啟動即可。

登錄地址默認是localhost:8080,賬號密碼都是sentinel,第一次進入界面會是空白,且只有訪問過應用一遍,界面內才會出現(xiàn)對應的應用程序的信息。

2.配置應用項目連接sentinel。

1)配置pom文件

<dependencies>
    <!-- SpringCloud ailibaba nacos-->
    <dependency>
      <groupId>com.alibaba.cloud</groupId>
      <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    </dependency>
    <!-- SpringCloud ailibaba sentinel-datasource-nacos 持久化需要用到-->
    <dependency>
      <groupId>com.alibaba.csp</groupId>
      <artifactId>sentinel-datasource-nacos</artifactId>
    </dependency>
    <!-- SpringCloud ailibaba sentinel-->
    <dependency>
      <groupId>com.alibaba.cloud</groupId>
      <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
    </dependency>
    <dependency>
      <groupId>com.bai</groupId>
      <artifactId>cloud-api-common</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-openfeign</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!--監(jiān)控-->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    <!--熱部署-->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-devtools</artifactId>
      <scope>runtime</scope>
      <optional>true</optional>
    </dependency>
    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <optional>true</optional>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <scope>test</scope>
    </dependency>
  </dependencies>

2)配置yml

server:
 port: 8401

spring:
 application:
  name: cloudalibaba-sentinal-service
 cloud:
  nacos:
   discovery:
    #Nacos服務注冊中心地址
    server-addr: localhost:8848
  sentinel:
   transport:
    #配置Sentin dashboard地址
    dashboard: localhost:8080
    # 默認8719端口,假如被占用了會自動從8719端口+1進行掃描,直到找到未被占用的 端口
    port: 8719
   datasource:  #配置流控規(guī)則持久化
    ds1:
     nacos:
      server-addr: localhost:8848
      dataId: cloudalibaba-sentinel-service
      groupId: DEFAULT_GROUP
      data-type: json
      rule-type: flow
management:
 endpoints:
  web:
   exposure:
    include: '*'

3)啟動類常規(guī)配置

@SpringBootApplication
@EnableDiscoveryClient
public class SentinelMain8401 {
  public static void main(String[] args) {
    SpringApplication.run(SentinelMain8401.class,args);
  }
}

4)controller測試

@RestController
@Slf4j
public class FlowLimitController {

  @GetMapping(value = "/testA")
  public String testA(){
    return "******this is A";
  }
  @GetMapping(value = "/testB")
  public String testB(){
    log.info(Thread.currentThread().getName()+"\t"+"***testB");
    return "******this is B";
  }
  @GetMapping(value = "/testD")
  public String testD(){
    /* try {
      TimeUnit.SECONDS.sleep(1);
    } catch (InterruptedException e) {
      e.printStackTrace();
    }
    log.info("this is testD RT");*/
    int a=10/0;
    log.info("this is testD 異常比例");
    return "!!!!!TESTD";
  }@GetMapping(value = "/testE")
  public String testE(){
    int a=10/0;
    log.info("this is testE 異常數(shù)");
    return "!!!!!TESTE";
  }

  @GetMapping(value = "/hotkey")
  @SentinelResource(value = "hotkey",blockHandler = "hotkeyhandler")
  public String hotkey(@RequestParam(value = "p1",required = false)String p1,
             @RequestParam(value = "p2",required = false)String p2){
    return ">>>>>>hotkey is ready";
  }
  public String hotkeyhandler(String p1, String p2, BlockException exception){
    return ".....hotkey is failed o(╥﹏╥)o";
  }

}

3.常規(guī)使用

1)流控規(guī)則

點擊主頁面的流控規(guī)則選擇新增規(guī)則

資源名,自己要訪問方法的地址

閾值類型,QPS指一秒內通過的訪問量,線程數(shù)則是啟用多少個線程來訪問同一個資源。

單機閾值,例如寫1,選QPS那么一秒內多于1次訪問testA就會進行流量控制,強制報錯,線程同理。

流控模式,直接則是遇到閾值就直接失敗且默認,關聯(lián)則是可以在一個資源上關聯(lián)另一個資源,當資源訪問量超過閾值就會強制停止另一個資源進行控制。

流控效果,快速失敗是默認,warm up 是為了避免系統(tǒng)突然一段時間內進行了高并發(fā)的情況,對閾值進行限制,分為一段段的增長,最終達到閾值。排隊等待即訪問量過來根據(jù)規(guī)則一個個通過。

2)降級規(guī)則

區(qū)別于hystrix,sentinel通過網(wǎng)頁可以配置三種降級策略。

RT:建議去查看官網(wǎng),有明確的限定規(guī)則,即1秒內5次以上訪問,且平均訪問時間不得超過4900,如若超過以上限制就會進行降級處理。

異常比例:一定時間內錯誤達到一定比例就會觸發(fā)降級。

異常數(shù):一定時間內錯誤達到一定數(shù)就會觸發(fā)降級。(以上配置需要嚴格遵守官網(wǎng)標準)

3.熱點規(guī)則

熱點規(guī)則是為了對方法中的某一個參數(shù)進行限流控制,可以精確到特定的參數(shù),而且可以對指定的變量進行額外的控制。

熱點規(guī)則只支持QPS,需要配合sentinelresource注解

@SentinelResource(value = "hotkey",blockHandler = "hotkeyhandler")

blockhandler為熱點限定的方法出現(xiàn)錯誤的時候兜底的另一個方法。避免出現(xiàn)錯誤時候使用的系統(tǒng)自帶的頁面,可以控制想要出現(xiàn)的信息。

public String hotkeyhandler(String p1, String p2, BlockException exception){
    return ".....hotkey is failed o(╥﹏╥)o";
  }

4.系統(tǒng)規(guī)則

系統(tǒng)規(guī)則可以為整個應用加上層限制,最先進行判斷,如果超過規(guī)定的閾值,就會觸發(fā)降級規(guī)則,出現(xiàn)錯誤頁面提示。

5.接口形式兜底方法。

@GetMapping(value = "/byhander")
  @SentinelResource(value = "byhander",blockHandlerClass = Myhander.class,blockHandler = "byhander1")
  public CommonResult byhander(){
    return new CommonResult(200,"成功訪問到URL",new PayMent(21L,"999"));
  }

hander接口

public class Myhander {
  public static CommonResult byhander1(BlockException exception){
    return new CommonResult(400,"訪問失敗了"+exception.getClass().getCanonicalName()+"這里是hander1");
  }
  public static CommonResult byhander2(BlockException exception){
    return new CommonResult(400,"訪問失敗了"+exception.getClass().getCanonicalName()+"這里是hander2");
  }
}

選擇什么樣的兜底方法,如果進行報錯的話,就會選擇對應的方法名稱。

本篇所有代碼均在GitHub:

https://github.com/MaTsukun/springcloud2020

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • Java實現(xiàn)發(fā)送郵件并攜帶附件

    Java實現(xiàn)發(fā)送郵件并攜帶附件

    這篇文章主要為大家詳細介紹了Java實現(xiàn)發(fā)送郵件并攜帶附件,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • spring boot 錯誤頁面配置解決方案

    spring boot 錯誤頁面配置解決方案

    這篇文章主要介紹了spring boot 錯誤頁面配置解決方案,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-10-10
  • 使用SpringBoot讀取Windows共享文件的代碼示例

    使用SpringBoot讀取Windows共享文件的代碼示例

    在現(xiàn)代企業(yè)環(huán)境中,文件共享是一個常見的需求,Windows共享文件夾(SMB/CIFS協(xié)議)因其易用性和廣泛的兼容性,成為了許多企業(yè)的首選,在Java應用中,尤其是使用Spring Boot框架時,如何讀取Windows共享文件是一個值得探討的話題,本文介紹了使用SpringBoot讀取Windows共享文件
    2024-11-11
  • java中的Io(input與output)操作總結(二)

    java中的Io(input與output)操作總結(二)

    這一節(jié)我們來討論關于文件自身的操作包括:創(chuàng)建文件對象、創(chuàng)建和刪除文件、文件的判斷和測試、創(chuàng)建目錄、獲取文件信息、列出文件系統(tǒng)的根目錄、列出目錄下的所有文件,等等,感興趣的朋友可以了解下
    2013-01-01
  • 解決FastJson中

    解決FastJson中"$ref重復引用"的問題方法

    這篇文章主要介紹了解決FastJson中"$ref重復引用"的問題方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-11-11
  • 利用Java實現(xiàn)天氣預報播報功能

    利用Java實現(xiàn)天氣預報播報功能

    這篇文章主要為大家介紹了如何利用Java語言實現(xiàn)天氣預報播報功能,文中的示例代碼講解詳細,對我們學習Java有一定的幫助,需要的可以參考一下
    2022-06-06
  • Java模擬死鎖發(fā)生之演繹哲學家進餐問題案例詳解

    Java模擬死鎖發(fā)生之演繹哲學家進餐問題案例詳解

    這篇文章主要介紹了Java模擬死鎖發(fā)生之演繹哲學家進餐問題,結合具體演繹哲學家進餐問題的案例形式詳細分析了死鎖機制與原理,需要的朋友可以參考下
    2019-10-10
  • java將圖片分割為幾個部分示例

    java將圖片分割為幾個部分示例

    這篇文章主要介紹了java將圖片分割為幾個部分示例,需要的朋友可以參考下
    2014-04-04
  • Spring security實現(xiàn)對賬戶進行加密

    Spring security實現(xiàn)對賬戶進行加密

    這篇文章主要介紹了Spring security實現(xiàn)對賬戶進行加密,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-03-03
  • Java連接Redis報錯:NoSuchElementException: Unable to validate object的解決辦法

    Java連接Redis報錯:NoSuchElementException: Unable to&nb

    這篇文章主要介紹了Java連接Redis報錯:NoSuchElementException: Unable to validate object的解決辦法,文中通過圖文講解的非常詳細,具有一定的參考價值,需要的朋友可以參考下
    2024-12-12

最新評論

茂名市| 历史| 勃利县| 江阴市| 宣城市| 防城港市| 灵武市| 大渡口区| 绥化市| 科尔| 措勤县| 宜春市| 苏尼特右旗| 胶州市| 泗水县| 岐山县| 定陶县| 宿迁市| 青河县| 鲁山县| 米林县| 乌拉特中旗| 饶阳县| 寻乌县| 肥城市| 浠水县| 乐昌市| 原阳县| 余庆县| 宜君县| 综艺| 手机| 临夏市| 武功县| 长阳| 子洲县| 威信县| 巴塘县| 翁源县| 改则县| 武邑县|