通过自定义Java SDK埋点的方式将应用接入AHAS应用防护,可以更加灵活地对任意代码块进行操作。本文介绍如何通过自定义埋点接入AHAS应用防护。

操作步骤

  1. 登录AHAS控制台
  2. 在AHAS控制台左上角,选择应用接入的地域
  3. 在控制台左侧导航栏中选择流量防护 > 应用防护
  4. 应用防护页面右上角单击新应用接入,然后在JAVA语言页签,单击SDK接入,然后单击自定义埋点
  5. 选择以下任意一种方式,在应用中添加应用防护依赖。
    • 在应用的Pom文件中添加以下依赖:
      <dependency>
        <groupId>com.alibaba.csp</groupId>
        <artifactId>ahas-sentinel-client</artifactId>
        <!-- 可指定版本号,最新版本见AHAS控制台应用防护新应用接入页。 -->
        <version>x.y.z</version>
      </dependency>

      自定义埋点页面第一步:添加Pom依赖中查看Pom依赖最新版本,将x.y.z替换为新版本的版本号。

      Spring boot version.png
    • 添加JAR包依赖。

      自定义埋点页面单击请点此链接下载下载压缩包,并将压缩包中的所有JAR包放置在classpath目录下。

  6. 添加埋点,使用以下代码包住您的业务逻辑。
    Entry entry = null;
    try { 
      // HelloWorld为该调用资源名称,控制台上监控、簇点链路会显示该资源。
      // 配置规则的时候也是针对某个资源名称配置。
      // EntryType.IN标识该资源为入口资源,系统规则只针对入口资源生效。
      entry = SphU.entry("HelloWorld", EntryType.IN);
    
      // 被保护的业务逻辑。
      System.out.println("Hello Sentinel!");
    } catch (BlockException e) {
      // 触发流控降级,在此处进行限流处理(如fallback或记录日志)。
    } finally {
      // 请确保exit() 逻辑在此处被调用,并且和SphU.entry() 成对出现。
      if (entry != null) {
        entry.exit();
      }
    }
    说明
    • EntryType用于区分该资源是入口流量(inbound)还是出口流量(outbound),EntryType.IN代表入口流量,EntryType.OUT代表出口流量。系统规则只对入口资源生效。
    • 控制台展示的监控的应用总流量仅统计EntryType.IN的流量。
    • SphU相关API文档请参见常用类及其方法
    • 自定义埋点的资源名称最长不能超过1024个字符。
  7. 配置应用的启动参数。
    //将AppName替换为自定义的应用名称。
    -Dproject.name=AppName
    //将AppName替换为自定义的应用名称,将 <license> 替换为真实值。
    -Dproject.name=AppName
    -Dahas.license=<license>

    若在公网地域,需要查看License信息。请在第三步:配置启动参数区域查看(非公网地域不需要),具体请参见查看License

    自定义license.png
  8. 重启应用。
  9. (可选)使用注解方式配置应用触发限流、降级或系统保护规则时的处理逻辑。 请参见注解方式
    说明 若未执行此步骤,当应用触发流控降级规则时,默认抛出BlockException异常类的子类(触发流控规则,则抛出流控异常FlowException;触发降级规则,则抛出降级异常DegradeException)。

结果验证

登录AHAS控制台,在左侧导航栏选择流量防护 > 应用防护,若在应用防护页面出现该应用的资源卡片且有数据上报,则说明接入成功。

应用防护.png