全部产品

服务限流快速入门

更新时间:2021-06-18 15:30:35

服务限流的使用,主要分为下述几个步骤:

引入依赖和本地配置

引入依赖

在SOFABoot Web 工程 endpoint 模块下的 pom.xml 文件中,引入 DRM 和 guardian 依赖,示例如下:

<dependency>
     <groupId>com.alipay.sofa</groupId>
     <artifactId>ddcs-enterprise-sofa-boot-starter</artifactId>
</dependency>

<dependency>
     <groupId>com.alipay.sofa</groupId>
     <artifactId>guardian-sofa-boot-starter</artifactId>
</dependency>
说明

  • 使用 rest-enterprise-sofa-boot-starterrpc-enterprise-sofa-boot-starter

    时,都需要引入上述依赖。

  • 引入 rpc-enterprise-sofa-boot-starter时,如果需要使用限流功能,还需要引入下述依赖,否则限流不起作用。定义接口的时候还需要自定义一个异常,一个异常处理器,用于限流成功后抛出异常,并且把异常处理结果返回给前端。

<dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-autoconfigure</artifactId>
</dependency>
<dependency>
     <groupId>com.alipay.sofa</groupId>
     <artifactId>tracer-enterprise-sofa-boot-starter</artifactId>
</dependency>

本地配置

  • 引入依赖 guardian-sofa-boot-starter:应用已经可以对 SOFARPC 接口和 Spring MVC 请求进行限流。

  • 配置 AOP 拦截器:如果需要对内部 Spring Bean 定义的方法进行限流,则需要在 Spring Bean 配置文件中添加配置 AOP 拦截器。示例如下:

    <!-- 引入 guardian 中定义的 bean -->
    <import resource="classpath:META-INF/spring/guardian-sofalite.xml"/>
    <!-- 配置 AOP 拦截器 -->
    <bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
        <property name="interceptorNames">
            <list>
                 <value>guardianExtendInterceptor</value>
            </list>
        </property>
        <property name="beanNames">
            <list>
                 <!-- 配置需要被拦截的 bean -->
                 <value>*DAO</value>
            </list>
        </property>
        <!-- 如要使用 CGLIB 代理,取消下面这行的注释 -->
        <!-- <property name="optimize" value="true" /> -->
    </bean>

云端发布

请参考下述信息,完成应用的云端发布:

  • 应用整体的发布流程,请参考 技术栈使用指南 中的 技术栈与应用发布流程

  • 应用的详细发布步骤,建议参考 经典应用服务 下的 快速入门

控制台限流操作

应用部署完成后,需前往 SOFAStack 控制台 > 中间件 > 微服务平台 > 微服务 > 服务治理 > 服务限流 进行限流任务的创建与配置,详情参见 新增限流规则