spring cloud之集成sentinel

这篇具有很好参考价值的文章主要介绍了spring cloud之集成sentinel。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

写在前面

源码 。
本文一起看下spring cloud的sentinel组件的使用。

1:准备

1.1:理论

对于一个系统来说,最重要的就是高可用,那么如何实现高可用呢?你可能会说,集群部署不就可以了,但事实并非这么简单,假定一个不那么靠谱的开发,写了一个不那么靠谱的sql语句,上线之后,DB资源很快耗尽,那么所有需要查询DB的服务都无法处理请求,进而导致这些服务挂掉,而上游的服务因为无法快速得到响应,也会很快的挂掉,进而整个系统都会无法对外提供服务,这其实就是发生了非常可怕的服务雪崩,这个过程可以简单参考下图:
spring cloud之集成sentinel,springcloud,spring cloud,sentinel,服务雪崩,降级熔断
假定那个不那么靠谱的开发,是在服务D开发了那个不那么靠谱的sql语句,则上线后的后果就是D导致B和C不可用,B和C的不可用又会导致A的不可用,最终整个系统不可用。所以想要真正的实现高可用,除了多节点的集群部署外,我们还需要预防服务雪崩,而本文要学习的sentinel正是这样的一个组件,我们可以叫做容错组件

基本上,导致服务雪崩发生的原因在2个方面,第一个方面是高并发导致的请求量增大,第二方面就是应用内部的异常和错误(就像那个不那么靠谱的sql)。其实sentinel也正是从这两方面来预防服务雪崩的,对于高并发,sentinel可以从外部来限制并发量,对于应用内部异常和错误,sentinel可以进行降级和熔断。我们也会从这方面来展开sentinel的实战环节。

在java中,万物皆对象,在Linux中,万物皆文件,而在sentinel中,万物皆资源,而这里的资源我们可以认为就是接口地址,而对这些资源作用的过程是通过其内部的一个责任链,可以参考下图:
spring cloud之集成sentinel,springcloud,spring cloud,sentinel,服务雪崩,降级熔断
比如有用来收集数据的StaticSlot,构建调用链的NodeSelectorSlot(形成一个树状的调用关系图),如果业务有需要,我们也可以增加自定义的额slot到这个调用链上。

1.2:安装sentinel

首先在这里 下载可运行的jar包,接着如下操作:

$ java -Dserver.port=8080 -Dcsp.sentinel.dashboard.server=localhost:8080 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard-1.8.2.jar
INFO: Sentinel log output type is: file
INFO: Sentinel log charset is: utf-8
INFO: Sentinel log base directory is: C:\Users\dell9020\logs\csp\
INFO: Sentinel log name use pid is: false

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.0.5.RELEASE)
 ...

成功后访问http://localhost:8080/#/login,进入登陆页面:
spring cloud之集成sentinel,springcloud,spring cloud,sentinel,服务雪崩,降级熔断
账号sentinel/sentinel,成功后进入如下页面:
spring cloud之集成sentinel,springcloud,spring cloud,sentinel,服务雪崩,降级熔断

2:限流实战

限流,或者叫流量整形,是sentinel从外部预防服务雪崩的重要手段。

2.1:基础配置

这部分我们直接来使用sentiniel对我们项目做流量整形,首先,在custom和template模块引入依赖:

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>

然后在custom和template模块的application.yml中配置sentinel信息:

spring:
  jpa:
    ...
  cloud:
    sentinel:
      eager: true 
      transport:
        port: 8719
        dashboard: localhost:8080

接着使用@SentinelResource注解标记要进行流量整形的接口,如下:

  • custom模块
dongshi.daddy.sentinel.controller.CouponCustomerController#requestCoupon
@PostMapping("requestCoupon")
@SentinelResource(value = "requestCoupon")
public Coupon requestCoupon(@Valid @RequestBody RequestCoupon request) {
    ...
}
@PostMapping("findCoupon")
@SentinelResource(value = "customer-findCoupon")
public List<CouponInfo> findCoupon(@Valid @RequestBody SearchCoupon request) {
    return customerService.findCoupon(request);
}
  • template模块
