【架构师训练营第 1 期 11 周】 学习总结

用户头像
Bear在挨踢
关注
发布于: 2020 年 12 月 06 日

【架构师训练营第 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.少量用户无法访问,新用户没有构造对象,导致空指针。



发布于: 2020 年 12 月 06 日阅读数: 14
用户头像

Bear在挨踢

关注

还未添加个人签名 2019.02.16 加入

还未添加个人简介

评论

发布
暂无评论
【架构师训练营第 1 期 11 周】 学习总结