阿里云首页 SOFAStack 微服务

快速入门

本文从本地工程开发到应用的云端发布,再到配置限流,介绍服务限流的整理过程。

操作步骤

  1. 本地工程开发。

    操作步骤请参见 本地实现 SOFARPC 服务

  2. 引入依赖和本地配置。

    • 引入依赖

      在 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 请求进行限流。如果您还需要对内部 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>
  3. 云端发布。

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

  4. 在 SOFAStack 控制台配置限流规则。

    配置步骤,请参见 控制台配置限流规则