栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

微服务-sentinel

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

微服务-sentinel

微服务-sentinel

部署 下载
wget https://github.com/alibaba/Sentinel/releases/download/1.7.0/sentinel-dashboard-1.7.0.jar

编写Dockerfile,将sentinel打成镜像

vi Dockerfile
FROM openjdk:8
WORKDIR /usr/local/docker/sentinel
ADD ./sentinel-dashboard-1.7.0.jar sentinel.jar
EXPOSE 8088
ENTRYPOINT ["java", "-jar", "sentinel.jar", "--server.port=8088"]
构建镜像
docker build -t sentinel .
编写docker-compose文件
version: '3.3'
services:
  sentinel:
    restart: always
    image: sentinel-dashboard-1.7.0
    container_name: sentinel
    ports:
      - 8088:8088

启动
docker-compose up -d
访问

http://ip:8088

账号密码默认是sentinel

项目整合

        
            org.springframework.cloud
            spring-cloud-dependencies
            Finchley.SR1
            pom
            import
        
        
            org.springframework.cloud
            spring-cloud-alibaba-dependencies
            0.2.1.RELEASE
            pom
            import
        
        
            org.springframework.boot
            spring-boot-starter-web
            2.5.5
        
        
            org.springframework.cloud
            spring-cloud-starter-alibaba-sentinel
            0.9.0.RELEASE
        
        
            org.projectlombok
            lombok
            1.18.2
            true
        
    

配置

spring:
    cloud:
      sentinel:
        transport:
          dashboard: 192.168.10.141:8089

配置类

使用的是Spring Boot/Cloud ,即没有导入前面的依赖,需要自己将切面纳入到Spring容器中去

@Configuration
public class SentinelConfig {
    @Bean
    public SentinelResourceAspect sentinelResourceAspect() {
        return new SentinelResourceAspect();
    }
}

@SentinelResource注解

源码

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Inherited
public @interface SentinelResource {
  	//资源名
    String value() default "";
	//entry 类型
    EntryType entryType() default EntryType.OUT;
	//指定异常处理函数名
    String blockHandler() default "";
    //如果异常处理函数不与目标方法在同一个类,则需要指定类,并且异常处理函数需要声明为static
    Class[] blockHandlerClass() default {};

    //fallback函数名,默认为空
    String fallback() default "";

    //指定默认fallback函数
    String defaultFallback() default "";

    //同样,fallback函数需要和目标方法在同一个类,如果不再,则需要指定,并且对应的函数需要声明为static
    Class[] fallbackClass() default {};

    //
    Class[] exceptionsToTrace() default {Throwable.class};
    
    //指定排除的异常类型,不进入异常统计,也不会进入fallback函数处理,而是原样抛出。
    Class[] exceptionsToIgnore() default {};
}

  • value:资源名称,必需项(不能为空)
  • entryType:entry 类型,可选项(默认为 EntryType.OUT)
  • blockHandler / blockHandlerClass: blockHandler对应处理 BlockException 的函数名称,可选项。blockHandler 函数访问范围需要是 public,返回类型需要与原方法相匹配,参数类型需要和原方法相匹配并且最后加一个额外的参数,类型为 BlockException。blockHandler 函数默认需要和原方法在同一个类中。若希望使用其他类的函数,则可以指定 blockHandlerClass 为对应的类的 Class 对象,注意对应的函数必需为 static 函数,否则无法解析。
  • fallback:fallback 函数名称,可选项,用于在抛出异常的时候提供 fallback 处理逻辑。fallback 函数可以针对所有类型的异常(除了 exceptionsToIgnore 里面排除掉的异常类型)进行处理。fallback 函数签名和位置要求:返回值类型必须与原函数返回值类型一致;方法参数列表需要和原函数一致,或者可以额外多一个 Throwable 类型的参数用于接收对应的异常。fallback 函数默认需要和原方法在同一个类中。若希望使用其他类的函数,则可以指定
  • defaultFallback(since 1.6.0):默认的 fallback 函数名称,可选项,通常用于通用的 fallback 逻辑(即可以用于很多服务或方法)。默认 fallback 函数可以针对所有类型的异常(除了 exceptionsToIgnore 里面排除掉的异常类型)进行处理。若同时配置了 fallback 和 defaultFallback,则只有 fallback 会生效。defaultFallback 函数签名要求:返回值类型必须与原函数返回值类型一致;方法参数列表需要为空,或者可以额外多一个 Throwable 类型的参数用于接收对应的异常。defaultFallback 函数默认需要和原方法在同一个类中。若希望使用其他类的函数,则可以指定 fallbackClass 为对应的类的 Class 对象,注意对应的函数必需为 static 函数,否则无法解析。
  • exceptionsToIgnore(since 1.6.0):用于指定哪些异常被排除掉,不会计入异常统计中,也不会进入 fallback 逻辑中,而是会原样抛出。

设置流控规则

持久化配置到注册中心

        
            org.springframework.cloud
            spring-cloud-dependencies
            Finchley.SR1
            pom
            import
        
        
            org.springframework.cloud
            spring-cloud-alibaba-dependencies
            0.2.1.RELEASE
            pom
            import
        
        
            org.springframework.boot
            spring-boot-starter-web
            2.5.5
        
        
            org.springframework.cloud
            spring-cloud-starter-alibaba-sentinel
            0.9.0.RELEASE
        
        
            org.projectlombok
            lombok
            1.18.2
            true
        
        
            com.alibaba.csp
            sentinel-datasource-nacos
            1.5.2
        
    

配置文件

spring.application.name=alibaba-sentinel
server.port=8001
 
# sentinel dashboard
spring.cloud.sentinel.transport.dashboard=127.0.0.1:28000
 
spring.cloud.sentinel.datasource.ds1.nacos.server-addr=192.168.72.151:28848
spring.cloud.sentinel.datasource.ds1.nacos.data-id=mz-sentinel
spring.cloud.sentinel.datasource.ds1.nacos.group-id=DEFAULT_GROUP
spring.cloud.sentinel.datasource.ds1.nacos.data-type=json
spring.cloud.sentinel.datasource.ds1.nacos.rule-type=flow

mz-sentinel

[
  {
   "resource": "/sentinel/h1",
   "limitApp": "default",
   "grade": 1,
   "count": 5,
   "strategy": 0,
   "controlBehavior": 0,
   "clusterMode": false
  },
  {
   "resource": "/sentinel/h2",
   "limitApp": "default",
   "grade": 1,
   "count": 5,
   "strategy": 0,
   "controlBehavior": 0,
   "clusterMode": false
  },
  {
   "resource": "sayHello",
   "limitApp": "default",
   "grade": 1,
   "count": 2,
   "strategy": 0,
   "controlBehavior": 0,
   "clusterMode": false
  }
]
nt": 5,
   "strategy": 0,
   "controlBehavior": 0,
   "clusterMode": false
  },
  {
   "resource": "sayHello",
   "limitApp": "default",
   "grade": 1,
   "count": 2,
   "strategy": 0,
   "controlBehavior": 0,
   "clusterMode": false
  }
]
暑期编程PK赛 得CSDN机械键盘等精美礼品!
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1017146.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号