架构师训练营 第十一周 作业
导致系统不可用的原因有哪些?保障系统稳定高可用的方案有哪些?请分别举例并简述。
导致系统不可用的原因
硬件层面
硬件故障,如内存、硬盘、网卡等
软件层面
操作系统安全、性能漏洞
基础组件安全、性能漏洞
如 Tomcat, Nginx, Jenkins(几乎每周都会有新的漏洞)
软件 bug
软件高并发导致的不可用
网络黑客攻击
XSS/SQL Injection/CRSF/Error code echo
外界环境层面
地震、火灾
电子、电磁干扰
社会宗教层面,如游行、示威等
听说某国外大型网站就在黑人游行疫情期间,大量服务器被抢,导致网站服务不稳定。
保障系统稳定高可用的方案
异地多机房架构
使用高可用集群
解决单机硬件故障
可对高并发进行负载均衡
安全高可用
使用应用防火墙
定期打好系统、基础组件安全补丁
使用 Coverity, Sonar 等工具对代码进行安全扫描
优化软件及架构,使用:
微服务
分布式缓存/图片缓存
消息队列
CDN
高并发场景下,做好熔断、限流、降级等措施
高可用的系统运维(DevOps)
持续集成 - CI & 持续交付 - CD
Source Control -> Build -> Test -> Deploy -> Release
灰度发布/蓝绿发布/金丝雀/滚动发布
监控系统关键指标
自动回滚
请用你熟悉的编程语言写一个用户密码验证函数,
Boolean checkPW(String 用户 ID,String 密码明文,String 密码密文)
返回密码是否正确 boolean 值,密码加密算法使用你认为合适的加密算法。
版权声明: 本文为 InfoQ 作者【一雄】的原创文章。
原文链接:【http://xie.infoq.cn/article/88e9caf83434c1d0f34e8a5b3】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论