// 读取优惠券
@GetMapping("/getTemplate")
@SentinelResource(value = "getTemplate")
public CouponTemplateInfo getTemplate(@RequestParam("id") Long id){
    log.info("Load template, id={}", id);
    /*try {
        // 休眠二十秒模拟超时
        TimeUnit.SECONDS.sleep(20);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }*/
    return couponTemplateService.loadTemplateInfo(id);
}

// 批量获取
@GetMapping("/getBatch")
// 降级要执行的方法
@SentinelResource(value = "getTemplateInBatch", blockHandler = "getTemplateInBatch_block")
public Map<Long, CouponTemplateInfo> getTemplateInBatch(@RequestParam("ids") Collection<Long> ids) {
    log.info("getTemplateInBatch: {}", JSON.toJSONString(ids));
    return couponTemplateService.getTemplateInfoMap(ids);
}
// 降级要执行的方法
public Map<Long, CouponTemplateInfo> getTemplateInBatch_block(
        Collection<Long> ids, BlockException exception) {
    log.info("接口被限流");
    return Maps.newHashMap();
}

接着我们启动服务,如果一切正常的话,就可以看到custom和template这两个模块注册到sentinel上了:
spring cloud之集成sentinel,springcloud,spring cloud,sentinel,服务雪崩,降级熔断

2.2:通过流控规则进行限流

sentinel支持通过三种方式来进行流量整形:

直接流控:
    针对特定接口(sentinel称为资源)限流
关联流控:
    当某接口(sentinel称为资源)达到限流条件时对关联的接口(sentinel称为资源)进行限流
链路流控:

2.2.1:直接流控

我们对资源getTemplateInBatch进行流控,在sentinel选择template对应的微服务,点击子菜单流控规则,然后点击右上角spring cloud之集成sentinel,springcloud,spring cloud,sentinel,服务雪崩,降级熔断 添加流控规则,如下:
spring cloud之集成sentinel,springcloud,spring cloud,sentinel,服务雪崩,降级熔断

为了测试我们使用jmeter来进行测试,jmeter配置可以从这里 下载,配置如下:
spring cloud之集成sentinel,springcloud,spring cloud,sentinel,服务雪崩,降级熔断
通过按钮spring cloud之集成sentinel,springcloud,spring cloud,sentinel,服务雪崩,降级熔断 启动,之后查看template模块日志输出如下:

2024-01-08 15:34:44.411  INFO 26504 --- [io-20006-exec-7] d.d.s.c.CouponTemplateController         : getTemplateInBatch: [2,3]
Hibernate: select coupontemp0_.id as id1_0_, coupontemp0_.available as availabl2_0_, coupontemp0_.type as type3_0_, coupontemp0_.created_time as created_4_0_, coupontemp0_.description as descript5_0_, coupontemp0_.name as name6_0_, coupontemp0_.rule as rule7_0_, coupontemp0_.shop_id as shop_id8_0_ from coupon_template coupontemp0_ where coupontemp0_.id in (? , ?)
2024-01-08 15:34:44.904  INFO 26504 --- [io-20006-exec-5] d.d.s.c.CouponTemplateController         : 接口被限流

可以看到第二次执行了熔断逻辑被限流了。

2.2.2:关联流控

jmeter配置下载 。

我们来设置当getTempalte接口qps超过1时限制getBatch接口,配置如下:
spring cloud之集成sentinel,springcloud,spring cloud,sentinel,服务雪崩,降级熔断
首先我们使用jmeter模拟qps 2不间断访问getTemplate接口,如下:
spring cloud之集成sentinel,springcloud,spring cloud,sentinel,服务雪崩,降级熔断
启动后,这样,肯定就会触发限流规则了,这样,我们先来启动jmeter,
spring cloud之集成sentinel,springcloud,spring cloud,sentinel,服务雪崩,降级熔断
之后访问getBatch接口,如下:

