架构师训练营 第 11 周总结
本周内容:
安全架构
高可用系统的度量
高可用系统架构
高可用系统的运维
安全架构
攻击与防御
XSS攻击
攻击:前端注入恶意脚本
防御:转义HTML危险字符
SQL注入
攻击:提交sql语句
防御:过滤参数中的sql敏感信息;sql预编译;
CSRF
攻击:伪造用户请求
防御:token校验
安全保障的手段
应用防火墙
漏洞扫描
信息加密:特别是密码加密后存储
反垃圾邮件:贝叶斯分类
业务流程安全:电子商务风险控制,有规则引擎、机器学习的方法;
高可用系统度量
使用系统不可用时间评估系统高可用性;
重点是要进行故障的管理,特别是故障的处理流程、故障review定级、确定责任人等;
高可用系统架构
引起故障的原因
硬件故障:服务器、CPU、内存、网络等不可用;
软件BUG:由于代码逻辑问题,或者代码本身设计不合理导致软件服务不可用;
系统发布:发布流程不规范、不严谨,或者测试不完善,或者没考虑好迭代的依赖;
并发压力:并发过大导致系统资源耗尽;
网络攻击:存在安全漏洞;
外部灾害:火灾、地震、战争等不可抗拒因素。
保障系统高可用的方案
合理的代码设计:解耦、隔离,保证软件正常的维护和迭代;
异步:异步编程、通信,提高响应性能;
备份:服务集群化、数据备份;
失效转移:数据库、负载均衡等策略,保证部分节点失效不影响整体服务可用性;
幂等:敏感的操作保证幂等,避免数据异常;
事务补偿:数据库事务;分布式的最终一致性;或者用业务逻辑逆操作,回滚到事务前的状态;
重试:服务短暂不可用时可用来避免对正常流程的影响;
熔断:某个服务故障时,调整服务状态(打开、关闭或半打开),进行保证服务可用;
限流:限制进行服务的流量、并发等,保证服务并发在可控范围内;
降级:服务资源紧张时,只保留核心功能,避免重要的服务不可用;
异地多活:避免机房单点;
高可用系统的运维
自动化测试
自动化部署
持续集成、持续交付、持续部署
预发布验证
代码版本控制
自动化发布
灰度发布
服务监控
服务告警
评论