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是阿里巴巴开源的分布式服务化治理框架(微服务框架),久经阿里巴巴电商平台的大规模复杂业务的高并发考验,到目前为止Dubbo仍然是开源界中体系最完善的服务化治理框架,因此Dubbo被国内大量的的互联网公司和...
dubbo资源 dubbo-admin dubbo demo
dubbo示例代码dubbo-sample
本套视频从分布式系统的基本概念出发,由浅入深,讲解了RPC原理,Dubbo基本使用,Dubbo高可用场景以及Dubbo原理,涉及了分布式系统中服务注册、服务发现、负载均衡、灰度发布、集群容错、服务降级等核心概念的讲解及...
incubator-dubbo-dubbo-2.6.1
前段时间排查某问题的时候,想要快速知道某些dubbo接口(三无)的响应结果,但不想启动项目(因为这些项目不是你负责的,不会部署而且超级笨重),也不想新建一个dubbo客户端项目(占地方),也不想开telnet客户端...
用maven构建项目使用spring和multicast广播注册中心方式实现Dubbo入门之hello world(用maven构建项目使用spring和multicast广播注册中心方式实现Dubbo入门之hello world(简单测试版)文档说明以及源码
解决dubbo接口自定义异常的捕捉问题,dubbo消费者可以捕捉到提供者所抛出的自定义异常。
at com.alibaba.dubbo.remoting.exchange.support.DefaultFuture.returnFromResponse(DefaultFuture.java:190) at com.alibaba.dubbo.remoting.exchange.support.DefaultFuture.get(DefaultFuture.java:110) at ...
本项目只适合dubbo入门学习者,高手请不要浪费金钱; 本项目技术栈 springboot, dubbo ,无 zookeeper 本项目旨在提供最单纯的 dubbo 服务提供者 和消费者的点对点直连,而摒弃任何多余技术对dubbo直连的理解
构建dubbo项目的时候会遇到: Multiple annotations found at this line: - cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be found for element 'dubbo:application'. - ...
dubbo源码解析2.dubbo源码解析2.dubbo源码解析2.dubbo源码解析2.dubbo源码解析2.dubbo源码解析2.dubbo源码解析2.dubbo源码解析2.dubbo源码解析2.dubbo源码解析2.dubbo源码解析2.dubbo源码解析2.
【BAT必备】dubbo面试题【BAT必备】dubbo面试题【BAT必备】dubbo面试题【BAT必备】dubbo面试题【BAT必备】dubbo面试题【BAT必备】dubbo面试题【BAT必备】dubbo面试题【BAT必备】dubbo面试题【BAT必备】dubbo面试题...
首先,从知识层面对Dubbo有一个了解和认识,请看《Dubbo培训与实战.pptx》,然后把Dubbo用到实际项目中来,请看实例代码《Dubbo实例代码(Sping+Dubbo+Maven).zip》,里面包括dubboDemoProvide和dubboDemoConsumer...
dubbo+zookeeper缓存方案 dubbo+zookeeper缓存方案dubbo+zookeeper缓存方案dubbo+zookeeper缓存方案
spring_dubbo spring_dubbospring_dubbospring_dubbospring_dubbospring_dubbospring_dubbospring_dubbospring_dubbospring_dubbospring_dubbospring_dubbospring_dubbospring_dubbospring_dubbospring_dubbospring_...
dubbo资源包
Dubbo是Alibaba开源的分布式服务框架,我们可以非常容易地通过Dubbo来构建分布式服务,并根据自己实际业务应用场景来选择合适的集群容错模式,这个对于很多应用都是迫切希望的,只需要通过简单的配置就能够实现...
Dubbo监控系统配置Dubbo监控系统配置Dubbo监控系统配置