http://localhost:20006/template/getBatch?ids=2,3

spring cloud之集成sentinel,springcloud,spring cloud,sentinel,服务雪崩,降级熔断
查看后台输出:
spring cloud之集成sentinel,springcloud,spring cloud,sentinel,服务雪崩,降级熔断
然后我们来停止jmeter,再来请求接口,就会恢复正常了:
spring cloud之集成sentinel,springcloud,spring cloud,sentinel,服务雪崩,降级熔断

2.2.3:链路流控

jmeter配置下载 。
对于同一个资源访问可以来自于不同的链路,针对特定的链路进行流控,就是链路流控了,如下图,上方链路就是被流控的:
spring cloud之集成sentinel,springcloud,spring cloud,sentinel,服务雪崩,降级熔断

spring cloud之集成sentinel,springcloud,spring cloud,sentinel,服务雪崩,降级熔断
这里我们模拟从custom模块访问template模块的getBatch接口,为了测试,需要首先在custom模块中增加如下接口:

// 批量获取
@GetMapping("/getBatchFromCustomer")
public Map<Long, CouponTemplateInfo> getTemplateInBatch(@RequestParam("ids") Collection<Long> ids) {
    log.info("getTemplateInBatch111: {}", JSON.toJSONString(ids));
    return templateService.getTemplateInBatch(ids);
}

因为需要进行限流的资源需要知道当前的调用者是谁,才能知道是否需要触发,所以,首先需要在custom模块添加openfeign的拦截器,在openfeign的请求中添加来源头

@Configuration
public class OpenfeignSentinelInterceptor implements RequestInterceptor {

    @Override
    public void apply(RequestTemplate template) {
        template.header("SentinelSource", "coupon-customer-serv");
    }
}

接着在tempalte模块中获取这个来源的信息:

@Component
@Slf4j
public class SentinelOriginParser implements RequestOriginParser {

    @Override
    public String parseOrigin(HttpServletRequest request) {
        log.info("request {}, header={}", request.getParameterMap(), request.getHeaderNames());
        return request.getHeader("SentinelSource");
    }
}

接着我们来配置sentinel针对来源coupon-customer-serv进行限流,如下:
spring cloud之集成sentinel,springcloud,spring cloud,sentinel,服务雪崩,降级熔断
接着开启jmeter,正常的话会看到被限流了:
spring cloud之集成sentinel,springcloud,spring cloud,sentinel,服务雪崩,降级熔断
为了测试来源不匹配的情况不限流,我们将sentinel的目标资源名称随便改为其他的,如下:
spring cloud之集成sentinel,springcloud,spring cloud,sentinel,服务雪崩,降级熔断
此时再开启jmeter测试就正常了:
spring cloud之集成sentinel,springcloud,spring cloud,sentinel,服务雪崩,降级熔断

2.3:三种流控效果

sentinel支持三种流控效果,快速失败,warm up,排队等待,在上述的实战环节我们使用就是快速失败,这也是sentinel默认的流控效果。

  • 快速失败
    直接失败。
  • warm up
    这是一种从低水位逐渐拉高的一种限流方式,比如如下的配置:
    spring cloud之集成sentinel,springcloud,spring cloud,sentinel,服务雪崩,降级熔断
    上图设置在5秒内拉高到10进行限流,而非开始就是10,开始的限流值需要除以冷却因子,这里冷却因子是3,所以就是10/3=3,也就是当qps到达3时开始限流,然后在5秒内将这个限流值拉高到最大值10,
    spring cloud之集成sentinel,springcloud,spring cloud,sentinel,服务雪崩,降级熔断

