1. 限流降级
1.1. 功能截图
1.2. 知识点
说明使用前需要确保应用探针中的限流降级模块开启,还要开启应用架构使用的对应代理开关。
限流降级是通过对应用任何组件的动态代理达到控制请求流量的目的,可代理的组件包括Dubbo模块的入口出口、PE模块的入口出口、Web模块的入口出口。
每种具有独立限流降级配置的单位被称为熔断器(SERVICE/default熔断器,SERVICE/queryUser熔断器)每个熔断器有唯一的资源标识,熔断器类型分为单服务与组合服务两种,单服务是对一个服务进行限流降级控制,组合服务是对多个服务进行限流降级控制,全服务是一种特别的组合服务,相当于是入口或者出口级别的控制。
除了依靠入口(被调用服务)、出口(调用其他服务)和交易名来区分服务,在多个入口时还可以添加channelId来区分具体某个通道。熔断器在启用后包括四种状态:限流,正常,降级,熔断,对应应用的三种状态:正常(熔断器正常时状态)、警告(熔断器限流、降级、熔断有触发次数)、异常(熔断器处于限流、降级、熔断状态)。可以对应用限流、降级、熔断时进行自定义返回异常。
限流降级配置于整个应用之上, 但是可以对每个应用实例进行是否启用。其他具体原理请查阅应用熔断指南文档。
1.3. 功能详述
1.3.1. 应用列表
点击限流降级菜单就会进入应用列表,应用列表种展示所有正在或可使用限流降级的应用实例,其中每个应用系统和应用实例都显示了包括限流/降级/熔断资源数量、当前状态(正常、警告、异常)、限流降级功能的启用状态、应用熔断器配置的查看、熔断器历史、运行统计按钮。
点击应用列表中的限流/降级/熔断资源数,页面弹出模态框展示当前相应的信息, 并对可以处于降级和熔断的服务进行状态恢复,恢复后该熔断器将会处于正常状态。
在使用限流降级时,可以对应用系统或者应用实例进行开启或者关闭,仅当当前应用和应用实例都被启用,该实例限流降级功能才会生效。
- 导出
可以勾选应用,点击导出按钮进行配置导出。
- 导入
点击导入按钮,选择需要导入的配置,对配置进行导入。
1.3.2. 应用配置
应用列表中点击相应应用的配置按钮,即可进入应用配置展示页面。
页面上方有一个简单的应用架构图,同时有两个开关:被调用服务和调用外部服务。要使用限流降级功能必须先将对应开关进行开启。被调用服务对应入口,调用外部服务对应的是出口。如果开关未开启,即使有限流降级配置也不会起作用。
- 新增熔断器配置
资源编号:确定熔断器的唯一编号,在单服务时不需要手动输入,组合服务时需要手动补充编号。
调用类型:调用类型有被调用服务即服务提供端和调用其他服务即服务消费端。
通道:多入口时可以对通道做控制,区分多入口,一般不选。
组合服务:该熔断器类型为单服务还是组合服务,默认为单服务。
服务:具体控制服务范围,单服务类型时只能选择一个;组合服务时可以是所有服务,或者某些服务,或者用正则匹配的服务。
模式单选框:未启用表示该熔断器不产生作用。启用表示熔断器对请求进行统计,同时可进行限流、降级和熔断,熔断器会根据启用的具体内容进行控制。观察模式下熔断器会对请求进行统计,当请求达到一定的异常指标时记录,但不会对请求作出拒绝操作。拒绝则是直接拒绝请求。
熔断器开启功能复选框:在启用模式下才有该数据,表示熔断器要进行的控制手段。
熔断复选框:熔断器允许进入熔断状态,但是熔断状态是由降级状态进入的,所以一般熔断复选框选中,降级也会被选中。
限流类型:限流的种类,并发数和QPS可选其中一种或一起协同控制。
最大并发请求数:通过熔断器的请求最大并发数,如果超过将会进行拒绝。这个配置一定要小于处理的线程池的最大线程数的配置,不然永远不会生效。
最大QPS:通过熔断器的QPS,如果超过将会进行拒绝。每秒新建立一个请求计数器。
降级指标阈值类型:降级熔断的判断指标类型,包括响应时间、异常数、异常比例。
降级检查阈值:熔断器为了性能考虑,不会每一个请求都进行分析统计,分析统计是分析过去一段时间的请求情况,是非常耗用CPU的。 熔断器根据请求并发达到降级检查阈值才会触发统计分析,并根据统计的结果是否进入降级.一般建议设置为最大并发请求数的%60到%80之间。
响应时间阈值(ms):熔断器进行统计分析后,当响应时间大于阈值时,进入降级、熔断。当响应时间小于阈值时进行恢复。
异常数阈值(个):熔断器进行统计分析后,当异常数大于阈值时,进入降级、熔断。当异常数小于阈值时进行恢复。
异常比例阈值(%):熔断器进行统计分析后,当异常比例大于阈值时,进入降级、熔断。当异常比例小于阈值时进行恢复。
降级时间窗口(ms):熔断器进入降级状态时,进行降级的时间窗口,建议60000 到 300000 毫秒之间。
降级后并发请求数:熔断器进入降级状态时,进行允许通过熔断器的最大并发数, 一般建议设置为最大并发请求数的%20到%30之间。
熔断时间窗口(ms):熔断器进入熔断状态时,进行熔断时间窗口,此允许通过熔断器的最大并发数为0,不允许任何请求通过。建议60000 到 180000 毫秒之间。
限流异常信息:限流时的自定义异常信息(默认为:服务忙,请稍后再试)。
限流异常码:限流时的自定义异常码(默认为:999999)。
降级异常信息:降级时的自定义异常信息(默认为:服务繁忙,请稍后再试)。
降级异常码:降级时的自定义异常码(默认为:999999)。
熔断异常信息:熔断时的自定义异常信息(默认为:服务非常繁忙,请稍后再试)。
熔断异常码:熔断时的自定义异常码(默认为:999999)。
- 修改默认熔断器配置
全服务默认配置:全服务有两种,入口、出口,默认配置是入口与出口没有具体配置时使用的默认配置。
单服务默认配置:单服务默认配置是没有对详细服务进行配置时,服务使用的默认配置。
该配置在项目启动时就默认初始化了,但未启用该配置,项目组可按需配置。
- 熔断器其他操作
查看配置:点击熔断器列表的查看按钮即可查看配置。
修改配置:点击熔断器列表的修改按钮即可打开修改模态框,通道和服务熔断器生成后只能进行参数修改,无法修改编号。
修改模式:点击列表中模式按钮切换熔断器的模式。
删除配置:点击熔断器列表的删除按钮即可删除配置。
1.3.3. 请求监控
应用列表中点击当前实例的监控按钮,进入应用的请求监控,监控只会显示开启调用方式那边,包括最近5分钟/30分钟/6小时/1天/7天的统计
1.3.4. 降级历史
该tab展示触发降级熔断记录历史,同时可以通过时间范围、应用、实例、资源编号和事件状态进行条件过滤。
- 查看详情
进入详情会显示熔断器基本信息和线程两部分。
基本信息包括熔断器统计的响应时间、熔断器状态变化、触发实例编号和熔断器配置等信息。
线程信息包括当前并发所有线程的线程栈,同时线程栈可以进行日志和链路的链接。
根据每个线程的线程栈快照,可以快速定位服务存在问题的点:如果大多数线程都卡在相同地方大致可以确定这个地方的代码耗时较久。
1.3.5. 运行统计
该tab展示限流降级的运行情况,展示了应用各种状态下拒绝请求的分布,状态改变的次数。
- 数据查询
查询的条件有应用、实例、资源编号、统计方式、查询范围。统计方式分为按日查询和按月查询,按日|月查询即将查询范围内的数据按日|月的统计单位进行展示。
默认查询时,列表会以应用为维度,不区分实例和熔断器进行数据的展示,操作栏中有两个按钮,分别可以进入该应用实例维度的运行统计和应用熔断器维度的运行统计。
点击操作栏的实例按钮,进入该应用的所有实例维度的运行统计,此维度不区分熔断器。
进入实例维度后,还有个按钮可以进入该实例的熔断器维度统计,这个维度也是最细颗粒的维度展示。
回到应用维度的查询结果,操作栏可以进入应用熔断器维度的运行统计,此维度不区分实例,是按照应用和熔断器编号结合来统计的。
在首页按条件搜索记录时需要注意的是,搜索条件中的资源编号若填写的话,查询的结果为应用熔断器维度,不区分实例,其他条件为过滤条件;熔断器编号为空,同时实例填写不为空的话,查询的结果为实例维度的结果,该结果可以进入某个实例的熔断器维度统计,应用如果填写的话作为过滤条件;只填写了应用时,结果会展示应用维度统计的数据,同时可以进入应用的实例维度或者应用的熔断器维度。
- 规则配置
点击规则配置按钮可以修改运行统计保留天数。