Week11 作业
导致系统不可用的原因有哪些?保障系统稳定高可用的方案有哪些?请分别列举并简述。
1.并发压力,压垮应用,方案:利用消息队列进行分割隔离核心组件,分批消费消息,减缓压力。
2.数据库资源耗尽,导致应用不可用。方案:做数据库集群,如 mysql 的主主,mongo 集群等,及时做好数据备份。
3.应用代码逻辑异常,没有做异常处理,导致整个应用奔溃。方案:做分布式部署,多部署代码应用副本数,用负载均衡做流量接入,也可以用类似 docker 或者监控程序,发现应用主进程奔溃后,重启主进程。
请用你熟悉的编程语言写一个用户密码验证函数,Boolean checkPW(String 用户 ID,String 密码明文,String 密码密文),返回密码是否正确 boolean 值,密码加密算法使用你认为合适的加密算法。
复制代码
如上,采用 werkzeug 库的 hash 加随机盐的方式,进行加密,保证每个用户即使源密码明文相同,加密后的密码也不同,这是网上广为流传的方式,不过实际使用上也是存在问题的,因为加密的密码包含了加密的算法,盐和 hash 值,只要数据库泄露了,加上这个库的算法公开,很容易破解。
评论