标签:java source iba 浏览器 刷新 代码 清单 接收 end
Springboot: 2.1.8.RELEASE
SpringCloud: Greenwich.SR2
在介绍入门实战之前,先来介绍一下Sentinel。Sentinel控制台提供一个轻量级的开源控制台,它提供机器发现以及健康情况管理、监控(单机和集群),规则管理和推送的功能。
Sentinel控制台主要功能:
Sentinel控制台部署有两种方案:
直接使用官方编译好的Release版本部署启动,下载地址:https://github.com/alibaba/Sentinel/releases ,目前最新版本是v1.6.3,下载sentinel-dashboard-1.6.3.jar
,如图:
可以使用最新版本的源码自行构建Sentinel控制台,首先需要下载控制台工程,下载路径:https://github.com/alibaba/Sentinel/tree/master/sentinel-dashboard ,使用命令mvn clean package
将代码打成jar包即可。
在CentOS中使用如下命令启动Sentinel控制台工程:
注意:启动 Sentinel 控制台需要 JDK 版本为 1.8 及以上版本。
nohup java -Dserver.port=8080 -Dcsp.sentinel.dashboard.server=localhost:8080 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard-1.6.3.jar >sentinel-dashboard.out 2>&1 &
-Dserver.port=8080
用于指定 Sentinel 控制台端口为 8080。启动完成后,使用浏览器访问:http://ip:8080/ ,这时会进入登录页面,从 Sentinel 1.6.0 起,Sentinel 控制台引入基本的登录功能,默认用户名和密码都是sentinel
,如图:
Sentinel Dashboard可以通过如下参数进行配置:
同样也可以直接在Spring的application.properties文件中进行配置。
Sentinel目前已支持Spring Cloud,需要引入spring-boot-starter-web
来触发sentinel-starter中相关的自动配置。
工程依赖pom.xml如下:
代码清单:Alibaba/sentinel-springcloud/pom.xml
***
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${spring-cloud-alibaba.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
spring-cloud-alibaba-dependencies
引入Spring Cloud Alibaba版本控制。spring-cloud-starter-alibaba-sentinel
引入Sentinel组件。
工程依赖pom.xml如下:
代码清单:Alibaba/sentinel-springcloud/web_mvc/pom.xml
***
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
工程配置application.yml如下:
代码清单:Alibaba/sentinel-springcloud/web_mvc/src/main/resources/application.yml
***
server:
port: 8000
spring:
application:
name: web-mvc
cloud:
sentinel:
transport:
dashboard: 192.168.44.129:8080
port: 8719
创建测试接口HelloController.java如下:
代码清单:Alibaba/sentinel-springcloud/web_mvc/src/main/java/com/springcloud/web_mvc/controller/HelloController.java
***
@RestController
public class HelloController {
@GetMapping(value = "/hello")
@SentinelResource("hello")
public String hello() {
return "Hello Web MVC";
}
}
@SentinelResource
注解用来标识资源是否被限流、降级。上述例子上该注解的属性 ‘hello‘ 表示资源名。该注解还有一些其他更精细化的配置,比如忽略某些异常的配置、默认降级函数等等,具体可见如下说明:
注:1.6.0 之前的版本 fallback 函数只针对降级异常(DegradeException)进行处理,不能针对业务异常进行处理。
特别地,若 blockHandler 和 fallback 都进行了配置,则被限流降级而抛出 BlockException 时只会进入 blockHandler 处理逻辑。若未配置 blockHandler、fallback 和 defaultFallback,则被限流降级时会将 BlockException 直接抛出。
启动子工程web_mvc,启动成功后打开浏览器访问:http://localhost:8000/hello ,可以看到页面正常显示Hello Web MVC
,多次刷新后打开Sentinel Dashboard,在Sentinel控制台上已经可以看到我们的web-mvc应用了,如图:
Sentinel目前已经支持WebFlux,需要配合spring-boot-starter-webflux
依赖触发 sentinel-starter中WebFlux相关的自动化配置。具体接入方式如下:
工程依赖pom.xml如下:
代码清单:Alibaba/sentinel-springcloud/web_flux/pom.xml
***
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webflux</artifactId>
</dependency>
spring-boot-starter-webflux
引入WebFlux的相关依赖,Sentinel的依赖已在父工程引入。
代码清单:Alibaba/sentinel-springcloud/web_flux/src/main/resources/application.yml
server:
port: 9000
spring:
application:
name: web-flux
cloud:
sentinel:
transport:
dashboard: 192.168.44.129:8080
port: 8720
代码清单:Alibaba/sentinel-springcloud/web_flux/src/main/java/com/springcloud/web_flux/controller/HelloController.java
***
@RestController
public class HelloController {
@GetMapping("/hello")
@SentinelResource("hello")
public Mono<String> mono() {
return Mono.just("Hello Web Flux")
.transform(new SentinelReactorTransformer<>("resourceName"));
}
}
启动子工程web_flux,打开浏览器访问:http://localhost:9000/hello ,页面正常显示Hello Web Flux
,多次刷新页面后打开Sentinel控制台,可以看到web_flux工程正常注册,测试成功,如图:
Spring Cloud Alibaba | Sentinel:分布式系统的流量防卫兵基础实战
标签:java source iba 浏览器 刷新 代码 清单 接收 end
原文地址:https://www.cnblogs.com/babycomeon/p/11509914.html