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指令
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/747b58bd4e4ade7f9917196d0f14b6a5.png#pic_center)
2.3.2 输入java -jar sentinel-dashboard.jar指令 然后回车
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/bc121ce90c687133ed38bb7911f0acf6.png#pic_center)
2.3.3 访问localhost:8080并输入用户密码(均为sentinel),然后点击登录
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/f331a4bafa2f3e8f6ccc9c309abdf003.png#pic_center)
2.3.4 登录后的界面
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/af835a9cdd0e57fb6ae58e5217cc6a4e.png#pic_center)
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 启动用户服务
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/8b72ecfb58aed114d05126cb8004b3de.png#pic_center)
2.6.2 刷新sential控制台界面
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/4b468f6ece5faa0b457898ea95eb9a08.png#pic_center)
2.7 新增流控规则(控制套版本)
2.7.1 点击流控规则➡点击新增流量规则
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/01c0b1cd5cdfe8c9034cc0edf1e872c2.png#pic_center)
2.7.2 编辑流控规则并点击新增按钮
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/0746d92fa7c5186488378b71c55e60d6.png#pic_center)
2.7.3 成功添加流控规则的界面
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/2fac68fe5cd2e519d3a63ee7bd64501d.png#pic_center)
2.8 使用JMeter进行压力测试
2.8.1 添加并编辑线程组
a 添加线程组
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/79d951d50f1897eafe214006809be765.png#pic_center)
b 编辑线程组
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/05df450083cdf0535f89cb344ffccd23.png#pic_center)
2.8.2 在线程组里面添加并编辑HTTP请求
a 添加HTTP请求
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/67594f1a03ff45db0344a842ae66adf5.png#pic_center)
b 编辑HTTP请求
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/f3d6ce5e513859111f4f35a06548ef28.png#pic_center)
2.8.3 在线程组里面添加结果树
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/317600a03babd5eec575f37cab44517b.png#pic_center)
2.8.4 点击绿色运行按钮➡点击no按钮
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/709fe6baff4648b62da9425e54bc515e.png#pic_center)
2.8.5 点击查看结果树,查看流控规则是否生效
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/3d0f9623aaab9eb2a43feaa9437dde8a.png#pic_center)