编程小白到架构师的进阶之路(附学习资料)

序言

在从编程小白到架构师的修炼过程中,所需要学习的知识是非常庞杂的。

我最开始学习架构设计的时候,一直搞不清楚系统如何实现从无序到有序, 上也找不到系统的资料。

这里整理了这些年关于架构设计的知识储备,给一些刚迈入架构师或想要进入架构师行业的同学,一点点参考(内容会逐渐深入)。

一、什么是架构设计/h2>

所谓架构设计,就是用于指导大型软件系统各个方面的设计。而架构师要做的,就是用最小的人力成本满足需求开发和需求变更,用最小的运行成本来保障软件的运行。

常用的方法有:

1.使用微服务架构,把复杂系统拆分成一系列小的服务,再拆成功能模块,让人员更好地分工协作

2.前后端分离,让程序员专注某个知识领域,降低开发难度

3.分层设计,隔离业务逻辑,减少需求变更带来的影响

二、为什么需要架构设计/h2>

原因无他,就是复杂。

1.需求让技术变复杂。小 站与大 站的技术复杂度不是一个等级,想想你自己搭建的个人站和谷歌 站的差别;

2.人员让技术复杂。成员水平不等、擅长技术也不一样,有效协作是考验;

3.技术本身复杂。使用的语言、框架、组件、数据库、大数据等技术,都有学习成本

4.软件稳定运行也复杂。软件上线并不是软件项目的终点,那才是真正考验的开始,因为充满了各种不确定性。比如某明星发个微博可能造成系统瘫痪,又比如有人删库跑路了(参考年初某盟的删库事件)。

正因为存在以上原因,我们才需要架构设计去降低这些复杂性,进而降低开发成本、提升协作效率、保障服务稳定运行。

三、如何做好架构设计/h2>

一般分为四步:

1.分析需求。对产品的需求进行抽象,分析用例,了解各种用户角色和其使用的场景。这是后续工作得以实施的大前提。

2.选择相似的成熟架构设计方案。例如我们前面提到的,微服务架构、前后端分离、分层设计等。

3.自顶向下层层细化。好的实践是自顶向下的,不过早陷入技术细节中,从整体到局部规划,设计好部署架构、分层和分模块、API设计、数据库设计等。

4.验证和优化架构设计方案。这个是贯穿整个设计始终的,一个完整的架构设计方案,是需要有多次的评审,收集多方反馈,反复修改后确定的。

四、总体架构设计分类

1.单体架构

适用场景:适合小项目,用户数,业务处理还比较简单,一两台服务器能支撑起正常的业务处理。

优点:开发简单直接,集中式管理;基本不会重复开发;功能都在本地,没有分布式的管理开销和调用开销

不足:开发效率低、代码维护难、部署不灵活、稳定性不高、扩展性不够

2.水平分层架构

SOA架构,即面向服务架构,是单体架构垂直拆分的结果

适用场景:适合于庞大、 复杂、异构的企业级系统

优点:更易维护、更高的可用性(低耦合)、更好的伸缩性

不足:每个服务还是单体架构,对ESB严重依赖

4.微服务架构

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年8月26日
下一篇 2020年8月26日

相关推荐