Dubbo服务限流
为了防止某个消费者的QPS或是所有消费者的QPS总和突然飙升而导致的重要服务的失效,系统可以对访问流量进行控制,这种对集群的保护措施称为服务限流。
Dubbo中能够实现服务限流的方式较多,可以划分为两类:直接限流与间接限流
- 直接限流:通过对连接数量直接进行限制来达到限流的目的。(官方方案汇总)
- 间接限流:通过一些非连接数量设置来达到限制流量的目的。(我的偶像总结-Reythor雷)
一、executes直接限流– 仅提供者端
该属性仅能设置在提供者端。可以设置为接口级别,也可以设置为方法级别。限制的是服务(方法)并发执行数量。
类级别,服务器端并发执行(或占用线程池线程数)不能超过 10 个
<dubbo:service interface="com.foo.BarService" executes="10" />
方法级别,服务器端并发执行(或占用线程池线程数)不能超过 10 个
-
<dubbo:service interface="com.foo.BarService">
-
<dubbo:method name="sayHello" executes="10" />
-
</dubbo:service>
二、accepts限流 – 仅提供者端
该属性仅可设置在提供者端的<dubbo:provider/>与<dubbo:protocol/>。用于对指定协议的连接数量进行限制

或

三、actives限流 – 两端
该限流方式与前两种不同的是,其可以设置在提供者端,也可以设置在消费者端。可以设置为接口级别,也可以设置为方法级别
A、提供者端限流
根据消费者与提供者间建立的连接类型的不同,其意义也不同
- 长连接:表示当前长连接最多可以处理的请求个数。与长连接的数量没有关系
- 短连接:表示当前服务可以同时处理的短连接数量
类级别
<dubbo:service interface="com.foo.BarService" actives="10" />
方法级别
-
<dubbo:reference interface="com.foo.BarService">
-
<dubbo:method name="sayHello" actives="10" />
-
</dubbo:service>
B、消费者端限流
根据消费者与提供者间建立的连接类型的不同,其意义也不同:
- 长连接:表示当前消费者所发出的长连接中最多可以提交的请求个数。与长连接的数量没有关系。
- 短连接:表示当前消费者可以提交的短连接数量
类级别
<dubbo:reference interface="com.foo.BarService" actives="10" />
方法级别
-
<dubbo:reference interface="com.foo.BarService">
-
<dubbo:method name="sayHello" actives="10" />
-
</dubbo:service>
四、 connections限流
可以设置在提供者端,也可以设置在消费者端。限定连接的个数。对于短连接,该属性效果与actives相同。但对于长连接,其限制的是长连接的个数。
一般情况下,会使connectons与actives联用,让connections限制长连接个数,让actives限制一个长连接中可以处理的请求个数。联用前提:使用默认的Dubbo服务暴露协议
A、提供者端限流
类级别

方法级别

B、消费者端限流
类级别

方法级别

五、间接限流
(1) 延迟连接 – 仅消费者端
仅可设置在消费者端,且不能设置为方法级别。仅作用于Dubbo服务暴露协议。
将长连接的建立推迟到消费者真正调用提供者时。
可以减少长连接的数量
-
<!--设置当前消费者对接口中的每个方法发出链接采用延迟加载-->
-
<dubbo:reference id="userService" lazy="true"
-
interface="com.dubbo.service.UserService"/>
-
<!--设置当前消费者对所有接口中的所有方法发出链接采用延迟加载-->
-
<dubbo:consumer lazy="true"></dubbo:consumer>
六、粘连连接 – 仅消费者
仅能设置在消费者端,其可以设置为接口级别,也可以设置为方法级别。仅作用于Dubbo服务暴露协议
其会使客户端尽量向同一个提供者发起调用,除非该提供者挂了,其会连接另一台。只要启用了粘连连接,其就会自动启用延迟连接
其限制的是流向,而非流量
类级别

方法级别

七、负载均衡
可以设置在消费者端,亦可设置在提供者端;可以设置在接口级别,亦可设置在方法级别。其限制的是流向,而非流量

