Week 11 命题作业
导致系统不可用的原因有哪些?保障系统稳定高可用的方案有哪些?请分别列举并简述。
高并发导致应用服务器/数据服务器宕机
解决方案
网络层面:多机房部署,同城多机房,异地多活;
硬件层面:提升服务器物理配置,如CPU核数、内存和硬盘大小,网卡的带宽等;
服务熔断和降级:如果下游服务出现大量超时或者异常,对业务影响较小的服务进行熔断和降级;
服务限流:针对上游请求要做好流量控制,防止上游系统被恶意攻击 或者 上游系统因为自身代码不规范出现循环调用,需要对某些系统做好流量控制,避免对用户的请求造成影响;
高并发导致系统性能下降
解决方案
操作系统:优化操作系统参数,选择稳定的操作系统;
组件层面:用【性能较好】的组件 代替 原组件, 或者将原有组件升级为稳定的新版本;
虚拟机层面:选择合适的JVM虚拟机垃圾收集器,如 对于【停顿时间敏感】的业务,选择 CMS 或者 G1 这类【并发】收集器,并且可以适当扩大【新生代】的大小,保证垃圾对象在新生代就被回收,减少GC次数;
架构层面: 服务拆分,将单体应用拆分为多个微服务;对于【读多写少】场景,采用【分布式缓存】提升读性能,对于【写多】场景,将数据库进行分片,或者使用【消费队列】,降低数据库压力;
WEB攻击
黑客或者一些恶意用户,使用WEB攻击手段造成系统不可用;
XSS攻击
跨站脚本攻击,XSS攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。
提交的数据包含攻击脚本,用户提交的请求中不能包含可执行的脚本;
对HTML的特殊字符如 "<", ">" 等进行转义;
SQL注入攻击
获取数据库表结构信息的手段:
开源:采用开源软件搭建软件,如Discuz!,网站数据结构是公开的,攻击者可以直接获得;
错误回显:网站开启错误回显,攻击者故意构造非法参数;不能把异常直接返回给用户;
盲注:网站关闭错误回显,攻击者根据页面变化情况判断SQL语句的执行情况;
防攻击手段
正则匹配:对SQL操作的关键字进行 正则或标记;
SQL预编译参数绑定;
CSRF攻击
防攻击手段
表单Token;
验证码;
Referer Check;
网关统一拦截
WEB应用防火墙,如开源的ModSecurity
请用你熟悉的编程语言写一个用户密码验证函数,Boolean checkPW(String 用户 ID,String 密码明文,String 密码密文)返回密码是否正确 boolean 值,密码加密算法使用你认为合适的加密算法。
评论