从0开始学架构_01:架构设计的本质和目的

程序员的成长绕不开架构设计,有时架构设计就像鸿沟一样挡在程序员晋升之路上,只要跨过去就可以海阔天空。

最近学习了李运华老师在极客时间的《从0开始学架构》文章,收获颇多,从课程中可以学习到:

  • 理解架构设计的本质和目的;

  • 掌握高性能和高可用架构模式;

  • 走进 BAT 标准技术架构实战;

  • 从编程到架构,实现思维跃迁。

在学习时,为了理解深刻便于复习思考整理了思维导图笔记,大家可以参考学习(本文暂时只是记录了基础架构的知识,其他章节的笔记后续再继续整理)。

架构的定义

架构是顶层设计;框架是面向编程或配置的半成品;组件是从技术维度上的复用;模块是从业务维度上职责的划分;系统是相互协同可运行的实体。

架构设计的历史背景

软件架构的出现有其历史必然性。

20 世纪 60 年代第一次软件危机引出了“结构化编程”,创造了“模块”概念;

20 世纪 80 年代第二次软件危机引出了“面向对象编程”,创造了“对象”概念;

到了 20 世纪 90 年代“软件架构”开始流行,创造了“组件”概念。

我们可以看到,“模块”“对象”“组件”本质上都是对达到一定规模的软件进行拆分,差别只是在于随着软件的复杂度不断增加,拆分的粒度越来越粗,拆分的层次越来越高。

架构设计的目的

架构设计的主要目的是为了解决软件系统复杂度带来的问题。

架构复杂度来源

高性能:

软件系统中高性能带来的复杂度主要体现在两方面,

1.单台计算机内部为了高性能带来的复杂度;

2.多台计算机集群为了高性能带来的复杂度。

高可用:

系统无中断地执行其功能的能力,代表系统的可用性程度,是进行系统设计时的准则之一。

高性能增加机器目的在于“扩展”处理性能;高可用增加机器目的在于“冗余”处理单元。

可扩展性:

可扩展性指系统为了应对将来需求变化而提供的一种扩展能力,当有新的需求出现时,系统不需要或者仅需要少量修改就可以支持,无须整个系统重构或者重建。

设计具备良好可扩展性的系统,有两个基本条件:正确预测变化、完美封装变化

低成本:

我们首先设定一个成本目标,当我们根据高性能、高可用的要求设计出方案时,评估一下方案是否能满足成本目标,如果不行,就需要重新设计架构;如果无论如何都无法设计出满足成本要求的方案,那就只能找老板调整成本目标了。

安全:

安全本身是一个庞大而又复杂的技术领域,并且一旦出问题,对业务和企业形象影响非常大。从技术的角度来讲,安全可以分为两类:一类是功能上的安全,一类是架构上的安全。

规模:

规模带来复杂度的主要原因就是“量变引起质变”,当数量超过一定的阈值后,复杂度会发生质的变化。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值