访问限流

引入依赖

修改应用根目录下的pom.xml,为 polaris-java 添加 dependencyManagement:

  1. <dependencyManagement>
  2. <dependencies>
  3. <dependency>
  4. <groupId>com.tencent.polaris</groupId>
  5. <artifactId>polaris-dependencies</artifactId>
  6. <version>${version}</version>
  7. <type>pom</type>
  8. <scope>import</scope>
  9. </dependency>
  10. </dependencies>
  11. </dependencyManagement>

然后只需要在 标签中在添加 polaris-all 即可

  1. <dependencies>
  2. <dependency>
  3. <groupId>com.tencent.polaris</groupId>
  4. <artifactId>polaris-all</artifactId>
  5. </dependency>
  6. </dependencies>

初始化 polaris.yaml

你需要在项目的 main/resources 下创建一个 polaris.yaml 文件用于初始化 polaris-java SDK。polaris.yaml配置详细

SDK实例构建

当初始化好 polaris.yaml 文件之后,你可以直接 import com.tencent.polaris.ratelimit.factory, 使用 LimitAPIFactory 中的方法进行构造一个 ProviderAPI SDK 实例

  1. import com.tencent.polaris.ratelimit.factory.LimitAPIFactory;
  2. public static void main(String[] args) throws Exception {
  3. LimitAPI limitAPI = LimitAPIFactory.createLimitAPI();
  4. }

请求配额

  1. QuotaRequest quotaRequest = new QuotaRequest();
  2. // 设置需要进行限流的服务信息:设置命名空间信息
  3. quotaRequest.setNamespace(String namespace);
  4. // 设置需要进行限流的服务信息:设置服务名称信息
  5. quotaRequest.setService(String service);
  6. // 设置本次被调用的方法信息
  7. quotaRequest.setMethod(String method);
  8. // 设置本次的请求标签
  9. quotaRequest.setArguments(Set<Argument> arguments)
  10. // 设置需要申请的请求配额数量
  11. quotaRequest.setCount(1);

说明:

如果当前 QuotaRequest 还不支持 setArguments 方法,同时服务端版本 >= 1.11.0,SetLabels 对应的 key 名称如下:

  • 路径: $path
  • 方法: $method
  • 请求头: $header.{标签键}
  • 请求参数: $query.{标签键}
  • 主调服务: $caller_service
  • 主调IP: $caller_ip
  • 自定义: {标签键}

发起配额申请请求

你在初始化完 QuotaRequest 结构体后,只需要调用 LimitAPI.getQuota 方法即可完成服务限流

  1. QuotaResponse resp = limitAPI.getQuota(registerRequest)

如何基于 polaris-java 客户端完成一个服务限流的程序