就离谱,两年开发经验还不懂sentinel组件

对于sentinel的前置知识这里就不多说了:

对于sentinel的前置知识这里就不多说了:

直接上代码:

Release v1.8.1 · alibaba/Sentinel · GitHub 下载地址

springcloud Alibaba环境下创建soringboot的项目:

POM:

<dependencies>    <dependency>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-starter-web</artifactId>    </dependency>    <dependency>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-devtools</artifactId>        <scope>runtime</scope>        <optional>true</optional>    </dependency>    <dependency>        <groupId>org.projectlombok</groupId>        <artifactId>lombok</artifactId>        <optional>true</optional>    </dependency>    <dependency>        <groupId>org.apache.velocity</groupId>        <artifactId>velocity</artifactId>        <version>1.7</version>    </dependency>    <dependency>        <groupId>com.alibaba</groupId>        <artifactId>fastjson</artifactId>        <version>1.2.47</version>    </dependency>    <dependency>        <groupId>com.alibaba.cloud</groupId>        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>    </dependency>    <dependency>        <groupId>com.alibaba.cloud</groupId>        <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>    </dependency>    <dependency>        <groupId>org.springframework.cloud</groupId>        <artifactId>spring-cloud-starter-openfeign</artifactId>    </dependency></dependencies>application.yml
server:  port: 8089spring:  application:    name: cloudorder  cloud:    nacos:      discovery:        server-addr: 127.0.0.1:8848    sentinel:      #      eager: true      transport:        port: 8719        dashboard: localhost:8080management:  endpoints:    web:      exposure:        include: "*"feign:  sentinel:    enabled: true
主启动
import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.client.discovery.EnableDiscoveryClient;import org.springframework.cloud.client.loadbalancer.LoadBalanced;import org.springframework.cloud.openfeign.EnableFeignClients;import org.springframework.context.annotation.Bean;import org.springframework.web.client.RestTemplate;@SpringBootApplication@EnableDiscoveryClient@EnableFeignClientspublic class OrderApplication8088 {    public static void main(String[] args) {        SpringApplication.run(OrderApplication8088.class,args);    }    @Bean    @LoadBalanced    public RestTemplate getRestTemplate(){        return new RestTemplate();    }}
写一个controller接口就可以了:
@RequestMapping("/order")public String test1(@RequestParam(name = "id")String id){    return UUID.randomUUID().toString()+ "     id  :"+ id;}
先启动nacos注册中心,再启动sentinel的检测服务,本次用的是1.8.1的版本:java -jar sentinel-dashboard-1.8.1.jar 就可以启动服务了再启动我们的springboot服务访问 localhost:8080就是sentinel的服务界面了 可以在上面配置服务的限流和降级的配置,以及热点key的配置
 @RequestMapping("/getFeign")    @SentinelResource(value = "getFeign",blockHandler = "demotionGetFeign",fallback = "deGetFeign")    public String getFeign(@RequestParam(name = "id",required = false,defaultValue = "5")String id)  {//        int i = 10/0;        return "eeee           eee  "+proFeign.provide(id);    }
public String demotionGetFeign(String id, BlockException ex){    return id+"  服务降级了啊。。。o(╥﹏╥)o"+ex;}public String deGetFeign(String id){    return "限流了啊。。。。o(╥﹏╥)o";}
@SentinelResource(value = "getFeign",blockHandler = "demotionGetFeign",fallback = "deGetFeign")
说一下这个注解就是配置接口出现异常 或者限流后应该怎么处理:
blockHandler 这个属性是在sentinel控制台配置的规则出现问题的时候会作出相应的处理方案
fallback 这个是兜底的方法了 代码出现异常 或者其他问题就会走这个方法了需要注意的是
blockHandler 的降级方法的返回值和参数要和原来的方法一样,同时要加上
BlockException ex属性,代表出现异常后的信息至于sentinel界面的配置就不多说了 可以看看官网写的sentinel的持久化配置:

步骤:

  • 添加pom
<dependency>    <groupId>com.alibaba.csp</groupId>    <artifactId>sentinel-datasource-nacos</artifactId></dependency>
  • 配置yml
spring:  application:    name: sentinel-service  cloud:    nacos:      discovery:        #nacos服务注册中心地址        server-addr: www.cjlly.com:8848    sentinel:      transport:        dashboard: 127.0.0.1:8080        port: 8719      datasource:        ds1:          nacos:            server-addr: www.cjlly.com:8848            dataId: sentinel-service            groupId: DEFAULT_GROUP            data-type: json            rule_type: flow
  • 登陆nacos,新建配置规则sentinel-service
[{"resource": "/findById","limitApp":"default","grade":1,"count":1,"strategy":0,"controlBehavior":0,"clusterMode":false}]

naocs配置解读:

需要注意地方:

  • 此时如果是Nacos集群,每个节点务必要配置到同一个数据库上。并且保证每个
    节点都可用。如果有的节点宕掉了可能会导致配置持久化失败。
  • 部署在nacos上的配置文件的名字并没有太多要求,只需要跟微服务项目中yml文件中配置的dataId一致即可。

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/63063.html

(0)

相关推荐