项目架构如下:
项目搭建
参考:【SpringCloud】Spring Cloud Alibaba 之 Sentinel哨兵介绍入门(二十九)
1、搭建一个Nacos服务
参考项目搭建,用于做项目的注册中心及配置中心,并启动
2、搭建一个Sentinel控制台
参考项目搭建,并启动
3、搭建2个nacos-payment-provider服务
参考项目搭建,springcloud-provider-sentinel-payment9003 和 springcloud-provider-sentinel-payment9004 项目
项目中PaymentController,如下:
1 @RestController 2 public class PaymentController { 3 @Value("${server.port}") 4 private String serverPort; 5 6 public static HashMap<Long, Payment> hashMap = new HashMap<Long, Payment>(); 7 8 static { 9 hashMap.put(1L, new Payment(1L, "aaaaaa")); 10 hashMap.put(2L, new Payment(2L, "bbbbbb")); 11 hashMap.put(3L, new Payment(3L, "cccccc")); 12 } 13 14 @GetMapping(value = "/paymentSQL/{id}") 15 public CommonResult<Payment> paymentSQL(@PathVariable("id") Long id) { 16 Payment payment = hashMap.get(id); 17 CommonResult<Payment> result = new CommonResult<Payment>(200, "from server port : " + serverPort, payment); 18 return result; 19 } 20 }
项目中有2个实体类,CommonResult实体类如下:
1 @Data 2 @AllArgsConstructor 3 @NoArgsConstructor 4 public class CommonResult<T> { 5 6 private int code; 7 private String msg; 8 private T data; 9 10 public CommonResult(int code, String msg) { 11 this.code = code; 12 this.msg = msg; 13 } 14 }
Payment实体类
1 @Data 2 @AllArgsConstructor 3 @NoArgsConstructor 4 public class Payment { 5 private Long id; 6 private String serial; 7 }
然后分别启动2个服务
3、搭建1个springcloud-consumer-sentinel-order7994服务(调用者)
a、pom文件如下:
1 <?xml version="1.0" encoding="UTF-8"?> 2 <project xmlns="http://maven.apache.org/POM/4.0.0" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 5 <parent> 6 <artifactId>test-springcloud</artifactId> 7 <groupId>com.test</groupId> 8 <version>1.0-SNAPSHOT</version> 9 </parent> 10 <modelVersion>4.0.0</modelVersion> 11 12 <artifactId>springcloud-consumer-sentinel-order7994</artifactId> 13 14 <dependencies> 15 16 <!-- alibaba nacos sentinel --> 17 <dependency> 18 <groupId>com.alibaba.cloud</groupId> 19 <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId> 20 <version>2.2.1.RELEASE</version> 21 <exclusions> 22 <exclusion> 23 <groupId>com.fasterxml.jackson.dataformat</groupId> 24 <artifactId>jackson-dataformat-xml</artifactId> 25 </exclusion> 26 </exclusions> 27 </dependency> 28 29 <!-- alibaba nacos --> 30 <dependency> 31 <groupId>com.alibaba.cloud</groupId> 32 <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> 33 </dependency> 34 35 <!-- openfeign --> 36 <dependency> 37 <groupId>org.springframework.cloud</groupId> 38 <artifactId>spring-cloud-starter-openfeign</artifactId> 39 </dependency> 40 41 <!-- spring boot --> 42 <dependency> 43 <groupId>org.springframework.boot</groupId> 44 <artifactId>spring-boot-starter-web</artifactId> 45 </dependency> 46 <dependency> 47 <groupId>org.springframework.boot</groupId> 48 <artifactId>spring-boot-starter-actuator</artifactId> 49 </dependency> 50 <dependency> 51 <groupId>org.springframework.boot</groupId> 52 <artifactId>spring-boot-devtools</artifactId> 53 <scope>runtime</scope> 54 <optional>true</optional> 55 </dependency> 56 <dependency> 57 <groupId>org.projectlombok</groupId> 58 <artifactId>lombok</artifactId> 59 <optional>true</optional> 60 </dependency> 61 <dependency> 62 <groupId>org.springframework.boot</groupId> 63 <artifactId>spring-boot-starter-test</artifactId> 64 <scope>test</scope> 65 </dependency> 66 67 </dependencies> 68 </project>