使用的场景,如采用缓存+DB读的场景,如果接口一段时间内都处于很低的水位,导致大量的缓存都失效了,此时突然发生了突发流量(某明星出轨了,某漂亮country被原子弹攻击了),此时缓存还没有完全构建起来,为了避免突发流量全部打到DB,把DB打穿,就可以考虑使用warm up,在一段时间内从低水位逐渐拉到高水位,同时在这段时间内完成缓存的构建工作。

  • 排队等待
    被限流的请求在一个任务队列中排队等待,并按照超时等待时间从队列中删除任务,如下500内还没有处理则移除任务的配置:
    spring cloud之集成sentinel,springcloud,spring cloud,sentinel,服务雪崩,降级熔断

2:降级、熔断实战

jmeter配置 。
降级、熔断,是sentinel从服务内部预防服务雪崩的重要手段。这部分我们一起来看下如何使用sentinel来实现降级和熔断。为了方便测试我们首先在template模块添加一个新的接口并设置为sentinel的资源:

// 批量获取
@GetMapping("/getBatchV1")
// 降级要执行的方法
@SentinelResource(value = "getTemplateInBatchV1", fallback = "getTemplateInBatch_fallback")
public Map<Long, CouponTemplateInfo> getTemplateInBatchV1(@RequestParam("ids") Collection<Long> ids) {
    log.info("getTemplateInBatch: {}", JSON.toJSONString(ids));
    int i = 1 / 0;
    return couponTemplateService.getTemplateInfoMap(ids);
}

public Map<Long, CouponTemplateInfo> getTemplateInBatch_fallback(Collection<Long> ids) {
    log.info("接口被fallback");
    return Maps.newHashMap();
}

这里注意指定了fallback = "getTemplateInBatch_fallback",则当抛出了RuntimeException时就会进入执行降级逻辑,接着我们就需要在sentinel中配置熔断逻辑了,如下:
spring cloud之集成sentinel,springcloud,spring cloud,sentinel,服务雪崩,降级熔断
降级熔断的判断过程可以参考下图(注意时示例)
spring cloud之集成sentinel,springcloud,spring cloud,sentinel,服务雪崩,降级熔断
接着执行jemter,日志输出如下:

2024-01-10 14:01:47.813  INFO 13112 --- [io-20006-exec-2] d.d.s.c.CouponTemplateController         : getTemplateInBatch: [2,3] #
2024-01-10 14:01:47.813  INFO 13112 --- [io-20006-exec-2] d.d.s.c.CouponTemplateController         : 接口被fallback 
2024-01-10 14:01:47.813  INFO 13112 --- [o-20006-exec-10] d.daddy.sentinel.SentinelOriginParser    : request org.apache.catalina.util.ParameterMap@39d7b9e0, header=org.apache.tomcat.util.http.NamesEnumerator@7d50964c
2024-01-10 14:01:47.814  INFO 13112 --- [o-20006-exec-10] d.d.s.c.CouponTemplateController         : 接口被fallback
2024-01-10 14:01:47.815  INFO 13112 --- [io-20006-exec-9] d.daddy.sentinel.SentinelOriginParser    : request org.apache.catalina.util.ParameterMap@39d7b9e0, header=org.apache.tomcat.util.http.NamesEnumerator@1f47105b
2024-01-10 14:01:47.816  INFO 13112 --- [io-20006-exec-9] d.d.s.c.CouponTemplateController         : 接口被fallback
....
2024-01-10 14:01:47.813  INFO 13112 --- [io-20006-exec-2] d.d.s.c.CouponTemplateController         : getTemplateInBatch: [2,3] # 1s后半开启,后又重新进入熔断
2024-01-10 14:01:47.813  INFO 13112 --- [io-20006-exec-2] d.d.s.c.CouponTemplateController         : 接口被fallback 
2024-01-10 14:01:47.813  INFO 13112 --- [o-20006-exec-10] d.daddy.sentinel.SentinelOriginParser    : request org.apache.catalina.util.ParameterMap@39d7b9e0, header=org.apache.tomcat.util.http.NamesEnumerator@7d50964c
2024-01-10 14:01:47.814  INFO 13112 --- [o-20006-exec-10] d.d.s.c.CouponTemplateController         : 接口被fallback
2024-01-10 14:01:47.815  INFO 13112 --- [io-20006-exec-9] d.daddy.sentinel.SentinelOriginParser    : request org.apache.catalina.util.ParameterMap@39d7b9e0, header=org.apache.tomcat.util.http.NamesEnumerator@1f47105b
2024-01-10 14:01:47.816  INFO 13112 --- [io-20006-exec-9] d.d.s.c.CouponTemplateController         : 接口被fallback
...

