Spring Cloud(微服务)学习篇(六)
2 Sentinel实现流量规则(控制台版)
2.1 变更pom.xml(shop-user-server项目)代码
2.1.1 加入如下依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
2.1.2 完整的pom.xml文件内容
<?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>shop-user</artifactId>
<groupId>com.zlz</groupId>
<version>1.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>shop-user-server</artifactId>
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>com.zlz</groupId>
<artifactId>shop-sms-api</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
</dependencies>
</project>
2.2 在controller包(shop-user-server项目)下面创建SentinelController类
package com.zlz.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class SentinelController {
int count=0;
@RequestMapping("find")
public String find(){
count++;
System.out.println("进入用户查询方法");
return "查询用户:"+count;
}
}
2.3 启动Sentinel项目
2.3.1 找到Sentinel控制台jar包的位置按下cmd指令
2.3.2 输入java -jar sentinel-dashboard.jar指令 然后回车
2.3.3 访问localhost:8080并输入用户密码(均为sentinel),然后点击登录
2.3.4 登录后的界面
2.4 更新application.yml(sho-user-server)内容
2.4.1 加入的代码
sentinel:
eager: true #是否一启动就加载到控制台
transport:
dashboard: 127.0.0.1:8080 #sentinel控制台地址
2.4.2 完整的application.yml的代码
server:
port: 8010 #801开头 表示用户集群 用户服务
spring:
application:
name: shop-user #项目名称 作为微服务名
cloud:
nacos:
server-addr: 127.0.0.1:8848 #注册中心地址
config:
server-addr: 127.0.0.1:8848 #配置中心地址
sentinel:
eager: true #是否一启动就加载到控制台
transport:
dashboard: 127.0.0.1:8080 #sentinel控制台地址
profiles:
active: dev #环境,不写读取的就是无环境配置文件 如shop-user.properties,加了啥就会读取啥
2.5 更新SentinelController代码
2.5.1 在find方法上面加上如下注解
@SentinelResource("find") //指定资源名称,和下面requestMapping中的地址是一样的
2.5.2 完整的SentinelController代码
package com.zlz.controller;
import com.alibaba.csp.sentinel.annotation.SentinelResource;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class SentinelController {
int count=0;
@SentinelResource("find")
@RequestMapping("find")
public String find(){
count++;
System.out.println("进入用户查询方法");
return "查询用户:"+count;
}
}
2.6 启动端口为8010的用户服务并刷新Sential控制台界面
2.6.1 启动用户服务
2.6.2 刷新sential控制台界面
2.7 新增流控规则(控制套版本)
2.7.1 点击流控规则➡点击新增流量规则
2.7.2 编辑流控规则并点击新增按钮
2.7.3 成功添加流控规则的界面
2.8 使用JMeter进行压力测试
2.8.1 添加并编辑线程组
a 添加线程组
b 编辑线程组
2.8.2 在线程组里面添加并编辑HTTP请求
a 添加HTTP请求
b 编辑HTTP请求
2.8.3 在线程组里面添加结果树
2.8.4 点击绿色运行按钮➡点击no按钮
2.8.5 点击查看结果树,查看流控规则是否生效