序言
在从编程小白到架构师的修炼过程中,所需要学习的知识是非常庞杂的。
我最开始学习架构设计的时候,一直搞不清楚系统如何实现从无序到有序, 上也找不到系统的资料。
这里整理了这些年关于架构设计的知识储备,给一些刚迈入架构师或想要进入架构师行业的同学,一点点参考(内容会逐渐深入)。
一、什么是架构设计/h2>
所谓架构设计,就是用于指导大型软件系统各个方面的设计。而架构师要做的,就是用最小的人力成本满足需求开发和需求变更,用最小的运行成本来保障软件的运行。
常用的方法有:
1.使用微服务架构,把复杂系统拆分成一系列小的服务,再拆成功能模块,让人员更好地分工协作
2.前后端分离,让程序员专注某个知识领域,降低开发难度
3.分层设计,隔离业务逻辑,减少需求变更带来的影响
二、为什么需要架构设计/h2>
原因无他,就是复杂。
1.需求让技术变复杂。小 站与大 站的技术复杂度不是一个等级,想想你自己搭建的个人站和谷歌 站的差别;
2.人员让技术复杂。成员水平不等、擅长技术也不一样,有效协作是考验;
3.技术本身复杂。使用的语言、框架、组件、数据库、大数据等技术,都有学习成本
4.软件稳定运行也复杂。软件上线并不是软件项目的终点,那才是真正考验的开始,因为充满了各种不确定性。比如某明星发个微博可能造成系统瘫痪,又比如有人删库跑路了(参考年初某盟的删库事件)。
正因为存在以上原因,我们才需要架构设计去降低这些复杂性,进而降低开发成本、提升协作效率、保障服务稳定运行。
三、如何做好架构设计/h2>
一般分为四步:
1.分析需求。对产品的需求进行抽象,分析用例,了解各种用户角色和其使用的场景。这是后续工作得以实施的大前提。
2.选择相似的成熟架构设计方案。例如我们前面提到的,微服务架构、前后端分离、分层设计等。
3.自顶向下层层细化。好的实践是自顶向下的,不过早陷入技术细节中,从整体到局部规划,设计好部署架构、分层和分模块、API设计、数据库设计等。
4.验证和优化架构设计方案。这个是贯穿整个设计始终的,一个完整的架构设计方案,是需要有多次的评审,收集多方反馈,反复修改后确定的。
四、总体架构设计分类
1.单体架构
适用场景:适合小项目,用户数,业务处理还比较简单,一两台服务器能支撑起正常的业务处理。
优点:开发简单直接,集中式管理;基本不会重复开发;功能都在本地,没有分布式的管理开销和调用开销
不足:开发效率低、代码维护难、部署不灵活、稳定性不高、扩展性不够
2.水平分层架构
SOA架构,即面向服务架构,是单体架构垂直拆分的结果
适用场景:适合于庞大、 复杂、异构的企业级系统
优点:更易维护、更高的可用性(低耦合)、更好的伸缩性
不足:每个服务还是单体架构,对ESB严重依赖
4.微服务架构
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!