发布日期:
2021-08-01
更新日期:
2023-08-05
文章字数:
629
阅读次数:
什么是高可用
- 高可用描述的是一个系统在大部分时间都是可用的,可以为我们提供服务的。
- 高可用代表系统即使在发生硬件故障或者系统升级的时候,服务仍然是可用的。
相关概念
限流
限流
是从用户访问压力的角度来考虑如何应对系统故障。
限流
是为了对服务端的接口接受请求的频率进行限制,防止服务挂掉。比如某一个接口的请求限制为100个每秒,对超过限制的请求放弃处理或者放到队列中等待处理。
限流
可以有效应对突发请求过多。
降级
降级
是从系统功能优先级的角度考虑如何应对系统故障。
服务降级
指的是当服务器压力剧增的情况下,根据当前业务情况及流量对一些服务和页面有策略的降级,以此释放服务器资源以保证核心任务的正常运行。
熔断
熔断
和降级
是两个比较容易混淆的概念,两者的含义并不相同。
降级
的目的在于应对系统自身的故障,而熔断
的目的在于应对当前系统依赖的外部系统或者第三方系统的故障。
排队
- 另类的一种
限流
,类比于现实世界的排队。比如LOL一有大活动就需要排队(很久)才能进入游戏。
集群
超时和重试机制
- 一旦用户的请求超过某个时间得不到响应就结束此次请求并抛出异常。
- 如果不进行
超时设置
可能会导致请求响应速度慢,甚至导致请求堆积进而让系统无法再处理请求。
重试
次数一般设为3次,再多次重试
并没有好处,反而会加重服务器压力(部分场景使用失败重试机制会不太合适)
现阶段总结
- 没有做过
限流
- 了解但没实际应用过
降级
- 了解但没实际应用过
熔断
- 目前项目在
集群
方面是做到多机房多实例
- 目前项目在
超时/重试
方面有对请求做重试(一般是3次),大部分用到的dubbo接口都会指定超时时间(3~5s)
参考
Java Guide