diff --git a/.gitignore b/.gitignore
index 1df5423129c113c047c3f80363560c31c9c83c2a..d946272376825e7018b1a5e2c2b3dee852dbbfe5 100644
--- a/.gitignore
+++ b/.gitignore
@@ -135,4 +135,8 @@ cloud-stream-consumer-rabbitmq8802/target/
cloud-stream-consumer-rabbitmq8803/target/
cloudalibaba-config-nacos-client3377/target/
cloudalibaba-provider-nacos-payment9001/target/
-cloudalibaba-provider-nacos-payment9002/target/
\ No newline at end of file
+cloudalibaba-provider-nacos-payment9002/target/
+cloudalibaba-provider-nacos-payment9003/target/
+cloudalibaba-provider-nacos-payment9004/target/
+cloudalibaba-sentinel-service8401/target/
+cloudalibaba-consumer-nacos-order84/target/
\ No newline at end of file
diff --git a/cloudalibaba-consumer-nacos-order84/pom.xml b/cloudalibaba-consumer-nacos-order84/pom.xml
new file mode 100644
index 0000000000000000000000000000000000000000..014f379d8e1dcc739e663669deb605b4932fc8e1
--- /dev/null
+++ b/cloudalibaba-consumer-nacos-order84/pom.xml
@@ -0,0 +1,70 @@
+
+
+
+ 2020SpringCloud
+ com.lcry
+ 1.0-SNAPSHOT
+
+ 4.0.0
+
+
+ cloudalibaba-consumer-nacos-order84
+
+
+
+ org.springframework.cloud
+ spring-cloud-starter-openfeign
+
+
+
+ com.alibaba.csp
+ sentinel-datasource-nacos
+
+
+
+ com.alibaba.cloud
+ spring-cloud-starter-alibaba-nacos-discovery
+
+
+
+ com.alibaba.cloud
+ spring-cloud-starter-alibaba-sentinel
+
+
+
+ com.lcry
+ cloud-api-commons
+ ${project.version}
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+ org.springframework.boot
+ spring-boot-starter-actuator
+
+
+
+ org.springframework.boot
+ spring-boot-devtools
+ runtime
+ true
+
+
+ org.projectlombok
+ lombok
+ true
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+
+
+
\ No newline at end of file
diff --git a/cloudalibaba-consumer-nacos-order84/src/main/java/com/lcry/springcloudalibaba/NacosOrderMain84.java b/cloudalibaba-consumer-nacos-order84/src/main/java/com/lcry/springcloudalibaba/NacosOrderMain84.java
new file mode 100644
index 0000000000000000000000000000000000000000..1b1d0c44e6133c1566004acd89e4c3b29d9c8115
--- /dev/null
+++ b/cloudalibaba-consumer-nacos-order84/src/main/java/com/lcry/springcloudalibaba/NacosOrderMain84.java
@@ -0,0 +1,21 @@
+package com.lcry.springcloudalibaba;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
+import org.springframework.cloud.openfeign.EnableFeignClients;
+
+/**
+ * NacosOrderMain84
+ *
+ * @author lcry
+ * @date 2020/03/17 16:16
+ */
+@EnableDiscoveryClient
+@SpringBootApplication
+@EnableFeignClients //整合feign
+public class NacosOrderMain84 {
+ public static void main(String[] args) {
+ SpringApplication.run(NacosOrderMain84.class, args);
+ }
+}
diff --git a/cloudalibaba-consumer-nacos-order84/src/main/java/com/lcry/springcloudalibaba/config/ApplicationContextConfig.java b/cloudalibaba-consumer-nacos-order84/src/main/java/com/lcry/springcloudalibaba/config/ApplicationContextConfig.java
new file mode 100644
index 0000000000000000000000000000000000000000..0e5d52a8e64dc241422d37eee94eeb3e6050db63
--- /dev/null
+++ b/cloudalibaba-consumer-nacos-order84/src/main/java/com/lcry/springcloudalibaba/config/ApplicationContextConfig.java
@@ -0,0 +1,20 @@
+package com.lcry.springcloudalibaba.config;
+
+import org.springframework.cloud.client.loadbalancer.LoadBalanced;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.client.RestTemplate;
+
+/**
+ * 配置RestTemplate
+ */
+@Configuration
+public class ApplicationContextConfig
+{
+ @Bean
+ @LoadBalanced
+ public RestTemplate getRestTemplate()
+ {
+ return new RestTemplate();
+ }
+}
diff --git a/cloudalibaba-consumer-nacos-order84/src/main/java/com/lcry/springcloudalibaba/controller/CircleBreakerController.java b/cloudalibaba-consumer-nacos-order84/src/main/java/com/lcry/springcloudalibaba/controller/CircleBreakerController.java
new file mode 100644
index 0000000000000000000000000000000000000000..2cb4b5c95f9dbf93526b08d7ded9750993ee57ff
--- /dev/null
+++ b/cloudalibaba-consumer-nacos-order84/src/main/java/com/lcry/springcloudalibaba/controller/CircleBreakerController.java
@@ -0,0 +1,91 @@
+package com.lcry.springcloudalibaba.controller;
+
+import com.alibaba.csp.sentinel.annotation.SentinelResource;
+import com.alibaba.csp.sentinel.slots.block.BlockException;
+import com.lcry.springcloud.entities.CommonResult;
+import com.lcry.springcloud.entities.Payment;
+import com.lcry.springcloudalibaba.myhandler.CustomerBlockHandler;
+import com.lcry.springcloudalibaba.service.PaymentService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.client.RestTemplate;
+
+import javax.annotation.Resource;
+
+/**
+ * CircleBreakerController
+ *
+ * @author lcry
+ * @date 2020/03/17 16:18
+ * 使用示例:
+ */
+@RestController
+@Slf4j
+public class CircleBreakerController {
+ public static final String SERVICE_URL = "http://nacos-payment-provider";
+
+ // 整个rabbin - restTemplate
+ @Resource
+ private RestTemplate restTemplate;
+
+ // 整合sentinel
+ @RequestMapping("/consumer/fallback/{id}")
+ //@SentinelResource(value = "fallback") //没有配置
+ //@SentinelResource(value = "fallback",fallback = "handlerFallback") //fallback只负责业务异常
+ //@SentinelResource(value = "fallback",blockHandler = "blockHandler") //blockHandler只负责sentinel控制台配置违规
+// @SentinelResource(value = "fallback",fallback = "handlerFallback",blockHandler = "blockHandler", //分开自定义
+// exceptionsToIgnore = {IllegalArgumentException.class}//排除异常不限流
+// )
+ @SentinelResource(value = "fallback", //,fallback = "handlerFallback",
+ blockHandlerClass = CustomerBlockHandler.class, //异常自定义
+ blockHandler = "handlerException1" //分开自定义
+ )
+ public CommonResult fallback(@PathVariable Long id) {
+ CommonResult result = restTemplate.getForObject(SERVICE_URL + "/paymentSQL/" + id, CommonResult.class, id);
+
+ if (id == 4) {
+ throw new IllegalArgumentException("IllegalArgumentException,非法参数异常....");
+ } else if (result.getData() == null) {
+ throw new NullPointerException("NullPointerException,该ID没有对应记录,空指针异常");
+ }
+
+ return result;
+ }
+
+ //本例是fallback
+ public CommonResult handlerFallback(@PathVariable Long id, Throwable e) {
+ Payment payment = new Payment(id, "null");
+ return new CommonResult<>(444, "兜底异常handlerFallback,exception内容 " + e.getMessage(), payment);
+ }
+
+ //本例是blockHandler
+ public CommonResult blockHandler(@PathVariable Long id, BlockException blockException) {
+ Payment payment = new Payment(id, "null");
+ return new CommonResult<>(445, "blockHandler-sentinel限流,无此流水: blockException " + blockException.getMessage(), payment);
+ }
+
+ //OpenFeign调用
+ @Resource
+ private PaymentService paymentService;
+
+ @GetMapping(value = "/consumer/paymentSQL/{id}")
+ public CommonResult paymentSQL(@PathVariable("id") Long id) {
+ return paymentService.paymentSQL(id);
+ }
+
+
+ /*
+ 测试自定义限流
+ */
+ @GetMapping(value = "/consumer/paymentSQL")
+ @SentinelResource(value = "customerBlockHandler", //资源名称
+ blockHandlerClass = CustomerBlockHandler.class, //异常自定义
+ blockHandler = "handlerException1") //调用自定义类某个方法
+ public CommonResult paymentSQL2() {
+ return paymentService.paymentSQL(1L);
+ }
+}
+
diff --git a/cloudalibaba-consumer-nacos-order84/src/main/java/com/lcry/springcloudalibaba/myhandler/CustomerBlockHandler.java b/cloudalibaba-consumer-nacos-order84/src/main/java/com/lcry/springcloudalibaba/myhandler/CustomerBlockHandler.java
new file mode 100644
index 0000000000000000000000000000000000000000..150b4d8943d8facb92500ba04781d99c3ca27c9d
--- /dev/null
+++ b/cloudalibaba-consumer-nacos-order84/src/main/java/com/lcry/springcloudalibaba/myhandler/CustomerBlockHandler.java
@@ -0,0 +1,19 @@
+package com.lcry.springcloudalibaba.myhandler;
+
+import com.alibaba.csp.sentinel.slots.block.BlockException;
+import com.lcry.springcloud.entities.CommonResult;
+
+/**
+ * @author lcry
+ * @date 2020/03/17 14:51
+ * 用户自定义处理异常类
+ */
+public class CustomerBlockHandler {
+ public static CommonResult handlerException1(BlockException exception) {
+ return new CommonResult(4444, "按客戶自定义,global handlerException----1");
+ }
+
+ public static CommonResult handlerException2(BlockException exception) {
+ return new CommonResult(4444, "按客戶自定义,global handlerException----2");
+ }
+}
diff --git a/cloudalibaba-consumer-nacos-order84/src/main/java/com/lcry/springcloudalibaba/service/PaymentFallbackService.java b/cloudalibaba-consumer-nacos-order84/src/main/java/com/lcry/springcloudalibaba/service/PaymentFallbackService.java
new file mode 100644
index 0000000000000000000000000000000000000000..cced8abea788db9c3f5a8c5a09438fa21cd2da89
--- /dev/null
+++ b/cloudalibaba-consumer-nacos-order84/src/main/java/com/lcry/springcloudalibaba/service/PaymentFallbackService.java
@@ -0,0 +1,18 @@
+package com.lcry.springcloudalibaba.service;
+
+import com.lcry.springcloud.entities.CommonResult;
+import com.lcry.springcloud.entities.Payment;
+import org.springframework.stereotype.Component;
+
+/**
+ * @author lcry
+ * @date 2020/03/17 15:59
+ * Openfeign降级调用本方法
+ */
+@Component
+public class PaymentFallbackService implements PaymentService {
+ @Override
+ public CommonResult paymentSQL(Long id) {
+ return new CommonResult<>(44444, "服务降级返回,---PaymentFallbackService", new Payment(id, "errorSerial"));
+ }
+}
diff --git a/cloudalibaba-consumer-nacos-order84/src/main/java/com/lcry/springcloudalibaba/service/PaymentService.java b/cloudalibaba-consumer-nacos-order84/src/main/java/com/lcry/springcloudalibaba/service/PaymentService.java
new file mode 100644
index 0000000000000000000000000000000000000000..57800d4204defa331dc3e3d3501fa4ead5238664
--- /dev/null
+++ b/cloudalibaba-consumer-nacos-order84/src/main/java/com/lcry/springcloudalibaba/service/PaymentService.java
@@ -0,0 +1,21 @@
+package com.lcry.springcloudalibaba.service;
+
+
+import com.lcry.springcloud.entities.CommonResult;
+import com.lcry.springcloud.entities.Payment;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+
+/**
+ * @author lcry
+ * @date 2020/03/17 15:59
+ */
+//openfeign调用nacos-payment-provider服务
+@FeignClient(value = "nacos-payment-provider",
+// 降级处理的方法
+ fallback = PaymentFallbackService.class)
+public interface PaymentService {
+ @GetMapping(value = "/paymentSQL/{id}")
+ public CommonResult paymentSQL(@PathVariable("id") Long id);
+}
diff --git a/cloudalibaba-consumer-nacos-order84/src/main/resources/application.yml b/cloudalibaba-consumer-nacos-order84/src/main/resources/application.yml
new file mode 100644
index 0000000000000000000000000000000000000000..71f0e7b7250c1a3e4fe52abaa244881b74083211
--- /dev/null
+++ b/cloudalibaba-consumer-nacos-order84/src/main/resources/application.yml
@@ -0,0 +1,46 @@
+server:
+ port: 84
+
+spring:
+ application:
+ name: nacos-order-consumer
+ cloud:
+ nacos:
+ discovery:
+ server-addr: localhost:8848
+ sentinel:
+ transport:
+ #配置Sentinel dashboard地址
+ dashboard: localhost:8080
+ #默认8719端口,假如被占用会自动从8719开始依次+1扫描,直至找到未被占用的端口
+ port: 8719
+ #sentinel持久化配置
+ datasource:
+ ds1:
+ nacos:
+ server-addr: localhost:8848
+ dataId: ${spring.application.name} #nacos-order-consumer
+ groupId: DEFAULT_GROUP
+ data-type: json
+ rule-type: flow
+# 持久化nacos需要写入下面配置内容
+# [
+# {
+# "resource": "/hello", //资源名称
+# "limitApp": "default", //限流应用名称
+# "grade": 1,
+# "count": 5,
+# "strategy": 0,
+# "controlBehavior": 0,
+# "clusterMode": false //单台模式
+# }
+# ]
+
+#消费者将要去访问的微服务名称(注册成功进nacos的微服务提供者)
+service-url:
+ nacos-user-service: http://nacos-payment-provider
+
+# 激活Sentinel对Feign的支持
+feign:
+ sentinel:
+ enabled: true
\ No newline at end of file
diff --git a/cloudalibaba-provider-nacos-payment9003/pom.xml b/cloudalibaba-provider-nacos-payment9003/pom.xml
new file mode 100644
index 0000000000000000000000000000000000000000..714ea5562c06c33ac61cb48c38f2cedddf1159e3
--- /dev/null
+++ b/cloudalibaba-provider-nacos-payment9003/pom.xml
@@ -0,0 +1,58 @@
+
+
+
+ 2020SpringCloud
+ com.lcry
+ 1.0-SNAPSHOT
+
+ 4.0.0
+
+
+ cloudalibaba-provider-nacos-payment9003
+
+
+
+
+ com.alibaba.cloud
+ spring-cloud-starter-alibaba-nacos-discovery
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+
+ com.lcry
+ cloud-api-commons
+ ${project.version}
+
+
+ org.springframework.boot
+ spring-boot-starter-actuator
+
+
+
+ org.springframework.boot
+ spring-boot-devtools
+ runtime
+ true
+
+
+ org.projectlombok
+ lombok
+ true
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+ org.springframework.cloud
+ spring-cloud-openfeign-core
+
+
+
\ No newline at end of file
diff --git a/cloudalibaba-provider-nacos-payment9003/src/main/java/com/lcry/springcloudalibaba/NacosPaymentMain9003.java b/cloudalibaba-provider-nacos-payment9003/src/main/java/com/lcry/springcloudalibaba/NacosPaymentMain9003.java
new file mode 100644
index 0000000000000000000000000000000000000000..bb5dbe64b78f24750a8c60ca5dc5b94b695e4dc2
--- /dev/null
+++ b/cloudalibaba-provider-nacos-payment9003/src/main/java/com/lcry/springcloudalibaba/NacosPaymentMain9003.java
@@ -0,0 +1,20 @@
+package com.lcry.springcloudalibaba;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
+
+/**
+ * NacosPaymentMain9003
+ *
+ * @author lcry
+ * @date 2020/03/17 15:58
+ */
+@EnableDiscoveryClient
+@SpringBootApplication
+public class NacosPaymentMain9003 {
+ public static void main(String[] args) {
+ SpringApplication.run(NacosPaymentMain9003.class, args);
+ }
+
+}
diff --git a/cloudalibaba-provider-nacos-payment9003/src/main/java/com/lcry/springcloudalibaba/controller/PaymentController.java b/cloudalibaba-provider-nacos-payment9003/src/main/java/com/lcry/springcloudalibaba/controller/PaymentController.java
new file mode 100644
index 0000000000000000000000000000000000000000..6b6879fce711c8b2fb218f6b14eb77c2a1ac3d00
--- /dev/null
+++ b/cloudalibaba-provider-nacos-payment9003/src/main/java/com/lcry/springcloudalibaba/controller/PaymentController.java
@@ -0,0 +1,38 @@
+package com.lcry.springcloudalibaba.controller;
+
+import com.lcry.springcloud.entities.CommonResult;
+import com.lcry.springcloud.entities.Payment;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.HashMap;
+
+/**
+ * PaymentController
+ *
+ * @author lcry
+ * @date 2020/03/17 15:59
+ * 服务方模拟查询数据库
+ */
+@RestController
+public class PaymentController {
+ @Value("${server.port}")
+ private String serverPort;
+
+ public static HashMap hashMap = new HashMap<>();
+
+ static {
+ hashMap.put(1L, new Payment(1L, "28a8c1e3bc2742d8848569891fb42181"));
+ hashMap.put(2L, new Payment(2L, "bba8c1e3bc2742d8848569891ac32182"));
+ hashMap.put(3L, new Payment(3L, "6ua8c1e3bc2742d8848569891xt92183"));
+ }
+
+ @GetMapping(value = "/paymentSQL/{id}")
+ public CommonResult paymentSQL(@PathVariable("id") Long id) {
+ Payment payment = hashMap.get(id);
+ CommonResult result = new CommonResult(200, "from mysql,serverPort: " + serverPort, payment);
+ return result;
+ }
+}
diff --git a/cloudalibaba-provider-nacos-payment9003/src/main/resources/application.yml b/cloudalibaba-provider-nacos-payment9003/src/main/resources/application.yml
new file mode 100644
index 0000000000000000000000000000000000000000..775849af9c39e6868834d1088be222a4c0a6ca49
--- /dev/null
+++ b/cloudalibaba-provider-nacos-payment9003/src/main/resources/application.yml
@@ -0,0 +1,16 @@
+server:
+ port: 9003
+
+spring:
+ application:
+ name: nacos-payment-provider
+ cloud:
+ nacos:
+ discovery:
+ server-addr: localhost:8848 #配置Nacos地址
+
+management:
+ endpoints:
+ web:
+ exposure:
+ include: '*'
\ No newline at end of file
diff --git a/cloudalibaba-provider-nacos-payment9004/pom.xml b/cloudalibaba-provider-nacos-payment9004/pom.xml
new file mode 100644
index 0000000000000000000000000000000000000000..05ba301dabc0059a7a66c2710e9320bd2843e942
--- /dev/null
+++ b/cloudalibaba-provider-nacos-payment9004/pom.xml
@@ -0,0 +1,56 @@
+
+
+
+ 2020SpringCloud
+ com.lcry
+ 1.0-SNAPSHOT
+
+ 4.0.0
+
+
+ cloudalibaba-provider-nacos-payment9004
+
+
+
+
+ com.alibaba.cloud
+ spring-cloud-starter-alibaba-nacos-discovery
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+
+ com.lcry
+ cloud-api-commons
+ ${project.version}
+
+
+ org.springframework.boot
+ spring-boot-starter-actuator
+
+
+
+ org.springframework.boot
+ spring-boot-devtools
+ runtime
+ true
+
+
+ org.projectlombok
+ lombok
+ true
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+
+
+
\ No newline at end of file
diff --git a/cloudalibaba-provider-nacos-payment9004/src/main/java/com/lcry/springcloudalibaba/NacosPaymentMain9004.java b/cloudalibaba-provider-nacos-payment9004/src/main/java/com/lcry/springcloudalibaba/NacosPaymentMain9004.java
new file mode 100644
index 0000000000000000000000000000000000000000..370aee4bd3855e33f709fb0dfe523e3e3ebc713d
--- /dev/null
+++ b/cloudalibaba-provider-nacos-payment9004/src/main/java/com/lcry/springcloudalibaba/NacosPaymentMain9004.java
@@ -0,0 +1,20 @@
+package com.lcry.springcloudalibaba;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
+
+/**
+ * NacosPaymentMain9004
+ *
+ * @author lcry
+ * @date 2020/03/17 15:58
+ */
+@EnableDiscoveryClient
+@SpringBootApplication
+public class NacosPaymentMain9004 {
+ public static void main(String[] args) {
+ SpringApplication.run(NacosPaymentMain9004.class, args);
+ }
+
+}
diff --git a/cloudalibaba-provider-nacos-payment9004/src/main/java/com/lcry/springcloudalibaba/controller/PaymentController.java b/cloudalibaba-provider-nacos-payment9004/src/main/java/com/lcry/springcloudalibaba/controller/PaymentController.java
new file mode 100644
index 0000000000000000000000000000000000000000..6b6879fce711c8b2fb218f6b14eb77c2a1ac3d00
--- /dev/null
+++ b/cloudalibaba-provider-nacos-payment9004/src/main/java/com/lcry/springcloudalibaba/controller/PaymentController.java
@@ -0,0 +1,38 @@
+package com.lcry.springcloudalibaba.controller;
+
+import com.lcry.springcloud.entities.CommonResult;
+import com.lcry.springcloud.entities.Payment;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.HashMap;
+
+/**
+ * PaymentController
+ *
+ * @author lcry
+ * @date 2020/03/17 15:59
+ * 服务方模拟查询数据库
+ */
+@RestController
+public class PaymentController {
+ @Value("${server.port}")
+ private String serverPort;
+
+ public static HashMap hashMap = new HashMap<>();
+
+ static {
+ hashMap.put(1L, new Payment(1L, "28a8c1e3bc2742d8848569891fb42181"));
+ hashMap.put(2L, new Payment(2L, "bba8c1e3bc2742d8848569891ac32182"));
+ hashMap.put(3L, new Payment(3L, "6ua8c1e3bc2742d8848569891xt92183"));
+ }
+
+ @GetMapping(value = "/paymentSQL/{id}")
+ public CommonResult paymentSQL(@PathVariable("id") Long id) {
+ Payment payment = hashMap.get(id);
+ CommonResult result = new CommonResult(200, "from mysql,serverPort: " + serverPort, payment);
+ return result;
+ }
+}
diff --git a/cloudalibaba-provider-nacos-payment9004/src/main/resources/application.yml b/cloudalibaba-provider-nacos-payment9004/src/main/resources/application.yml
new file mode 100644
index 0000000000000000000000000000000000000000..079b128d746beeb0eb0b9cab282743e0d802d155
--- /dev/null
+++ b/cloudalibaba-provider-nacos-payment9004/src/main/resources/application.yml
@@ -0,0 +1,16 @@
+server:
+ port: 9004
+
+spring:
+ application:
+ name: nacos-payment-provider
+ cloud:
+ nacos:
+ discovery:
+ server-addr: localhost:8848 #配置Nacos地址
+
+management:
+ endpoints:
+ web:
+ exposure:
+ include: '*'
\ No newline at end of file
diff --git a/cloudalibaba-sentinel-service8401/pom.xml b/cloudalibaba-sentinel-service8401/pom.xml
new file mode 100644
index 0000000000000000000000000000000000000000..f519a414e5eabfb58d53d87b423400f5be173e1c
--- /dev/null
+++ b/cloudalibaba-sentinel-service8401/pom.xml
@@ -0,0 +1,76 @@
+
+
+
+ 2020SpringCloud
+ com.lcry
+ 1.0-SNAPSHOT
+
+ 4.0.0
+
+ cloudalibaba-sentinel-service8401
+
+
+
+
+
+ com.alibaba.cloud
+ spring-cloud-starter-alibaba-nacos-discovery
+
+
+
+ com.alibaba.csp
+ sentinel-datasource-nacos
+
+
+
+ com.alibaba.cloud
+ spring-cloud-starter-alibaba-sentinel
+
+
+
+ org.springframework.cloud
+ spring-cloud-starter-openfeign
+
+
+
+ com.lcry
+ cloud-api-commons
+ ${project.version}
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+ org.springframework.boot
+ spring-boot-starter-actuator
+
+
+
+ org.springframework.boot
+ spring-boot-devtools
+ runtime
+ true
+
+
+ cn.hutool
+ hutool-all
+ 4.6.3
+
+
+ org.projectlombok
+ lombok
+ true
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+
+
+
\ No newline at end of file
diff --git a/cloudalibaba-sentinel-service8401/src/main/java/com/lcry/springcloudalibaba/SentinelServiceMain8401.java b/cloudalibaba-sentinel-service8401/src/main/java/com/lcry/springcloudalibaba/SentinelServiceMain8401.java
new file mode 100644
index 0000000000000000000000000000000000000000..62d5e31221bec2b9a5082981debf165f0dedfbc5
--- /dev/null
+++ b/cloudalibaba-sentinel-service8401/src/main/java/com/lcry/springcloudalibaba/SentinelServiceMain8401.java
@@ -0,0 +1,20 @@
+package com.lcry.springcloudalibaba;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
+
+/**
+ * SentinelServiceMain8401
+ *
+ * @author lcry
+ * @date 2020/03/17 14:51
+ * 测试Sentinel限流和熔断
+ */
+@EnableDiscoveryClient
+@SpringBootApplication
+public class SentinelServiceMain8401 {
+ public static void main(String[] args) {
+ SpringApplication.run(SentinelServiceMain8401.class, args);
+ }
+}
\ No newline at end of file
diff --git a/cloudalibaba-sentinel-service8401/src/main/java/com/lcry/springcloudalibaba/controller/FlowLimitController.java b/cloudalibaba-sentinel-service8401/src/main/java/com/lcry/springcloudalibaba/controller/FlowLimitController.java
new file mode 100644
index 0000000000000000000000000000000000000000..54ffd0201b69e72dc07610b96a2d413dce0019a2
--- /dev/null
+++ b/cloudalibaba-sentinel-service8401/src/main/java/com/lcry/springcloudalibaba/controller/FlowLimitController.java
@@ -0,0 +1,67 @@
+package com.lcry.springcloudalibaba.controller;
+
+import com.alibaba.csp.sentinel.annotation.SentinelResource;
+import com.alibaba.csp.sentinel.slots.block.BlockException;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.concurrent.TimeUnit;
+
+/**
+ * @author lcry
+ * @date 2020/03/17 14:51
+ * 路径限流测试
+ */
+@RestController
+@Slf4j
+public class FlowLimitController {
+ @GetMapping("/testA")
+ public String testA() {
+ return "------testA";
+ }
+
+ @GetMapping("/testB")
+ public String testB() {
+ log.info(Thread.currentThread().getName() + "\t" + "...testB");
+ return "------testB";
+ }
+
+
+ @GetMapping("/testD")
+ public String testD() {
+// try {
+// TimeUnit.SECONDS.sleep(1);
+// } catch (InterruptedException e) {
+// e.printStackTrace();
+// }
+// log.info("testD 测试RT");
+
+ log.info("testD 异常比例");
+ int age = 10 / 0;
+ return "------testD";
+ }
+
+ @GetMapping("/testE")
+ public String testE() {
+ log.info("testE 测试异常数");
+ int age = 10 / 0;
+ return "------testE 测试异常数";
+ }
+
+ @GetMapping("/testHotKey")
+ @SentinelResource(value = "testHotKey", blockHandler = "deal_testHotKey")
+ public String testHotKey(@RequestParam(value = "p1", required = false) String p1,
+ @RequestParam(value = "p2", required = false) String p2) {
+ //int age = 10/0;
+ return "------testHotKey";
+ }
+
+ public String deal_testHotKey(String p1, String p2, BlockException exception) {
+ //sentinel系统默认的提示:Blocked by Sentinel (flow limiting)
+ return "------deal_testHotKey,o(╥﹏╥)o";
+
+ }
+
+}
diff --git a/cloudalibaba-sentinel-service8401/src/main/java/com/lcry/springcloudalibaba/controller/RateLimitController.java b/cloudalibaba-sentinel-service8401/src/main/java/com/lcry/springcloudalibaba/controller/RateLimitController.java
new file mode 100644
index 0000000000000000000000000000000000000000..169275b60473eff09743456bca7bd4988410cccc
--- /dev/null
+++ b/cloudalibaba-sentinel-service8401/src/main/java/com/lcry/springcloudalibaba/controller/RateLimitController.java
@@ -0,0 +1,42 @@
+package com.lcry.springcloudalibaba.controller;
+
+import com.alibaba.csp.sentinel.annotation.SentinelResource;
+import com.alibaba.csp.sentinel.slots.block.BlockException;
+import com.lcry.springcloud.entities.CommonResult;
+import com.lcry.springcloud.entities.Payment;
+import com.lcry.springcloudalibaba.myhandler.CustomerBlockHandler;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @author lcry
+ * @date 2020/03/17 14:51
+ * 测试资源限流
+ */
+@RestController
+public class RateLimitController {
+ @GetMapping("/rateLimit/byResource")
+ @SentinelResource(value = "byResource", blockHandler = "handleException")
+ public CommonResult byResource() {
+ return new CommonResult(200, "按资源名称限流测试OK", new Payment(2020L, "serial001"));
+ }
+
+ public CommonResult handleException(BlockException exception) {
+ return new CommonResult(444, exception.getClass().getCanonicalName() + "\t 服务不可用");
+ }
+
+ @GetMapping("/rateLimit/byUrl")
+ @SentinelResource(value = "byUrl")
+ public CommonResult byUrl() {
+ return new CommonResult(200, "按url限流测试OK", new Payment(2020L, "serial002"));
+ }
+
+
+ @GetMapping("/rateLimit/customerBlockHandler")
+ @SentinelResource(value = "customerBlockHandler", //资源名称
+ blockHandlerClass = CustomerBlockHandler.class, //异常自定义
+ blockHandler = "handlerException1") //调用自定义类某个方法
+ public CommonResult customerBlockHandler() {
+ return new CommonResult(200, "按客戶自定义", new Payment(2020L, "serial003"));
+ }
+}
\ No newline at end of file
diff --git a/cloudalibaba-sentinel-service8401/src/main/java/com/lcry/springcloudalibaba/myhandler/CustomerBlockHandler.java b/cloudalibaba-sentinel-service8401/src/main/java/com/lcry/springcloudalibaba/myhandler/CustomerBlockHandler.java
new file mode 100644
index 0000000000000000000000000000000000000000..6e0187a37caf2933665a35de6d3bd7ae8cd69255
--- /dev/null
+++ b/cloudalibaba-sentinel-service8401/src/main/java/com/lcry/springcloudalibaba/myhandler/CustomerBlockHandler.java
@@ -0,0 +1,19 @@
+package com.lcry.springcloudalibaba.myhandler;
+
+import com.alibaba.csp.sentinel.slots.block.BlockException;
+import com.lcry.springcloud.entities.CommonResult;
+
+/**
+ * @author lcry
+ * @date 2020/03/17 14:51
+ * 用户自定义处理异常类
+ */
+public class CustomerBlockHandler {
+ public static CommonResult handlerException1(BlockException exception) {
+ return new CommonResult(4444, "按客戶自定义,global handlerException----1");
+ }
+
+ public static CommonResult handlerException2(BlockException exception) {
+ return new CommonResult(4444, "按客戶自定义,global handlerException----2");
+ }
+}
\ No newline at end of file
diff --git a/cloudalibaba-sentinel-service8401/src/main/resources/application.yml b/cloudalibaba-sentinel-service8401/src/main/resources/application.yml
new file mode 100644
index 0000000000000000000000000000000000000000..efe9ddd8d0b54a1687c75d54a94c91315a98c5f7
--- /dev/null
+++ b/cloudalibaba-sentinel-service8401/src/main/resources/application.yml
@@ -0,0 +1,33 @@
+#测试端口
+server:
+ port: 8401
+
+spring:
+ application:
+ name: cloudalibaba-sentinel-service
+ cloud:
+ nacos:
+ discovery:
+ server-addr: localhost:8848 #Nacos服务注册中心地址
+ sentinel:
+ transport:
+ dashboard: localhost:8080 #配置Sentinel dashboard地址
+ port: 8719 #随机找一个地址,如果冲突就往后+1
+# datasource:
+# ds1:
+# nacos:
+# server-addr: localhost:8848
+# dataId: cloudalibaba-sentinel-service
+# groupId: DEFAULT_GROUP
+# data-type: json
+# rule-type: flow
+
+management:
+ endpoints:
+ web:
+ exposure:
+ include: '*'
+
+feign:
+ sentinel:
+ enabled: true # 激活Sentinel对Feign的支持
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index af2ab4659cffbf891f32a618dcc54edf6e0704ed..a70ca1846f344833cec2ddfad2d61aa688add1c6 100644
--- a/pom.xml
+++ b/pom.xml
@@ -32,6 +32,10 @@
cloudalibaba-config-nacos-client3377
cloudalibaba-provider-nacos-payment9001
cloudalibaba-provider-nacos-payment9002
+ cloudalibaba-sentinel-service8401
+ cloudalibaba-provider-nacos-payment9003
+ cloudalibaba-provider-nacos-payment9004
+ cloudalibaba-consumer-nacos-order84
pom