三步让Dubbo项目快速集成Sentinel
创始人
2025-07-02 11:21:35
0

本文接着《5小步快速集成使用sentinel限流》,继续介绍Dubbo项目如何快速集成使用Sentinel。

1、环境和资源准备

环境和资源准备,参看《5小步快速集成使用sentinel限流》。

2、启动sentinel-dashboard

下载sentinel-dashboard,然后执行命令启动:java -jar sentinel-dashboard-1.8.0.jar

启动完毕后,通过http://localhost:8080/#/dashboard访问dashboard,出现如下界面:

3、项目集成sentinel

项目中集成sentinel分如下3步。

3.1、引入pom



    com.alibaba.csp
    sentinel-core
    1.8.0



    com.alibaba.csp
    sentinel-transport-simple-http
    1.8.0



    com.alibaba.csp
    sentinel-dubbo-adapter
    1.8.0

这里有一点要注意,如果有的项目之前依赖了spring-cloud-alibaba-dependencies,那要先从这个依赖里把sentinel相关依赖排除掉。不排除的情况下,可能会出现代码配置流控规则不生效的问题。


  com.alibaba.cloud
  spring-cloud-alibaba-dependencies
  2.1.3.RELEASE
  pom
  import
  
      
          com.alibaba.csp
          sentinel-annotation-aspectj
      
      
          com.alibaba.csp
          sentinel-cluster-client-default
      
      
          com.alibaba.csp
          sentinel-cluster-common-default
      
      
          com.alibaba.csp
          sentinel-cluster-server-default
      
      
          com.alibaba.csp
          sentinel-datasource-extension
      
      
          com.alibaba.csp
          sentinel-datasource-nacos
      
      
          com.alibaba.csp
          sentinel-parameter-flow-control
      
      
          com.alibaba.csp
          sentinel-reactor-adapter
      
      
          com.alibaba.csp
          sentinel-spring-webflux-webflux-adapter
      
      
          com.alibaba.csp
          sentinel-spring-webflux-webmvc-adapter
      
      
          com.alibaba.csp
          sentinel-datasource-nacos
      
      
          com.alibaba.csp
          sentinel-spring-webflux-webmvc-adapter
      
      
          com.alibaba.csp
          sentinel-core
      
  

3.2、增加sentinel.properties配置

在application.properties同级目录下,增加sentinel.properties文件,配置内容如下:

# 集成到sentinel的项目名称
project.name=dubbo-sentinel-demo
# 对应的sentinel-dashboard地址
csp.sentinel.dashboard.server=localhost:8080

同时需要加载sentinel.properties配置,有两种加载方式,选择一种即可,如下:

3.4、配置需要被限流的资源

文中我依旧使用代码方式配置流控规则,在控制台中也可以直接配置流控规则,为什么不使用控制台方式呢?主要是应用服务器的地址会变化,详细见上一篇文章《5小步快速集成使用sentinel限流》。

流控规则一般会有如下几个:

  • 资源限流规则FlowRule
  • 异常熔断降级规则DegradeRule
  • 系统过载保护规则SystemRule
  • 访问黑白名单规则AuthorityRule

本文继续使用资源限流规则做示例。

注意,Dubbo配置被限流资源时,不能使用打注解@SentinelResource的方式。要使用类名:方法名(参数类名)的方式设置资源名。比如这样下面代码里的RES_KEY或者INTERFACE_RES_KEY:

public class FooProviderBootstrap {

    // 资源名-具体方法
    private static final String RES_KEY = "com.alibaba.csp.sentinel.demo.dubbo.FooService:sayHello(java.lang.String)";
    // 资源名-接口
    private static final String INTERFACE_RES_KEY = "com.alibaba.csp.sentinel.demo.dubbo.FooService";

    public static void main(String[] args) {
        initFlowRule();
        System.out.println("Service provider is ready");
    }

    private static void initFlowRule() {
        FlowRule flowRule = new FlowRule();
        flowRule.setResource(RES_KEY);
        flowRule.setCount(1);
        flowRule.setGrade(RuleConstant.FLOW_GRADE_QPS);
        flowRule.setLimitApp("default");
        FlowRuleManager.loadRules(Collections.singletonList(flowRule));
    }
}

4、启动测试

测试流程与上一篇文章《5小步快速集成使用sentinel限流》类似。只不过这次还需要在搭建一个dubbo-consumer调用dubbo-provider。

Dubbo项目与Web项目展示的限流资源有所不同:

  • 簇点链路:这里Web项目只会展示被限流的资源,而Dubbo只要有接口被调用就会被调用。
  • 资源名称:在展示资源名称时,Web项目展示的是@SentinelResource设置名称,或者代码里设置的资源名,而Dubbo项目只能展示完整的类名+方法名。
  • 资源展示效果如下:

限流效果如下:

5、总结

本文主要介绍Dubbo项目如何快速集成Sentinel实现系统限流。整体步骤和上一篇文章《5小步快速集成使用sentinel限流》类似。只不过有2点需要注意:

  • 老的sentinel依赖要排除掉,采用新的依赖,不排除的话,可能会导致代码里配置的流控规则不生效。
  • 代码设置资源时flowRule.setResource(RES_KEY);,资源定义的格式类名:方法名(参数类名),注意类名和参数类名都需要带上完整路径。不能直接在接口或者实现类的方法上打注解@SentinelResource。

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...
《非诚勿扰》红人闫凤娇被曝厕所... 【51CTO.com 综合消息360安全专家提醒说,“闫凤娇”、“非诚勿扰”已经被黑客盯上成为了“木...
2012年第四季度互联网状况报... [[71653]]  北京时间4月25日消息,据国外媒体报道,全球知名的云平台公司Akamai Te...