系统高可用
导致系统不可用的原因有哪些?保障系统稳定高可用的方案有哪些?请分别列举并简述。
请用你熟悉的编程语言写一个用户密码验证函数,Boolean checkPW(String 用户 ID,String 密码明文,String 密码密文)返回密码是否正确 boolean 值,密码加密算法使用你认为合适的加密算法。
一、系统不可用的原因,主要从这几个方面来考虑:
硬件故障
软件 bug
系统发布
并发压力
网络攻击
外部灾害
1、系统自身的原因
程序 bug-代码问题造成的 OOM 异常等,可通过 codereview 等手段
日志太多磁盘空间不足,可采用系统监控检查来避免
2、系统架构的原因
带宽不够-高峰期网络拥堵,没做限流熔断等
缓存雪崩、缓存穿透,可采用缓存时间粒度随机,对没有数据的返回空对象。
运维发布失败 ,可采用代码版本控制,灰度发布等
证书到期,不可访问,用脚本提前通知来避免
3、外在的原因
黑客攻击:
网络攻击,可采用加防火墙的方式。
xss 攻击
sql 注入攻击
CSRF 攻击
errorCode 回显
文件上传
路径遍历
第三方组件/插件漏洞攻击
以上的预防手段可以用个安全渗透测试来验证系统是否安全可用来解决。
4、其它
地震、火灾等 可用异地多活的方式解决。
保证系统高可用的方案:
1、集群部署,关键系统采用熔断、降级、限流等措施
2、灰度发布
3、代码 review
4、安全漏洞扫描,包含模拟安全攻击等
5、完善的监控和报警机制
6、根据需求做好压测和安全渗透测试
二、工具类如下
复制代码
具体调用方法为:
复制代码
评论 (1 条评论)