TpsLimitFilter:
我们这里以TpsLimitFilter为例来说明Filter的实现。TpsLimitFilter用于限制远程调用的TPS,即每秒可以执行多少次远程调用。其源码如下:
首先,根据Activate注解可以看到,该Filter的激活条件是服务提供方,并且URL中配置了名为Constants.TPS_LIMIT_RATE_KEY的参数。该Filter持有一个TPSLimiter的实例,然后调用其isAllowable方法判断一次调用是否被允许。
TPSLimiter是一个接口,只有一个isAllowable方法,参数是URL和调用上下文。
代码如下
TPSLimiter 默认实现 DefaultTPSLimiter 代码如下:
首先从URL中获取配置的限制,限制由两个参数组成,表示在interval毫秒的时间内允许执行rate个调用,默认周期是60秒,不限制速率。实际的判断动作委托给StatItem类,每个服务设置了tps限制的服务都有一个StatItem类的实例,DefaultTPSLimiter持有所有这些实例。StatItem保存了限制信息和调用次数,并负责判断当次调用是否允许,判断代码如下,算法是,首先看本次调用距上次调用是否超过了一个限制周期,如果超过,则记录当前的时间作为重新统计的复位时间,如果没有,则看调用次数有没有超过限制的次数。
代码如下:
正常测试案列:
异常测试案列:
上面这个异常是,Constants.TPS_LIMIT_RATE_KEY设置的为5,
所以 filter.invoke(invoker, invocation) 循环5次;可以正常的运行,
一旦超过5次,就会出现异常。
相关推荐
Dubbo之《尚硅谷》学习笔记
Dubbo是一个高性能、轻量级的开源Java RPC框架,它提供了丰富的服务治理功能,是阿里巴巴开源的重要组件之一。在这个资源包中,我们关注的焦点是Dubbo-admin,它是Dubbo服务治理的核心工具,以及一个基础的Dubbo示例...
【Dubbo 示例代码详解】 Dubbo 是阿里巴巴开源的一款高性能、轻量级的Java服务治理框架,它主要提供了RPC(远程过程调用)服务,并且包含了服务注册与发现、负载均衡、容错处理、监控等全面的服务治理功能。本示例...
【标题】"incubator-dubbo-dubbo-2.6.1" 是一个Apache Incubator项目Dubbo的特定版本,这里的2.6.1表示该版本是Dubbo的稳定分支之一。 【描述】提到的"incubator-dubbo-dubbo-2.6.1"表明这是Apache孵化器中的Dubbo...
dubbo源码dubbo-dubbo-2.7.3.rardubbo源码dubbo-dubbo-2.7.3.rardubbo源码dubbo-dubbo-2.7.3.rardubbo源码dubbo-dubbo-2.7.3.rardubbo源码dubbo-dubbo-2.7.3.rardubbo源码dubbo-dubbo-2.7.3.rardubbo源码dubbo-dubbo...
【标题】"dubbo admin jdk1.8" 指的是使用Java开发工具包(JDK)1.8版本运行的Dubbo管理控制台。Dubbo是阿里巴巴开源的一个高性能、轻量级的服务治理框架,它提供了服务注册、服务发现、调用监控等功能。在JDK1.8...
Dubbo是阿里巴巴开源的分布式服务化治理框架(微服务框架),久经阿里巴巴电商平台的大规模复杂业务的高并发考验,到目前为止Dubbo仍然是开源界中体系最完善的服务化治理框架,因此Dubbo被国内大量的的互联网公司和...
《Dubbo技术详解与实战应用》 Dubbo是一款由阿里巴巴开源的高性能、轻量级的服务治理框架,它致力于提供一个简单、高效的分布式服务解决方案。在Java世界里,Dubbo已经成为了微服务架构的重要组成部分,其核心特性...
### Dubbo监控系统配置详解 #### 一、Dubbo监控系统概述 Dubbo是一款高性能、轻量级的开源服务框架,旨在提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。Dubbo提供了包括服务自动注册与发现、...
【标题】"dubbo-admin包"是Dubbo框架的一个重要组成部分,主要用作服务治理的管理界面。这个压缩包包含了运行Dubbo管理控制台所需的所有文件,使得开发者和运维人员可以方便地监控、管理和配置Dubbo服务。 【描述】...
在IT行业中,Dubbo是一个非常知名的Java开源框架,主要用于实现分布式服务治理。它由阿里巴巴开发并维护,旨在提供高性能、轻量级的服务间调用方案。"dubbo.xsd"文件是Dubbo框架中用于XML配置文件解析的重要组成部分...
本套视频从分布式系统的基本概念出发,由浅入深,讲解了RPC原理,Dubbo基本使用,Dubbo高可用场景以及Dubbo原理,涉及了分布式系统中服务注册、服务发现、负载均衡、灰度发布、集群容错、服务降级等核心概念的讲解及...
前段时间排查某问题的时候,想要快速知道某些dubbo接口(三无)的响应结果,但不想启动项目(因为这些项目不是你负责的,不会部署而且超级笨重),也不想新建一个dubbo客户端项目(占地方),也不想开telnet客户端...
《Dubbo实战:消费者、提供者与简单监控》 Dubbo是阿里巴巴开源的一款高性能、轻量级的服务治理框架,广泛应用于分布式系统中的服务调用。本篇将详细讲解基于dubbo-demo-consumer、dubbo-demo-provider和dubbo-...
在IT行业中,分布式服务框架是构建大型互联网应用的关键技术之一,Dubbo作为阿里巴巴开源的一款高性能、轻量级的Java RPC框架,受到了广泛的关注和使用。本文将基于"Dubbo入门之HelloWorld"的主题,深入探讨如何从零...
本人实际测试过,这两个包可用。...2.修改dubbo-monitor中的conf目录中的dubbo.properties dubbo.registry.address 与 dubbo-admin中的配置一样 3.到dubbo-monitor中的bin目录下运行 start.sh脚本 ok
在分布式服务框架 Dubbo 中,异常处理是必不可少的一部分。Dubbo 提供了强大的异常处理机制,使得服务提供者能够向消费者传递自定义异常,从而帮助消费者更好地理解和处理服务调用中的错误情况。本文将深入探讨如何...
【标题】:Dubbo监控——Dubbo-Monitor详解 【描述】:Dubbo-Monitor是Dubbo框架中的一个重要组成部分,它提供了对服务治理的实时监控功能。作为一个强大的微服务治理工具,Dubbo-Monitor能够帮助开发者和运维人员...
《Dubbo示例与官方配置解析》 Dubbo,作为阿里巴巴开源的一款高性能、轻量级的服务治理框架,已经成为Java世界中分布式服务的重要选择。本文将深入探讨“dubbo示例”、“dubbo官方配置文档”以及相关的“dubbo培训...