什么是架构?

架构刚开始学习感觉很抽象,那到底什么才是架构?

“分解简化”

想象如果要修建一座房子,怎么做?

  • 买砖,瓦,水泥,窗户,门。
  • 挖地基,砌墙
  • 安装窗户,安装门
  • 封顶,铺瓦。

接下来,想一下,要建多大的房子?用来做生意,还是居住?买多少砖,买多大的门窗,买几个?多久能修建完成?总之有很多的问题需要考虑。这些需求就是对架构的约束。有功能性的需求,比如确定要盖三层,有几个阳台,车库等。还有非功能性的需求,比如地基,潮湿,台风,暴雨,抗震能力等。非功能性的需求,也就输系统的质量属性,基本上就决定了采取什么样的架构。比如台风,暴雨,抗震能力等,决定了挖地基深度。

够复杂吧。怎么办? 答:分解,简化

系统这么复杂,就分解吧。地基,砌墙,门,窗。把任务分解之后就简单一些了。比如砌墙,这时候地基已经做好,不用再考虑了,门窗位置大小也决定了,留个位置就好。任务分解之后,我们可以只需要关注当前的任务,人的大脑处理能力有限,某一时间段内,专注于做一件事情会做的很好。

软件架构,其实目的就是为了分解简化,复杂的系统分解成简单的系统后,每个系统尽量保持独立,减少之间的依赖关系(耦合程度),我们集中精力专注于一个小问题,就很容易一一处理。

分层架构,六边形架构,管道过滤器,微服务架构,事件消息模型,都是帮助我们把复杂的系统分解成多个简单的系统,各个子系统可以独立并行开发,各个击破。以后维护某个子系统,需要更新的时候,不会影响其他系统,也就不会影响整个系统架构。子系统甚至可以外包,可以购买,只要保证各子系统边界遵循约定的协议,保证系统集成顺利完成。

架构和设计有什么区别?架构也是设计,但是它更关注的是整体的结构,在整个生命周期中是不大会改变的。就像砌墙,门窗的位置是确定的,以后不太会变动的。但是具体门窗是推拉的,还是双开的,防盗的,还是指纹的,这些都是细节性的问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值