架构师训练营 11 周 -- 命题作业
导致系统不可用的原因有哪些?保障系统稳定高可用的方案有哪些?请分别列举并简述。
导致系统不可用的原因如下:
硬件故障:服务器硬件故障导致宕机
软件缺陷:中间件或者应用程序出现bug,导致服务停止
系统发布:因为发布的新系统中有bug,或者发布过程中出现问题(比如应用更新了,但是数据库没有更新),导致不可用,应该立刻回滚至上一个版本
并发压力:大量的用户并发,导致应用服务承受不了,触发熔断或者限流,或者缓存被击穿,数据库被频繁访问,响应时间变长
网络攻击:网络攻击占用大量带宽,正常访问无法进入。
外部灾害:机房停电,光缆断掉,等
针对以上的原因,保障高可用的方案有:
使用集群备份服务,通过负载均衡器,将请求分散路由到不同的机器上
遵循面向对象的软件设计原则,采用微服务架构,降低耦合,做好业务上的隔离
制定代码版本控制规范,才有自动化部署,自动化测试,做好灰度发布,正式上线前做好预发布验证。
根据业务设置熔断、限流策略;做好运维监控,自动化失效转移和扩容;做好数据库主主备份,缓存集群,保证存储的高可用
通过散列加密存储用户密码;使用非对称加密保证敏感信息网络上的传输;采用对称加密,保证敏感信息在硬盘上的存储;使用web防火墙应对常见的网络攻击。
采用异地多活应对机房级别的故障。
请用你熟悉的编程语言写一个用户密码验证函数,Boolean checkPW(String 用户 ID,String 密码明文,String 密码密文),返回密码是否正确 boolean 值,密码加密算法使用你认为合适的加密算法。
版权声明: 本文为 InfoQ 作者【骏马】的原创文章。
原文链接:【http://xie.infoq.cn/article/e98bc90b2edae78fcd6332637】。未经作者许可,禁止转载。
评论