架构实战营毕业总结
时光飞逝,转眼间实战营课程已经结束。这里要感谢华仔老师的精心教学,和极客时间工作人员们为优质课程背后的付出。
去年年底,在极客时间上看到《架构实战营》的预告,当时心里满是期待与激动。从业多年,自己也在不断摸索程序员的进阶之路,架构、管理都有些许涉及,但未曾有过系统的学习,且结构方面的书籍、教程并不多,所以进步缓慢。所以在年初实战营报名直播的时候,就报名学习。现在实战营教学课程已经结束,真的是收获颇丰,有拨云见日的感觉。这里就梳理一下学习到的重点知识吧。
一、4R 架构
1. 软件架构是指软件系统的顶层结构(Rank),它定义了系统由哪些角色(Role)组成,角色之间的关系(Relation)和运作规则(Rule)。
2. 架构设计环
3. 架构设计三原则
合适原则、简单原则、演化原则
4. 鸡蛋篮子理论
拆分、叠加、冗余
二、数据库存储架构
1. 读写分离
1.1 注意点:业务持续增长;先优化,再重构。
2. 分库分表
2.1 注意点:Join 问题;分布式事务。
3. 分片架构
3.1 通过叠加叠加更多服务器来提升写性能和存储性能。
3.2 注意点:分片规则;路由规则
4. 存储架构设计步骤
4.1 估算性能需求;选择存储系统;设计存储方案。
三、多级缓存架构
1. 设计关键
1.1. 性能需求;架构复杂度。
2. 数据缓存
2.1. 设计核心:用什么缓存系统;如何应对数据一致性挑战。
2.2. 应用场景:实时性要求高的业务,读多写少。
3. 结果缓存
3.1. 设计核心:用什么缓存系统;缓存有效期与结果新鲜度的平衡。
3.2. 应用场景:计算量大但实时性要求高的业务场景。
4. 分布式缓存架构设计思路
主备存储->读写分离->(读写分离+缓存)/(数据分片+缓存)
四、多级负载均衡架构
1. 掌握各级负载均衡不同方案的性能量级。
五、微服务架构
1. 拆分技巧:DDD;三个火枪手原则
2. 技术挑战:分布式事务;全局幂等;接口兼容;接口循环调用。
3. 基础设施
4. 模式:SDK;反向代理;网络代理。
六、高可用架构
1. FLP 定理
1.1. 限定条件:确定性协议;异步网络通信;所有存活节点
1.2. FLP 不可能三角
2. CAP 定理
2.1. CAP 三大限定条件:分布式;数据存储;同时满足
2.2. CAP 不可能三角
2.3. 细节:复制延迟;描述粒度。
3. BASE 理论
4. 业务级灾备架构
4.1. 同城多中心
4.2. 跨城多中心
4.3. 跨国数据中心
5. 异地多活架构模式
5.1. 业务定制型
5.2. 业务通用型
5.3. 存储通用型
6. 基于 ZooKeeper 实现高可用架构
七、集群架构
1. Redis Sentinel 设计技巧
2. MongoDB Replication 设计技巧
3. Elasticsearch 集群设计技巧
4. Redis cluster 设计技巧
5. MongoDB/HDFS 集群设计技巧
八、架构重构与演进
1. 架构重构:通过对系统结构(4R)来修改系统质量问题而不影响整体系统能力。
2. 手段:增、删、改、拆、合
3. 技巧
3.1. 先局部优化后架构重构
3.2. 有的放矢
3.3. 合纵连横:说服业务方;说服其他团队
3.4. 运筹帷幄:问题分类;问题排序;逐一攻破
4. 架构演进:通过设计新的系统架构(4R)来应对业务和技术的发展变化。
4.1. 关键点:新架构;新的复杂度。
4.2. 模式
4.3. 业务驱动主动演进技巧:做好预判;提前布局
4.4. 业务驱动被动演进技巧:快速响应;拿来主义
4.5. 技术驱动演进原则:新瓶装旧酒;价值
4.6. 技术驱动演进技巧:做好洞察;提前布局、
从上面重点知识梳理,可以看出,架构师需要非常丰富的知识储备,涉及知识的广度和宽度和深度。自己也意识到以后要成为一个优秀的架构师,还有很长的路要走。
这里也提出一些自己学习课程时的一些感受或建议。因为自己没有大厂的工作经历,也没有大型电商系统的开发经历,多是传统行业软件的开发,所以就有种比较尴尬的情况:课虽然听得懂,但是自己却没多少实际感受,想做作业却无从下手,如果因为一些特殊情况,如加班、生病,落下过 1 次,2 次作业,就有些跟不上节奏感觉。这个时候就会希望老师能够在后面的课程中,抽一点时间做一下作业的讲解,这样可能能提高我们吸收知识点的润滑度。
最后,再次感谢老师、班班和极客时间工作人员们的付出,推出这么好的课程。
评论