软件研发、系统架构中最重要的能力------抽象能力。
架构师先要在大脑中形成抽象概念 ,然后是子模块分解 ,以及子模块之间的沟通方式 ,然后是依次实现 子模块,最后将子模块拼装组合起来,形成最后系统。我们常说编程和架构设计就是搭积木,优秀的架构师受职业习惯影响,眼睛里看到的世界都是模块化拼装组合式的。
思维方式
1、分层思维
构建一套复杂系统,我们把整个系统划分成若干个层次,每一层专注解决某个领域的问题,并向上提供服务。这样的抽象做法,让复杂的事务变得更加清晰有序。有些层次并不一定是横向的,也可以是纵向的,纵向的层次贯穿其他横向层次,称为共享层。
架构案例
中小型的Spring Web应用程序,三层架构:
![](https://img-blog.csdnimg.cn/direct/f99243468c1345d7bc664e2e37298bd4.png)
Linux操作系统
![](https://img-blog.csdnimg.cn/direct/e9173329f4694113addcfc13d89bbbac.png)
TCP/IP协议栈
![](https://img-blog.csdnimg.cn/direct/43948d41ef4e471ca42de319fe094ab8.png)
2、分治思维
分而治之也是应对和管理复杂性的一般性方法。
分治的思维流程:
![](https://img-blog.csdnimg.cn/direct/ddc51f76b28c422e8ab7ec8bcf71ffe7.png)
作者2015年思考Unity3D手游项目开发整体流程时,用分治法抽象出来的对整个问题的分解。
![](https://img-blog.csdnimg.cn/direct/08cc781978af46a6ac82ca52af5f78df.png)
3、演化思维
架构既是设计出来的,同时也是演化出来的,对于互联网系统,基本上可以说是三分设计,七分演化,而且是在设计中演化,在演化中设计,一个不断迭代的过程。
架构师除了要利用自身的架构设计能力,同时也要学会借助用户反馈和进化的力量,推动架构的持续演进,这个就是演化式架构思维。
从单块架构开始,随着架构师对业务域理解的不断深入,也随着业务和团队规模的不断扩大,渐进式地把单块架构拆分成微服务架构的思路,这就是演化式架构的思维。
![](https://img-blog.csdnimg.cn/direct/ddb0c22a187d448d93197df469a31cf1.png)