1 软件架构定义和两派之争
1 定义:(归结起来就是两大派)
2 组成派和决策派
组成派:
决策派:
组成派是将每个组件一个一个组成一个完整的系统。
决策派是将根据我们产品的需求来决定几个方案,然后根绝业务来判断这几个业务是否符合这个产品,例如方案1哪儿哪儿不太好,方案2虽然哪儿有点不好,但是很符合我们。
2 软件架构的目的-做IT界的莫扎特
1 桥梁
要了解客户的需求,也要了解我们产品经理希望我们的产品是什么样子(既满足大众的需求,又要满足小部分的特定的需求)。
2 指引
关注我们产品怎么研发,关注我们产品上线,上线后我们产品是否达到产品经理和客户的需求,我们的非功能性是不是能实现高可用,高并发,高吞吐量,还有很强的安全性,做到指引性,指引我们研发怎么研发,运维怎么更好的运维等。
3 分割
我们不能把某个功能模块分割的太小,而另外一个功能模块分割的太大,比如我们的领域驱动的领域划分,service层的service划分,相对均衡,每个服务都有他的亮点,每个服务都能成为一个主域,一个核心功能。
4 交互
我们将我们分割的静态模块,进行动态的链接。我们可以选择消息队列,rpc,等交互方式。
5 决策
我们决策一些技术难点,比如说,我们要选择开放式框架还是封闭式架构,是开源的还是闭源的等实现高可用。还有非常小的细节,比如类的改动,或者数据库一个表和另外一个表紧耦合还是松耦合的处理。
6 演进
当客户需求变动的时候,我们应该维持架构的整体的基调,但是呢我们要跟着客户的需求进行少量的变化。
三个面试题