04 2024 档案
摘要:软件系统复杂度的第三个来源可扩展性。可扩展性指系统为了应对将来需求变化而提供的一种扩展能力,当有新的需求出现时,系统不需要或者仅需要少量修改就可以支持,无须整个系统重构或者重建。 由于软件系统固有的多变性,新的需求总会不断提出来,因此可扩展性显得尤其重要。在软件开发领域,面向对象思想的提出,就是为了
阅读全文
摘要:软件系统复杂度的另外三个来源低成本、安全、规模 低成本 当架构方案只涉及几台或者十几台服务器时,一般情况下成本并不是我们重点关注的目标,如果架构方案涉及几百上千甚至上万台服务器,成本就会变成一个非常重要的架构设计考虑点。 当我们设计“高性能”“高可用”的架构时,通用的手段都是增加更多服务器来满足“高
阅读全文
摘要:软件系统复杂度的第二个来源高可用 系统无中断地执行其功能的能力,代表系统的可用性程度,是进行系统设计时的准则之一。 定义中的关键在于“无中断”,因为无论是单个硬件还是单个软件,都不可能做到无中断,硬件会出故障,软件会有 bug;硬件会逐渐老化,软件会越来越复杂和庞大…… 除了硬件和软件本质上无法做到
阅读全文
摘要:软件系统复杂度的第一个来源高可用 计算机,从电子管计算机到晶体管计算机再到集成电路计算机,运算性能从每秒几次提升到每秒几亿次。但伴随性能越来越高,相应的方法和系统复杂度也是越来越高。现代的计算机 CPU 集成了几亿颗晶体管,逻辑复杂度和制造复杂度相比最初的晶体管计算机,根本不可同日而语。 软件系统中
阅读全文
摘要:架构是为了应对软件系统复杂度而提出的一个解决方案。架构即(重要)决策,是在一个有约束的盒子里去求解或接近最合适的解。这个有约束的盒子是团队经验、成本、资源、进度、业务所处阶段等所编织、掺杂在一起的综合体(人,财,物,时间,事情等)。架构无优劣,但是存在恰当的架构用在合适的软件系统中,而这些就是决策的
阅读全文
摘要:每个程序员心中都有一个成为架构师的梦想,梦想是美好的,但道路是曲折的。原本以为学习架构设计就像学习一门编程语言一样,先学习一下基本的语法,再研究一下细节和原理,然后实践一下就能够快速掌握。但真正实践后才发现,架构设计的难度和复杂度要高很多。 架构设计的历史背景 机器语言(1940 年之前) 最早的软
阅读全文
摘要:大道至简,架构是宏观整体,框架是微观组成。架构是顶层设计,框架是具体实现。 一 、架构设计的历史背景 二、 架构设计的目标(解决软件系统复杂度带来的问题) 2.1、软件系统复杂度问题来源 高性能 2.2、软件系统复杂度问题来源 高可用 2.3、软件系统复杂度问题来源 可扩展性 2.4、软件系统复杂度
阅读全文