`

springcloud之openfeign集成sentinel限流

阅读更多

1.先调用服务接口,才会在sentinel显示应用名称

2.sentinel 限流默认1秒内多少访问量

3.sentinel规则持久化,服务重启以后不用在配置

4.使用nacos进行sentinel规则持久化


1.配置
spring:
  application:
    name: nacos-loadbalancer-service
  cloud:
    nacos:
      discovery:
        server-addr: 49.234.12.67:8848
    loadbalancer:
      cache: # 负载均衡缓存配置
        enabled: true # 开启缓存
        ttl: 5s # 设置缓存时间
        capacity: 256 # 设置缓存大小
      retry: # 重试配置
        enabled: true
        max-retries-on-same-service-instance: 1
        max-retries-on-next-service-instance: 1
      zone: test
    sentinel:
      transport:
        dashboard: 49.234.12.67:8180
service-url:
  nacos-user-service: http://nacos-user-service
feign:
  sentinel:
    enabled: true
  client:
    config:
      default: # Feign调用超时配置
        connectTimeout: 5000
        readTimeout: 5000

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

3.其它限流知识
a.Blocked by Sentinel (flow limiting)
sentinel自定义返回值处理
import com.alibaba.csp.sentinel.adapter.spring.webmvc.callback.BlockExceptionHandler;
import com.alibaba.csp.sentinel.slots.block.BlockException;
import com.alibaba.csp.sentinel.slots.block.authority.AuthorityException;
import com.alibaba.csp.sentinel.slots.block.degrade.DegradeException;
import com.alibaba.csp.sentinel.slots.block.flow.FlowException;
import com.alibaba.csp.sentinel.slots.block.flow.param.ParamFlowException;
import com.alibaba.csp.sentinel.slots.system.SystemBlockException;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.stereotype.Component;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@Component
public class SentinelExceptionHandler implements BlockExceptionHandler {
    @Override
    public void handle(HttpServletRequest request, HttpServletResponse response, BlockException ex) throws Exception {
            String msg = null;
            if (ex instanceof FlowException) {
                msg = "限流了";
            } else if (ex instanceof DegradeException) {
                msg = "降级了";
            } else if (ex instanceof ParamFlowException) {
                msg = "热点参数限流";
            } else if (ex instanceof SystemBlockException) {
                msg = "系统规则限流或降级";
            } else if (ex instanceof AuthorityException) {
                msg = "授权规则不通过";
            }
            // http状态码
            response.setStatus(500);
            response.setCharacterEncoding("utf-8");
            response.setHeader("Content-Type", "application/json;charset=utf-8");
            response.setContentType("application/json;charset=utf-8");
            // spring mvc自带的json操作工具,叫jackson
            String path = request.getServletPath();
            if (path != null) {
                msg = String.format("接口[%s]%s", path, msg);
            }
            new ObjectMapper().writeValue(response.getWriter(), msg);
        }
}


b.@FeignClient(value = "nacos-user-service", fallbackFactory = UserServiceFallbackFactory.class)
@Component
public class UserServiceFallbackFactory implements FallbackFactory<UserService> {
0
0
分享到:
评论

相关推荐

    springcloud整合openfeign完整代码

    在Spring Cloud集成Sentinel后,我们可以在服务之间设置流控规则,当流量超过设定阈值时进行限流,防止雪崩效应。同时,Sentinel也支持服务降级,当服务出现故障时,可以选择返回默认值或者快速失败,保障系统的稳定...

    Spring Cloud alibaba 集成 Sentinel openfeign nacos

    **Spring Cloud Alibaba 集成 Sentinel OpenFeign Nacos 知识点详解** Spring Cloud Alibaba 是阿里巴巴提供的微服务生态工具集,它包含了多种组件,如 Eureka、Nacos、Sentinel 等,用于构建分布式系统。在本教程...

    springboot openfeign Sentinel统一降级处理实现代码

    2. **OpenFeign集成Sentinel** 首先,我们需要在Spring Boot项目中引入Sentinel和OpenFeign的相关依赖。在`pom.xml`中添加如下依赖: ```xml &lt;groupId&gt;com.alibaba.cloud&lt;/groupId&gt; &lt;artifactId&gt;spring-cloud-...

    SpringCloud(2020新版)Hoxton版 + SpringCloud alibaba1

    Spring Cloud Gateway作为新一代的API网关,取代了Zuul,提供了更强大的路由规则和过滤器功能,同时支持断路器、限流和黑白名单控制。Sleuth和Zipkin则用于分布式链路追踪,帮助开发者了解请求在微服务中的流转情况...

    Spring Cloud Alibaba.md

    - **技术支撑**:支持多种常见的微服务调用方式,如 WebServlet、WebFlux、OpenFeign、RestTemplate、Spring Cloud Gateway、Zuul、Dubbo 和 RocketMQ,并且支持运行时动态调整限流降级规则以及监控指标。...

    sping cloud 各组件集成方案,配置中心,注册中心、网关、feign ,mybatis集成方案,通用mapper自动生成工具 带注解,redis 集成

    它负责路由请求到相应的微服务,可以实现过滤器、限流、熔断等高级功能。网关可以极大地简化客户端的调用逻辑,同时提供安全控制和服务聚合的能力。 Feign 是 Spring Cloud 提供的一个声明式 HTTP 客户端,用于服务...

    springcloud+nacos+gateway

    SpringCloud Alibaba是阿里巴巴提供的一个全面的微服务解决方案,它包含了多个子项目,如Nacos、Sentinel、Seata等,用于构建分布式应用。在本场景中,我们将关注SpringCloud Gateway和Nacos的整合,以及OpenFeign的...

    SpringCloud实用篇01

    SpringCloudGateway和Zuul作为统一的API网关,负责路由请求,实现认证、限流等功能。 SpringCloudAlibaba是阿里巴巴对SpringCloud生态的扩展,它包含了一些更适合国内开发者使用的组件,比如Nacos服务注册与配置...

    SpringCloud

    5. **API 网关** - SpringCloud Gateway 作为一个统一的入口,负责路由请求到适当的微服务,同时可以实现过滤器功能,如认证、限流等。 6. **链路追踪** - Sleuth 与 Zipkin 配合,提供了分布式系统中的请求追踪...

    Springcloud Alibaba笔记.doc

    除此之外,笔记还可能涉及了SpringCloud Alibaba的其他组件,如Sentinel(流量控制、熔断降级)、Nacos(配置管理和服务发现)、Seata(分布式事务解决方案)等,以及Docker容器化部署、Jenkins持续集成等实践操作。...

    SpringCloud实战

    - **Resilience4j**:轻量级的故障处理库,提供了断路器、重试、限流等能力。 - **Alibaba Sentinel**:阿里巴巴开源的一款流量控制组件,适用于微服务、Docker 和 Kubernetes 架构。 - **服务网关**: - **Zuul...

    seata-server-1.4.0.rar

    Spring Cloud Alibaba是阿里巴巴提供的微服务解决方案,它包含了各种微服务组件,如服务注册与发现、配置中心、熔断器、限流降级等。OpenFeign是一个声明式的Web服务客户端,简化了RESTful服务的调用,而Druid是一个...

    简单了解Spring Cloud Alibaba相关知识

    1. 服务限流降级:支持 WebServlet、WebFlux、OpenFeign、RestTemplate、Spring Cloud Gateway、Zuul、Dubbo 和 RocketMQ 限流降级功能的接入,可以在运行时通过控制台实时修改限流降级规则,还支持查看限流降级 ...

    spring-cloud-learn

    - Spring Cloud与Alibaba的合作项目,提供了Nacos(服务发现)、Sentinel(流量控制)等组件,这些组件在性能和稳定性方面有着优秀的表现,也是学习Spring Cloud的重要方向。 9. **实战经验** - 在理论学习的基础...

    高级Java人才培训专家-微服务常见面试题

    - **Gateway**:建立在Reactor之上,提供了强大的路由转发和过滤功能,支持动态路由、过滤器、限流等功能。 5. **服务保护组件**: - **Hystrix**:一个延迟和容错库,旨在隔离远程系统、服务和第三方库的访问点...

Global site tag (gtag.js) - Google Analytics