【架构师训练营第 1 期 11 周】 学习总结
【架构师训练营第 1 期 11 周】 学习总结
这周老师详细讲解了安全架构和高可用的各种挑战和技术手段。可以说这两部分是最考验架构师的技术水平,既需要技术深度,了解技术底层实现,进行针对性优化,也需要技术宽度,不单单只看应用系统,还需要了解服务器和数据库知识,才能更改地设计和优化系统。最终如果需要团队更高效产出,还需要规范好项目开发的流程规范,代码管理等细节。
感觉这3个方向就是程序员到了架构师之后的发展方向。有的人选择继续钻研技术,成为技术大牛,攻克技术难关;有的人知识宽度足够可以成为整体系统架构师或者技术经理,知识面覆盖部门各个领域,做到全面掌控;还有的人规范了流程,提高研发效能成为项目经理。
目前来说随着移动互联网人群增多,还有物联网接入,做到安全和高可用才能够给用户提供安全感。技术架构在满足业务创新时,还要坚守安全和高可用。具体的知识点如下记录,就不一一叙述。
==================================分割线===================================
11.1 安全架构:Web攻击与防护
XSS攻击:JS脚本
SQL注入攻击:获取数据库表结构信息的手段(开源、错误回显、盲注)
CSRF攻击:跨站点伪造请求,防御:表单token
错误码回显
文件上传要校验
路径遍历
终极解决方法:
1.Web应用防火墙:ModSecurity
2.网站安全漏洞扫描
==================================分割线===================================
11.2 安全架构:加密与解密
敏感信息加密
单项散列加密:加盐进行加密
对称加密:一个密钥可以进行加密的解密
非对称加密:加密的密钥和解密的密钥不一样
密钥分片存储,多个环境,避免信息泄漏。
==================================分割线===================================
11.3 安全架构:反垃圾与风控
反垃圾邮件:分类算法训练->分类模型->分类算法识别
分类算法:贝叶斯分类算法(根据关键词判断邮件是垃圾邮件的概率),模型训练(每个特征的概率)->样本分类(提取特征并根据对应的概率进行计算)。
布隆过滤器黑明单:小空间,存储大量的垃圾邮箱地址。只会错判,不会漏判。(需要找资料加深理解)
风控系统:账户、买家、卖家、交易风险
规则引擎:人工配置规则,控制交易风险。可维护性差
机器学习:高风险数据采集,分类算法,进行风险分值。
==================================分割线===================================
11.4 高可用:可用性度量
可用性标准:99.99%可用,一年大约53分钟不可用
网站年度可用性指标=(1 - 网站不可用时间/年度总时间) * 100%
网站不可用时间(故障时间) = 故障修复时间点 - 故障发现(报告)时间点
99%:基本可用,停机时间小于88小时;
99.9%:高可用,停机时间小于9小时;
99.99%:具有自动恢复能力的高可用,年度停机时间小于53分钟:
99.999%:极高可用性,年度停机时间小于5分钟;
故障分管理,不同故障不同权重分数。每个人计算故障分数,每个人对故障都负对应的责任。
故障归属记入绩效考核,可以驱动大家主动优化系统。
引起故障的原因:
硬件故障
软件bug
系统发布
并发压力
网络攻击
外部灾害
==================================分割线===================================
11.5 高可用:提升系统可用性的架构方案
解耦:
高内聚、低耦合的组件设计原则
面向对象基本设计原则
面向对象设计模式
领域驱动设计建模
隔离:
业务与子系统隔离
微服务与中台架构
生产者消费者隔离
虚拟机与容器隔离
异步:
多线程编程
反应式编程
异步通信网络编程
事件驱动异步架构
备份:
集群设计
数据库复制:CAP原理
失效转移(Failover)
数据库主主失效转移
负载均衡失效转移
如何确认失效,需要转移
设计无状态的服务
幂等
事务补偿:
传统事务的ACID:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)
分布式事务的BASE:基本可用(Basic Availability)、软状态(Soft-state)、最终一致性(Eventual consistency)
事务补偿:通过执行业务逻辑逆操作,使事务回滚到事务前状态
重试:注意上下游超时时间设置
熔断:三种状态:关闭、打开、半开。
限流:计数器算法、令牌桶算法、漏桶算法
自适应限流
降级
异地多活
==================================分割线===================================
11.6 高可用:架构运维方案
系统发布
自动化测试
自动化部署
持续部署:持续集成->持续交付->持续部署
预发布验证
代码版本控制:分支开发,主干发布
自动化发布
灰度发布:逐步发布应用
网站运行监控:用户行为日志收集、服务器性能监控、
监控管理:报警、自动控制
高可用的价值观:
保持简单,使问题易于发现,快速解决。
目标明确,解决特定环境下的具体问题。
价值回归,成本收益要合理。
==================================分割线===================================
11.7 高可用故障案例分析
故障原因:
1.硬盘可用空间不足,log文件日志级别配置错误,导致日志暴增。
2.数据库Load居高不下,超过正常水平。即使有索引,由于访问太多,也会产生压力。
3.应用不定时地因为响应时间而报警,由于单例对象中多个方法使用了synchronized修饰符。
4.突然间数据库服务器Load飙升,数据库Memcached服务器关掉了几十台,导致读压力转移到数据库。
5.应用发布后,服务器立即崩溃。JBoss没启动好,Apache就开放请求了。导致大量请求阻塞。
6.上传图片非常慢,大文件操作占用了IO。
7.应用突然变慢,有人进行压力测试。
8.数据库Load飙升,代码没有访问缓存。
9.少量用户无法访问,新用户没有构造对象,导致空指针。
版权声明: 本文为 InfoQ 作者【Bear在挨踢】的原创文章。
原文链接:【http://xie.infoq.cn/article/a22360d5129625e0fb95975e3】。文章转载请联系作者。
评论