JavaWeb开发设计(三)可用性方案设计

可用性方面经验不足,暂不做总结。

可以先看这篇文章 https://blog.csdn.net/hustspy1990/article/details/78008324

简单列一下要点:

 

1、常见高可用问题和解决措施

1)机器、机房故障。通过硬件冗余、多机房互备解决。

2)bug或误操作。通过提升研发质量、测试质量、灰度发布等方式解决。

3)突发流量。通过压测提供系统顶流量能力,外部攻击需要做防犯,另外最好有熔断机制。

4)容量不足。进行容量规划、容量预警,可通过限流、降级等解决。

5)依赖服务故障。对于弱依赖降级解耦,对于强依赖切换到备用方案。

 

2、具体的高可用实现方案

1)扩展

扩展分为垂直扩展和水平扩展,垂直扩展是指同一逻辑单元内自扩展,扩展能力有限,如DB垂直分库分表;水平扩展则是通过增加多个逻辑单元,扩展能力强,会增加更多维护成本,如Mysql的主从、应用服务器集群。

2)隔离

隔离级别按粒度从小到大,可以分为线程池隔离、进程隔离、模块隔离、应用隔离、机房隔离。在数据库的使用中,还经常用到读写分离。 

3)解耦

松耦合使得系统的单点故障波及范围可以尽量小。面向接口的设计是松耦合的,只关注接口,不关注实现细节。另外,同步转异步也是解耦的一种方式。

4)限流

一个系统的处理能力是有上限的,当服务请求量超过处理能力,通常会引起排队,造成响应时间迅速提升。并且由于系统过载,处理速度也会变慢,甚至引起雪崩。常见的限流算法有:漏桶、令牌桶、滑动窗口计数等。

5)降级

业务降级,是指牺牲非核心的业务功能,保证核心功能的稳定运行。在后台通过开关控制,降级部分非主流程的业务功能,减轻系统依赖和性能损耗,从而提升集群的整体吞吐率。

6)熔断

为什么要有熔断?很多时候刚开始可能只是系统出现了局部的、小规模的故障,然而由于种种原因,故障影响的范围越来越大,最终导致了全局性的后果。

7)发布相关

在测试、灰度、回滚、历史数据等方面做考虑。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值