可以看到降级后,满足条件就会进入熔断。一段时间后会尝试恢复,这个状态叫做半熔断,完整的状态转换参考下图:
spring cloud之集成sentinel,springcloud,spring cloud,sentinel,服务雪崩,降级熔断

4:接入nacos实现持久化

二次开发后源码 。
在前面的实战中,不知道你发现没有,如果是应用重启,则我们设置的规则就都会丢失,这是因为这些规则信息默认是保存在内存中,sentinel也支持将规则信息保存在nacos中,本部分就一起来看下如何实现,想要实现这个操作,需要对sentinel的源码做一下简单的二次开发工作。我们开始。

4.1:下载sentient源码

你可以在这里 下载源码,如下图:
spring cloud之集成sentinel,springcloud,spring cloud,sentinel,服务雪崩,降级熔断

下载后导入到idea中,注意将idea中jdk相关的配置都修改为1.8,否则可能会无法正常编译代码,成功后如下图:
spring cloud之集成sentinel,springcloud,spring cloud,sentinel,服务雪崩,降级熔断
接着就可以开始二次开发的工作了。

4.2:二次开发

我们需要修改的模块是sentinel-dashboard,首先需要修改nacos依赖范围,默认是test的,即只在test阶段生效,我们需要修改为编译阶段的,如下:

<dependency>
    <groupId>com.alibaba.csp</groupId>
    <artifactId>sentinel-datasource-nacos</artifactId>
    <!-- 将scope注释掉,改为编译期打包 -->
    <!--<scope>test</scope>-->
</dependency>

接着我们需要将test包下com.alibaba.csp.sentinel.dashboard.rule.nacos的四个nacos操作的相关文件,如下:

NacosConfig:初始化 Nacos Config 的连接;(该类我们需要修改,设置自己环境的nacos地址)
NacosConfigUtil:约定了 Nacos 配置文件所属的 Group 和文件命名后缀等常量字段;
FlowRuleNacosProvider:从 Nacos Config 上获取限流规则;(从nacos获取配置数据)
FlowRuleNacosPublisher:将限流规则发布到 Nacos Config。(将配置写到nacos)

我们需要在main目录中创建一样的包路径,并将这四个类拷贝过去,如下图:
spring cloud之集成sentinel,springcloud,spring cloud,sentinel,服务雪崩,降级熔断
首先我们修改NacosConfig类nacosConfigService方法,该方法负责创建操作nacos的ConfigService的bean,如下:

/*
负责更新以及读取nacos的类
*/
@Bean
public ConfigService nacosConfigService() throws Exception {
    // 将Nacos的注册地址引入进来
    Properties properties = new Properties();
    properties.setProperty("serverAddr", "192.168.10.77:8868");
    properties.setProperty("namespace", "dev");
//        return ConfigFactory.createConfigService("localhost");
    return ConfigFactory.createConfigService(properties);
}

然后修改FlowControllerV2中写入sentinel配置的pulisher和读取配置的provider为nacos的,如下:

@Autowired
//    @Qualifier("flowRuleDefaultProvider")
// 修改为nacos的数据provider提供者,这样就能从nacos中获取数据
@Qualifier("flowRuleNacosProvider")
private DynamicRuleProvider<List<FlowRuleEntity>> ruleProvider;
@Autowired
//    @Qualifier("flowRuleDefaultPublisher")
// 修改为nacos的发布者,这样就能将规则配置数据写到nacos中
@Qualifier("flowRuleNacosPublisher")
private DynamicRulePublisher<List<FlowRuleEntity>> rulePublisher;

