概述
由于实习内容跟数据库中间件相关,分布式数据库的一些基础内容更是重中之重。无奈自己对分布式的一些基础知识并没啥掌握,这里就把日常不懂的一些概念啥的来记录学习一下~
熔断(过载保护)
概念
一般是指软件系统中,由于某些原因使得服务出现了过载现象,为防止造成整个系统故障,从而采用的一种保护措施。服务熔断一般是某个服务(下游服务)故障引起
熔断的三个状态
- Closed(关闭):熔断器关闭状态,调用失败次数积累,到了阈值(或一定比例)则启动熔断机制。
- Open(断开):熔断器打开状态,此时对下游的调用都内部直接返回错误,不经过网络,设计了一个时钟选项,默认的时钟达到了一定时间(一般设置成平均故障处理时间),到了这个时间,进入半熔断状态。
- Half-Open(半开):半熔断状态,允许定量的服务请求,如果调用都成功(或一定比例)则认为恢复了,关闭熔断器,否则认为还没恢复,又回到熔断器打开状态。
降级
概念
一般指整体的资源即将耗尽,为了保留关键的服务而舍弃非核心的服务的做法。服务降级一般是从整体负荷考虑
资源隔离
服务提供者可以对服务需求者进行限流;服务需求者也可以对自身使用了服务提供者的线程进行资源限制隔离,调用某个服务提供者的逻辑不会耗光自身的线程池资源。
超时降级
配置好超时时间和超时重试次数和机制,并使用异步机制探测回复情况。
失败次数降级
主要是一些不稳定的api,当失败调用次数达到一定阀值自动降级,同样要使用异步机制探测回复情况。
故障降级
如要调用的远程服务挂掉了(网络故障、DNS故障、HTTP服务返回错误的状态码),则可以直接降级。降级后的处理方案有:默认值(比如库存服务挂了,返回默认现货)、兜底数据(比如广告挂了,返回提前准备好的一些静态页面)、缓存(之前暂存的一些缓存数据)
限流降级
当访问量太大而导致系统崩溃时,使用限流来进行限制访问量,当达到限流阀值,后续请求会被降级。降级后的处理方案可以是:排队页面、错误页等。
本文参考:并发编程