深圳做h5網(wǎng)站設(shè)計(jì)百度關(guān)鍵詞排名批量查詢工具
概述
簡介
Sentinel是阿里開源的項(xiàng)目,提供了流量控制、熔斷降級、系統(tǒng)負(fù)載保護(hù)等多個(gè)維度來保障服務(wù)之間的穩(wěn)定性。
官網(wǎng)
https://sentinelguard.io/zh-cn/
Sentinel的歷史
2012 年,Sentinel 誕生,主要功能為入口流量控制。
2013-2017 年,Sentinel 在阿里巴巴集團(tuán)內(nèi)部迅速發(fā)展,成為基礎(chǔ)技術(shù)模塊,覆蓋了所有的核心場景。
2018 年,Sentinel 開源,并持續(xù)演進(jìn)。
2019 年,Sentinel 朝著多語言擴(kuò)展的方向不斷探索,推出 C++ 原生版本, 同時(shí)針對 Service Mesh 場景也推出了 Envoy 集群流量控制支持,以解決 Service Mesh 架構(gòu)下多語言限流的問題。
2020 年,推出 Sentinel Go 版本,繼續(xù)朝著云原生方向演進(jìn)。
2021 年,Sentinel 正在朝著 2.0 云原生高可用決策中心組件進(jìn)行演進(jìn); 同時(shí)推出了 Sentinel Rust 原生版本。同時(shí)我們也在 Rust 社區(qū)進(jìn)行了 Envoy WASM extension 及 eBPF extension 等場景探索。
2022 年,Sentinel 品牌升級為流量治理,領(lǐng)域涵蓋流量路由/調(diào)度、流量染色、流控降級、過載保護(hù)/實(shí)例摘除等; 同時(shí)社區(qū)將流量治理相關(guān)標(biāo)準(zhǔn)抽出到 OpenSergo 標(biāo)準(zhǔn)中,Sentinel 作為流量治理標(biāo)準(zhǔn)實(shí)現(xiàn)。
特性
1.豐富的應(yīng)用場景:Sentinel 承接了阿里巴巴近 10 年的雙十一大促流量的核心場景, 例如秒殺(即突發(fā)流量控制在系統(tǒng)容量可以承受的范圍)、消息削峰填谷、集群流量控制、實(shí)時(shí)熔斷下游不可用應(yīng)用等。
2.完備的實(shí)時(shí)監(jiān)控:Sentinel 同時(shí)提供實(shí)時(shí)的監(jiān)控功能。您可以在控制臺中看到接入應(yīng)用的單臺機(jī)器秒級數(shù)據(jù),甚至 500 臺以下規(guī)模的集群的匯總運(yùn)行情況。
3.廣泛的開源生態(tài):Sentinel 提供開箱即用的與其它開源框架/庫的整合模塊,例如與 Spring Cloud、Dubbo、gRPC 的整合。
4.完善的SPI擴(kuò)展點(diǎn):Sentinel 提供簡單易用、完善的 SPI 擴(kuò)展接口。您可以通過實(shí)現(xiàn)擴(kuò)展接口來快速地定制邏輯。例如定制規(guī)則管理、適配動態(tài)數(shù)據(jù)源等。
工作原理
1.對主流框架提供適配或者顯示的 API,來定義需要保護(hù)的資源,并提供設(shè)施對資源進(jìn)行實(shí)時(shí)統(tǒng)計(jì)和調(diào)用鏈路分析。
2.根據(jù)預(yù)設(shè)的規(guī)則,結(jié)合對資源的實(shí)時(shí)統(tǒng)計(jì)信息,對流量進(jìn)行控制。同時(shí),Sentinel 提供開放的接口,方便您定義及改變規(guī)則。
3.Sentinel 提供實(shí)時(shí)的監(jiān)控系統(tǒng),方便您快速了解目前系統(tǒng)的狀態(tài)。
使用
1.控制臺(Dashboard):Dashboard主要負(fù)責(zé)管理推送規(guī)則、監(jiān)控、管理機(jī)器信息等。
2.核心庫(Java客戶端):不依賴任何框架/庫,能夠運(yùn)行于Java 8及以上的版本的運(yùn)行時(shí)環(huán)境,同時(shí)對Dubbo/Spring Cloud 等框架也有較好的支持。
服務(wù)端
docker安裝
1.拉取鏡像
docker pull docker.io/bladex/sentinel-dashboard
2.創(chuàng)建啟動容器【自啟動】
docker run --name sentinel --restart=always -d -p 8038:8858 docker.io/bladex/sentinel-dashboard
3.訪問
?
192.168.66.101:8038
賬號密碼【sentinel/sentinel】
客戶端
依賴
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>java_sc_alibaba</artifactId><groupId>jkw.life</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>test-sentinel-8008</artifactId><dependencies><!--sentinel--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId></dependency><!--actuator--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><!-- SpringMVC--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency></dependencies></project>
application.yml
server:port: 8008
spring:application:name: test-sentinel-8008cloud:sentinel:transport:# Sentinel 控制臺地址dashboard: 192.168.66.101:8038
啟動類
package jkw;import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
@Slf4j
public class Main8008 {public static void main(String[] args) {SpringApplication.run(Main8008.class, args);log.info("************Main8008 啟動成功 **********");}
}
測試控制器
package jkw.controller;import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;/*** 測試控制器*/
@RestController
@RequestMapping("/test")
public class TestCon {@GetMapping("/index")public String index() {return "helle sentinel";}
}
測試
發(fā)送一次請求,然后打開Sentinel控制臺就可以看到
http://localhost:8008/test/index
?