Sentinel實現介面限流並用Nacos儲存規則

2021-10-23 08:59:51 字數 1545 閱讀 5077

官網介紹:sentinel以「流量」為切入點,在流量控制,斷路和負載保護等多個領域開展工作,以保護服務可靠性

sentinel dashboard的使用:

應用搭建

新增pom

org.springframework.cloud

spring-cloud-starter-alibaba-sentinel

新增配置

spring.cloud.sentinel.transport.dashboard=localhost:8080
測試類,這裡用到了nacos配置中心,沒看的夥伴可以看nacos實現配置中心

@restcontroller

@refreshscope

public class testnacoscontroller ")

private string name; //從nacos的配置中心獲取值

public string hello()

}

然後在sentinel 中設定關於/config 的相關限流規則

qps:每秒允許訪問次數

單機閾值:1次

含義為:每秒可以訪問介面/config 1次

測試:http://localhost:8011/config

當在1秒內訪問的次數超過1次時,將會報上面的錯。

但是細心的夥伴將會發現,當sentinel重新啟動時,sentinel dashboard中原來的資料將會全部消失,這樣就需要重新定義限流規則,無疑是不可取的。

可以將sentinel中定義的限流規則儲存到配置中心裡面。具體的實現方法如下:

新增pom

com.alibaba.csp

sentinel-datasource-nacos

1.5.2

spring:

cloud:

sentinel:

transport:

dashboard: 127.0.0.1:8080

datasource:

ds:nacos:

### nacos連線位址

server-addr: 127.0.0.1:8848

## nacos連線的分組

group-id: default_group

###路由儲存規則

rule-type: flow

### 讀取配置檔案的 data-id

data-id: member-sentinal

### 讀取培訓檔案型別為json

data-type: json

sentinel服務限流

一 qps限流 直接拒絕方式是預設的流量控制方式,當qps超過任意規則的閾值後,新的請求就會被立即拒絕,拒絕方式為丟擲flowexception 二 warm up warm up方式,即預熱 冷啟動方式。當系統長期處於低水位的情況下,當流量突然增加時,直接把系統拉公升到高水位可能瞬間把系統壓垮。通...

sentinel限流中介軟體原理

sentinel 專門為這種場景提供了勻速器的特性,可以把突然到來的大量請求以勻速的形式均攤,以固定的間隔時間讓請求通過,以穩定的速度逐步處理這些請求,起到 削峰填谷 的效果,從而避免流量突刺造成系統負載過高。同時堆積的請求將會排隊,逐步進行處理 當請求排隊預計超過最大超時時長的時候則直接拒絕,而不...

介面限流演算法

在開發高併發系統時,有三把利器來保護系統 快取 降級和限流。下面來看看限流量的一些演算法 1.計數器法 它是限流演算法中最簡單最容易的一種演算法,比如我們要求某乙個介面,1分鐘內的請求不能超過10次,我們可以在開始時設定乙個計數器,每次請求,該計數器 1 如果該計數器的值大於10並且與第一次請求的時...