Week11 命题作业(系统不可用原因、高可用方案与编写密码验证函数)
1、导致系统不可用的原因有哪些?保障系统稳定高可用的方案有哪些?请分别列举并简述。
答:
①导致系统不可用的原因:
服务器硬件故障
软件本身的bug
并发压力过大超过系统的承载能力
需要停机的软件版本发布
网络攻击
不可抗力因素: 如地震、火灾或突然的停电
②高可用方案:
针对硬件故障: 采用多台物理服务器组成集群同时提供服务
针对软件bug: 提高编码人员异常考虑意识,定期进行故障案例分享
针对并发压力过大:
可采取限流的方式保护系统
降级: 特殊情况下综合衡量利弊,下线非核心功能,优先保证核心功能正常运行
针对系统发布:
自动化测试
自动化部署
预发布验证
代码版本控制
灰度发布模式:每天只发布一部分服务器,观察运行稳定没有故障,第二天继续发布一部分服务器,持续几天的时间才把整个集群全部发布完毕,期间如果发现问题,就只需要回滚已发布的一部分服务器即可
必须要有系统运行监控
针对网络攻击:
请求过滤与消毒
关闭错误回显,统一导向错误页面
SQL预编译参数绑定
表单Token、验证码、Referer check
上线前去掉HTML注释
只允许上传可靠的文件类型
将JavaScript、CSS等资源文件独立服务器、独立域名,其他文件不使用静态URL访问,动态参数不包含文件路径信息
Web应用防火墙ModSecurity
不定期安全漏洞扫描
信息加密技术及密钥安全管理
针对不可抗力: 采用异地多活,将数据中心分布在多个不同地点的机房里,这些机房都可以对外提供服务,用户可以连接任何一个机房进行访问
2、请用你熟悉的编程语言写一个用户密码验证函数,Boolean checkPW(String 用户 ID,String 密码明文,String 密码密文)返回密码是否正确 boolean 值,密码加密算法使用你认为合适的加密算法。
评论