我们来看下publisher向nacos写数据的源码:

// com.alibaba.csp.sentinel.dashboard.rule.nacos.FlowRuleNacosPublisher#publish
@Override
public void publish(String app, List<FlowRuleEntity> rules) throws Exception {
    AssertUtil.notEmpty(app, "app name cannot be empty");
    if (rules == null) {
        return;
    }
    // app 应用名称
    // public static final String FLOW_DATA_ID_POSTFIX = "-flow-rules";
    // public static final String GROUP_ID = "SENTINEL_GROUP";
    // converter.convert(rules) 转成字符串
    configService.publishConfig(app + NacosConfigUtil.FLOW_DATA_ID_POSTFIX,
        NacosConfigUtil.GROUP_ID, converter.convert(rules));
}

源码中就可以看到nacos作为配置中心时的组是SENTINEL_GROUP,dataId是${spring.application.name}-flow-rules。最后我们修改页面sidebar.html,增加如下内容:

<li ui-sref-active="active">
  <a ui-sref="dashboard.flow({app: entry.app})">
    <i class="glyphicon glyphicon-filter"></i>&nbsp;&nbsp;流控规则 极客时间改造</a>
</li>

最后需要改造我们的微服务,以cusotm为例,首先增加依赖:

<dependency>
    <groupId>com.alibaba.csp</groupId>
    <artifactId>sentinel-datasource-nacos</artifactId>
</dependency>

然后增加配置:

spring:
 cloud:
  sentinel:
    datasource:
      # 数据源的key,可以自由命名
      geekbang-flow:
        # 指定当前数据源是nacos
        nacos:
          # 设置Nacos的连接地址、命名空间和Group ID
          server-addr: localhost:8848
          namespace: dev
          groupId: SENTINEL_GROUP
          # 设置Nacos中配置文件的命名规则
          dataId: ${spring.application.name}-flow-rules
          # 必填的重要字段,指定当前规则类型是"限流"
          rule-type: flow

最后,打jar包,成功后会在target目录看到jar包:
spring cloud之集成sentinel,springcloud,spring cloud,sentinel,服务雪崩,降级熔断
最后启动项目:

java -Dserver.port=8080 -Dcsp.sentinel.dashboard.server=localhost:8080 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard.jar

启动custom模块,登录后就可以看到新加的菜单:
spring cloud之集成sentinel,springcloud,spring cloud,sentinel,服务雪崩,降级熔断
如果是该菜单增加配置,则会同步到nacos中,并且配置dataID是coupon-customer-serv-sentinel-flow-rules:
spring cloud之集成sentinel,springcloud,spring cloud,sentinel,服务雪崩,降级熔断
配置内容是以文本的格式存储的,但存储的也是json:
spring cloud之集成sentinel,springcloud,spring cloud,sentinel,服务雪崩,降级熔断

写在后面

参考文章列表

jmeter之简单使用 。文章来源地址https://www.toymoban.com/news/detail-782999.html

