美文网首页
从0开始学软件架构

从0开始学软件架构

作者: Fred_wdl | 来源:发表于2018-12-14 22:10 被阅读0次

在极客时间上定了一个专栏,讲软件架构的,昨天开始学习,一口气看了10章,讲得真不错,把架构相关的背景、概念、原则梳理得很清晰,再结合一些实际开发的案例,让人很容易就吸收了,在这里做一个笔记,加深理解。

什么是软件架构:

要理解架构,首先要知道什么是系统,看看看维基百科定义的“系统”:

系统泛指由一群有关联的个体组成,根据某种规则运作,能完成个别元件不能单独完成的工作的群体。

概念里有几个关键点:

1.关联,个体之间要有关联,没有关联的个体组不能组成系统。一个轮胎和一个显示器放一起,没有任何意义。

2.规则,个体之间要按照一定规则协同配合,比如一台电脑,显示器用来输出,键盘用来输入,主机用来计算,它们之间按照一定的规则配合起来才能形成一个整体。

3.功能,个体按照一定规则关联起来,就能完成个体无法实现的功能,把一堆汽车零件组装好,加上油,就可以上路了,而任何单个零件是跑不起来的。

理解了系统,我们再来看什么是架构:

架构就是软件系统的顶层结构用建筑打比方,架构就是构造软件系统的图纸。

架构设计的真正目的

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

人们经常拿建筑和软件系统做对比,其实软件系统比建筑复杂的多,一个建筑按照图纸做完之后,基本上不会再变了。而软件系统是一直处于变化之中的,业务需求在不断变化增加,软硬件技术在持续升级,数据也在不停累积,这就导致软件系统的复杂度非常高,架构设计的目的就是为了解决这一问题。

软件系统复杂度的来源

1.高性能要求,为了提高性能,现在的计算机都是多核多线程的,同时为了应付大规模的用户访问,还要把单台计算机联合起来,组成分布式的集群,这都为软件架构设计带来了困难。

2.高可用的要求,高可用是指软件系统对外服务的能力,比如银行系统对高可用有着极高的要求,一年之内停机的时间不能超过几小时。为了达到这一要求,在架构时需要考虑很多问题:计算高可用、存储高可用以及状态决策高可用。

3.可扩展性的要求,对一个软件系统来说,唯一不变的就是变化,我们在设计一个系统时,就要考虑到未来的发展,这需要我们能预测到变化,同时想好如何应对变化,其中的难度可想而知。

4.低成本、安全、规模的要求。我们希望构建完美的软件系统,但是资源是有限的,我们如何用有限的成本保证系统的安全可靠。还有随着系统规模越做越大,功能越来越复杂,如何保证系统的性能和可维护性,也是一个难点。

架构设计三原则

合适原则:合适优于业界领先

适合自己的才是最好的,结合公司实际的情况和资源,做出当下最优的选择即可。

简单原则:简单优于复杂

复杂意味着容易出错,不易维护,简单意味着灵活易修改

演化原则:演化优于一步到位

软件设计最忌讳过度优化,往往是浪费资源,应该随着需求和技术发展慢慢演化,不断丢弃错误的设计,保留好的精髓,持续完善软件系统。

先记录这些,未完待续。

相关文章

  • 从0开始学软件架构

    在极客时间上定了一个专栏,讲软件架构的,昨天开始学习,一口气看了10章,讲得真不错,把架构相关的背景、概念、原则梳...

  • 从0开始学架构

    什么是高可用? https://time.geekbang.org/column/article/6895?utm...

  • 从0开始学架构

    一.开篇词 架构为什么有难度 1. 架构设计的思维和程序设计的思维差异很大。 架构设计的关键思维是判断和取舍,程序...

  • 从0开始学架构

    架构设计的目的 主要目的是为了解决软件系统复杂度带来的问题。 架构设计的三大原则 合适、简单、演化1、合适优于业界...

  • 架构设计之复杂度的6个来源

    第67篇 极客时间《从0开始学架构》课程笔记。 架构设计的目的 架构设计的主要目的是为了解决软件系统复杂度带来的问...

  • 一 架构到底是什么?

    根据《从零开始学架构》课程整理和摘要 0、我的理解 架构,就是框架结构,比如盖一栋房子的钢筋框架即是架构,软件架构...

  • 微内核架构

    第85篇 极客时间《从0开始学架构》课程笔记。 定义 微内核架构(Microkernel Architecture...

  • 【充电】学习《从0开始学架构》

    最近两周看了这个专栏。极客时间上的。同事发的盗版资料。后来我注册了极客时间,发现我曾经购买过。跟风购买(朋友圈看到...

  • 从0开始学架构 - 高可用存储架构

    极客时间,李运华《从0开始学架构》随堂笔记https://time.geekbang.org/column/int...

  • 小白学基金

    从0开始学基金(第一篇) 从0开始学基金(第二篇) 从0开始学基金(第三篇) 从0开始学基金(第四篇) 从0开始学...

网友评论

      本文标题:从0开始学软件架构

      本文链接:https://www.haomeiwen.com/subject/vysnhqtx.html