架构师训练营 - 第 11 周作业
导致系统不可用的原因有哪些?保障系统稳定高可用的方案有哪些?请分别列举并简述。
系统不可用的原因:
硬件故障
软件bug
系统发布
并发压力
网络攻击
外部灾害
保障系统稳定高可用的方案有哪些:
解耦: 高内聚低耦合的系统设计,出问题时更易排查,也能更好的进行隔离防止相互影响和进行横向扩容
隔离:相互隔离,防止互相影响
异步:异步调用,不会阻塞在某个异常的环节
备份:冗余备份,防止单点故障
Failover(失效转移):当某个服务不可服务时,可以转移到可服务的节点
幂等: 执行多次的结果是一样的
事务补偿:最终一致性
重试:偶尔的实败时,进行重试,如网络波动等重试后可恢复
熔断:出现频繁出错时,熔断一段时间,不再发起请求
限流:对超过服务容量的请求进行限制,防止系统因为负载过高而服务异常
降级:当服务压力过大,适当的舍弃掉部分不重要的功能
异地多活:在多个地方机房同时部署服务,当某地机房异常时,可以由另外的机房进行服务
请用你熟悉的编程语言写一个用户密码验证函数,Boolean checkPW(String 用户 ID,String 密码明文,String 密码密文)返回密码是否正确 boolean 值,密码加密算法使用你认为合适的加密算法。
总结
组件设计原则
降低软件复杂度,拆分成更小粒度的组件
内聚性原则
1.组件内聚原则
复用发布等同原则;复用粒度与发布粒度一致;版本号:主版本号.次版本号.修订号
2.共同封闭原则
同时修改、为同一目的而修改的类放到一个组件中
3.共同复用原则(接口隔离原则)
不要依赖不需要的功能
耦合原则
1.无循环依赖原则
2.稳定依赖原则;不应该依赖一个比自己更不稳定的组件
3.稳定抽象原则;稳定的组件时抽象的
组件的边界与依赖关系涉及技术、业务、人员的因素
安全架构
网络攻击
1.XSS 跨站脚本攻击
反射型XSS:用户自己去点击攻击链接才能触发XSS代码
存储型XSS:恶意代码存储在服务器中,每当有用户访问该页面的时候都会触发代码执行
防御手段:危险字符转义
2.SQL注入攻击
sql预编译参数绑定
3.CSRF 跨站点请求伪造
表单Token
Referer
验证码
4.其他问题漏洞
返回的错误码
html注释
文件上传
路径遍历
如何解决安全问题
WEB应用防火墙 ModSecurity
网站安全漏洞扫描
信息加密技术及密钥安全管理
1.加密算法
单向散列加密
明文->salt->密文
对称加密
明文->密钥-(加密算法)->密文->密钥-(解密算法)->明文
非对称加密
明文->加密密钥-(加密算法)->密文->解密密钥-(解密算法)->明文
2.密钥安全管理与加解密服务系统架构
密钥多人保管(多地存储)
3.反垃圾邮件
贝叶斯分类算法:特征值、概率
布隆过滤器黑名单
4.电子商务风控
规则引擎
机器学习
高可用
可用性指标
例子:99.99% 一年不可用时间大约53分钟
故障分管理
不同故障级别设置不同分数(先解决故障,再进行故障复盘,分析故障级别,确定责任者)
故障处理及考核
故障原因
网络攻击
硬件故障
软件BUG
系统发布
并发压力
外部灾害
高可用架构
解耦:设计原则、模式;建模
隔离:系统间隔离
异步:多线程、反应式、异步通信、事件驱动
备份:集群、数据库复制
失效转移:
幂等
事务补偿:ACID、BASE;代码逻辑逆操作
重试
熔断
限流:计数器、令牌桶、漏桶
自适应限流
降级
异地多活
高可用系统运维
发布:集群、负载均衡
自动化测试:selenium
自动化部署
持续部署
预发布验证
代码版本控制
自动化发布
灰度发布
网站运行监控
监控数据采集
用户行为日志收集
服务器性能监控
业务数据报告
监控管理
监控系统架构
评论 (1 条评论)