官方介绍
http://dubbo.apache.org/zh-cn/docs/user/demos/concurrency-control.html
Dubbo服务限流的更多相关文章
- Spring Cloud Alibaba | Sentinel: 服务限流基础篇
目录 Spring Cloud Alibaba | Sentinel: 服务限流基础篇 1. 简介 2. 定义资源 2.1 主流框架的默认适配 2.2 抛出异常的方式定义资源 2.3 返回布尔值方式定 ...
- Spring Cloud Alibaba | Sentinel: 服务限流高级篇
目录 Spring Cloud Alibaba | Sentinel: 服务限流高级篇 1. 熔断降级 1.1 降级策略 2. 热点参数限流 2.1 项目依赖 2.2 热点参数规则 3. 系统自适应限 ...
- 【4】JMicro微服务-服务限流
如非授权,禁止用于商业用途,转载请注明出处作者:mynewworldyyl 通过配置SMethod的maxSpeed属性实现服务限流,单位是个/每秒(qps),也就是服务方法每秒允许接收的最大请求个数 ...
- Hystrix-服务降级-服务熔断-服务限流
Hystrix简介 Hystrix是一个用于处理分布式系统的延迟和容错的开源库,在分布式系统里,许多依赖不可避免的会调用失败,比如超时.异常等,Hystrix能够保证在一个依赖出问题的情况下,不会导致 ...
- Spring Cloud微服务限流之Sentinel+Apollo生产实践
Sentinel概述 在基于Spring Cloud构建的微服务体系中,服务之间的调用链路会随着系统的演进变得越来越长,这无疑会增加了整个系统的不可靠因素.在并发流量比较高的情况下,由于网络调用之间存 ...
- 通过Dapr实现一个简单的基于.net的微服务电商系统(七)——一步一步教你如何撸Dapr之服务限流
在一般的互联网应用中限流是一个比较常见的场景,也有很多常见的方式可以实现对应用的限流比如通过令牌桶通过滑动窗口等等方式都可以实现,也可以在整个请求流程中进行限流比如客户端限流就是在客户端通过随机数直接 ...
- SpringCloud微服务:Sentinel哨兵组件,管理服务限流和降级
源码地址:GitHub·点这里||GitEE·点这里 一.基本简介 1.概念描述 Sentinel 以流量为切入点,从流量控制.熔断降级.系统负载保护等多个维度保护服务的稳定性.包括核心的独立类库,监 ...
- Spring Cloud Alibaba系列(五)sentinel实现服务限流降级
一.sentinel是什么 sentinel的官方名称叫分布式系统的流量防卫兵.Sentinel 以流量为切入点,从流量控制.熔断降级.系统负载保护等多个维度保护服务的稳定性.在Spring Clou ...
- 微服务架构 | 5.2 基于 Sentinel 的服务限流及熔断
目录 前言 1. Sentinel 基础知识 1.1 Sentinel 的特性 1.2 Sentinel 的组成 1.3 Sentinel 控制台上的 9 个功能 1.4 Sentinel 工作原理 ...
随机推荐
- 我罗斯方块最终篇(Player类、Game类)
我罗斯方块最终篇(Player类.Game类) |--------------------项目GitHub地址--------------------| 目录 我罗斯方块最终篇(Player类.Gam ...
- pytest-allure测试报告
该类型的警告大多属于版本更新时,所使用的方法过时的原因,可以在该方法的说明出查找替换的方法 1.安装allure a)下载allure.zip https://github.com/allure-fr ...
- Centos8 Docker部署ElasticSearch集群
ELK部署 部署ElasticSearch集群 1.拉取镜像及批量生成配置文件 # 拉取镜像 [root@VM-24-9-centos ~]# docker pull elasticsearch:7. ...
- Apache ShardingSphere 5.0.0 内核优化及升级指南
经过近两年时间的优化和打磨,Apache ShardingSphere 5.0.0 GA 版终于在本月正式发布,相比于 4.1.1 GA 版,5.0.0 GA 版在内核层面进行了大量的优化.首先,基于 ...
- [ Skill ] 图形化组件在注册 User Trigger 时需要注意的事情
https://www.cnblogs.com/yeungchie/ 使用 deRegUserTriggers 可以用来配置:当打开一个新窗口时,自动集成自定义的菜单.工具栏等等. 使用格式如下: d ...
- 数值分析:矩阵奇异值分解(Numpy实现)
1. 奇异值分解(SVD) (1)奇异值分解 已知矩阵\(\bm{A} \in \R^{m \times n}\), 其奇异值分解为: \[\bm{A} = \bm{U}\bm{S}\bm{V}^T ...
- 带你了解Typescript的14个基础语法
摘要:Typescript可以说是JavaScript的超集,在JS的基础上新增了许多语法特性,使得类型不再可以随意转换,能大大减少开发阶段的错误. 本文分享自华为云社区<Typescript基 ...
- 洛谷 P3994 高速公路(斜率优化)
题目链接 题意:给出一棵树,\(1\) 号点为根,边上有边权. 每个点有两个参数 \(p_i,q_i\) 如果你想从 \(i\) 号点到与其距离为 \(d\) 的 \(j\) 号点,那么你需花费 \( ...
- C++ and OO Num. Comp. Sci. Eng. - Part 4.
命名空间与文件(Namespaces and Files) 在 C++ 中,命名空间为包含相关声明与定义的逻辑单元. 将一个大程序分割为不同部分并且将其储存在不同的文件中可以实现模块化编程. 未命名的 ...
- 为什么Mysql用B+树做索引而不用B-树或红黑树
B+树做索引而不用B-树 那么Mysql如何衡量查询效率呢?– 磁盘IO次数. 一般来说索引非常大,尤其是关系性数据库这种数据量大的索引能达到亿级别,所以为了减少内存的占用,索引也会被存储在磁盘上. ...