微服务治理springcloud+nacos+sentinel框架整合

一、前言:

近期在设计企业级服务网关时,有流控、熔断相关的需求,在查找相关资料时,很多资料都写的一点,很难运行跑起来,导致浪费了太多的时间,近期功能设计完了,写篇文章,毫无吝啬的分享给大家,希望对大家的学习有所帮助。

二、环境准备工作:

1、nacos部署:

下载地址:https://.com/alibaba/nacos/releases

修改bin/startup.bat ,修改内容如下:

set MODE="standalone"

2、sentinel部署:

下载jar包:笔者下载的如下版本;

启动方式java -jar sentinel-dashboard-1.8.3.jar

三、相关集成代码:

1、代码:

@EnableDiscoveryClient
@SpringBootApplication
public class SpringSentinelApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringSentinelApplication.class, args);
    }

}


@RestController
public class SentinelController {

    @RequestMapping("/hello")
    @SentinelResource(value="hello", blockHandler = "sayHello")// 添加注解
    @ResponseBody
    public String hello() {
        return test();
    }

    @RequestMapping("/sgcc")
    @SentinelResource(value="sgcc", blockHandler = "saySgcc")// 添加注解
    @ResponseBody
    public String sgcc() {
        return test();
    }


    @ResponseBody
    public String sayHello(BlockException e) {
        e.printStackTrace();
        return "sayHello被限流了" ;
    }
    @ResponseBody
    public String saySgcc(BlockException e) {
        e.printStackTrace();
        return "saySgcc被限流了" ;
    }



    public  String test()
    {
        return   "test";
    }
}

2、配置文件:

A、application.yml

server:
  port: 8089

yan B、bootstrap.yml

spring:
  application:
    name: sentinel-app
  cloud:
    nacos:
      discovery:
        server-addr: http://localhost:8848
        enabled: true
        namespace: public
        group: DEFAULT_GROUP
        access-key: nacos
        secret-key: nacos
      config:
        server-addr: http://localhost:8848
        file-extension: yaml
        group: DEFAULT_GROUP
        namespace: public
        access-key: nacos
        secret-key: nacos
        username:

    sentinel:
      eager: true
      transport:
        dashboard: localhost:8080
        port: 8719
        clientIp: 192.168.115.1
      datasource:
        ds1:
          nacos:
            server-addr: localhost:8848
            group-id: DEFAULT_GROUP
            data-id: sentinel-app
            data-type: json
            rule-type: flow

四、功能验证:

1、nacos配置流控信息:

[
    {
       "resource": "hello",
       "limitApp": "default",
       "grade": 1,
       "count": 3,
       "strategy": 0,
       "controlBehavior": 0,
       "clusterMode":false
    },{
       "resource": "sgcc",
       "limitApp": "default",
       "grade": 1,
       "count": 2,
       "strategy": 0,
       "controlBehavior": 0,
       "clusterMode":false
    }
]

2、查看sentinel控制面板,检查nacos配置信息是否pull到sentinel内存:

3、功能验证:

流控信息展示:

经验分享 程序员 微信小程序 职场和发展