到了这里,关于spring cloud之集成sentinel的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SpringCloud.04.熔断器Hystrix( Spring Cloud Alibaba 熔断(Sentinel))

    目录 熔断器概述 使用Sentinel工具 什么是Sentinel 微服务集成Sentinel 配置provider文件,在里面加入有关控制台的配置 实现一个接口的限流 基本概念 重要功能 Sentinel规则 流控规则 简单配置 配置流控模式 配置流控效果 降级规则 @SentinelResource的使用 Feign整合Sentinel 由于Hystrix已经停

    2024年01月19日
    浏览(42)
  • SpringCloud学习6(Spring Cloud Alibaba)断路器Sentinel熔断降级

    SpringCloud、SpringCloudAlibaba、SpringBoot版本选择。为了避免各种千奇百怪的bug,我们还是采用官方推荐的毕业版本。 修改tomcat配置最大线程数 引入测试依赖 编写测试代码 这里同时我们在浏览器去请求该地址,响应会变得很慢 测试结论:此时会发现由于thread接口囤积大量请求,

    2023年04月08日
    浏览(50)
  • Spring Cloud Gateway集成Sentinel 1.8.6及Sentinel Dashboard

    一、安装sentinel 1.下载地址:sentinel v1.8.6 2.启动sentinel dashboard,执行以下命令: java -Dcsp.sentinel.log.dir=D:xxxsentinellogs -Dserver.port=9217 -Dcsp.sentinel.dashboard.server=localhost:9217 -Dcsp.sentinel.heartbeat.client.ip=localhost -Dproject.name=sentinel-dashboard -Dsentinel.dashboard.auth.username=sentinel -Dsentinel.dashboar

    2024年02月11日
    浏览(48)
  • Spring Cloud Gateway集成sentinel进行网关限流

    本文使用版本如下:

    2024年02月09日
    浏览(48)
  • 【Spring Cloud】服务容错中间件Sentinel入门

    欢迎来到阿Q社区 https://bbs.csdn.net/topics/617897123 Sentinel(分布式系统的流量防卫兵)是阿里开源的一套用于 服务容错 的综合性解决方案。它以流量为切入点,从 流量控制、熔断降级、系统负载保护 等多个维度来保护服务的稳定性。 Sentinel 具有以下特征: 丰富的应用场景 :

    2024年04月15日
    浏览(39)
  • 【Spring Cloud Alibaba】Sentinel 服务熔断与流量控制

    目录 前言 一、Sentinel 入门 1.1 什么是 Sentinel ? 1.2 微服务集成 Sentinel  1.3 安装Sentinel控制台 二、Jmeter 压力测试工具 2.1 Jmeter 介绍  2.2 Jmeter 安装 2.3 接口测试 三、Sentinel 使用 3.1 限流规则 3.1.1 warm up(预热模式) 3.1.2 排队等待 3.1.3 关联 3.1.4 链路 3.2 熔断规则 3.3 服务降级     

    2024年02月01日
    浏览(69)
  • 【Spring Cloud】服务容错中间件Sentinel进阶——五大规则

    我们在上一篇文章中对 Sentinel 已经有了基本的了解,接下来,我们一起对它的进阶进行学习吧! 资源 所谓资源就是 Sentinel 要保护的东西,资源是 Sentinel 的关键概念。它可以是Java应用程序中的任何内容,可以是一个服务,也可以是一个方法,甚至可以是一段代码。 我们入门

    2024年04月26日
    浏览(37)
  • 微服务之Spring Cloud Alibaba Sentinel介绍与下载(详细方法)

    随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 以流量为切入点,从流量控制、流量路由、熔断降级、系统自适应过载保护、热点流量防护等多个维度保护服务的稳定性。 2012 年,Sentinel 诞生,主要功能为入口流量控制。 2013-2017 年,Sentinel 在阿里巴巴

    2024年02月11日
    浏览(53)
  • Spring Cloud Alibaba全家桶(六)——微服务组件Sentinel介绍与使用

    本文小新为大家带来 微服务组件Sentinel介绍与使用 相关知识,具体内容包括 分布式系统存在的问题 , 分布式系统问题的解决方案 , Sentinel介绍 , Sentinel快速开始 (包括: API实现Sentinel资源保护 , @SentinelResource注解实现资源保护 ), Sentinel控制台 , Spring Cloud Alibaba整合

    2024年01月17日
    浏览(53)
  • Sentinel nacos spring cloud 持久化配置---分布式/微服务流量控制

    下载地址:https://github.com/alibaba/Sentinel/releases 本次版本:1.8.6 上一篇文章已介绍 我们先说目标,为各位看官节省不匹配的时间 0、使用sentinel流控中心 1、使用nacos做配置中心 5、使用spring-cloud-starter-alibaba-sentinel做持久化配置 https://github.com/OrderDong/microservice-boot 分支:microserv

    2024年02月16日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包