架构师训练营第 11 周课后练习
题目
1.导致系统不可用的原因有哪些?保障系统稳定高可用的方案有哪些?请分别列举并简述。
2.请用你熟悉的编程语言写一个用户密码验证函数,Boolean checkPW(String 用户 ID,String 密码明文,String 密码密文),返回密码是否正确 boolean 值,密码加密算法使用你认为合适的加密算法。
解答
1.服务器每个节点都可能因为硬件故障导致系统不可用,为了保证高可用,一定要用多节点集群,数据库要有主从复制备份。
软件bug也可能导致系统不可用,这个问题主要靠测试和code review避免。
系统发布也可能导致系统不可用,比如发布了一个错误或者有缺陷的版本,发布过程服务不可用。发布之前的版本一定要备份,方便快速回滚。发布要分批进行,可以做到用户无感知。最好有预发布节点,可以提前验证版本的可用性。
并发压力也可能导致系统不可用,重点功能要做好性能压测,不满足性能要求的要做性能优化,异步架构是解决性能问题的有效手段。网络攻击也可能导致系统并发压力过大,要用限流的手段限制请求数。
外部灾害也可能导致系统不可用,比如机房断电、光纤中断。异地多活架构是解决该问题的终极方案,异地多活是指将数据中心发布在不同地点的机房中,每个数据中心都有完整的数据集,可以对外提供完整的服务。异地多活的难度是多个数据中心的一致性。
2.
评论