当前位置: 首页 > news >正文

第1章:架构基础

架构是什么

系统与子系统

系统泛指由一群有关联的个体组成,根据某种规则运作,能完成个别元件不能单独完成的工作的群体。它的意思是“总体”“整体”或“联盟”。

系统泛指由一群有关联的个体组成,根据某种规则运作,能完成个别元件不能单独完成的工作的群体。它的意思是“总体”“整体”或“联盟”。

模块与组件

从逻辑的角度来拆分后得到的单元就是“模块”,从物理的角度来拆分系统得到的单元就是“组件”;划分模块的主要目的是职责分离,划分组件的主要目的是单元复用。

框架与架构

软件框架(Software Framework)通常指的是为了实现某个业界标准或完成特定基本任务的软件组件规范,也指为了实现某个软件组件规范时,提供规范所要求之基础功能的软件产品。

软件架构是指软件系统的“基础结构”,创造这些基础结构的准则,以及对这些结构的描述。

单纯从定义的角度来看,框架和架构的区别还是比较明显的,框架关注的是“规范”,架构 关注的是 “结构”。框架的英文是 Framework,架构的英文是 Architecture。Spring MVC 的英文文档标题就是 “Web MVC Framework”。

重新定义架构

我们参考维基百科的定义,将架构重新定义为:软件架构指软件系统的顶层结构!

这个定义很简单,但包含的信息很丰富,基本上把系统、子系统、模块、组件、架构等概念都串起来了,详细阐述如下。

首先,“系统由一群关联个体组成”,这些“个体”可以是“子系统”“模块”“组件”等,架构需要明确系统包含哪些“个体”。

其次,系统中的个体需要“根据某种规则”运作,架构需要明确个体运作和协作的规则。

第三,维基百科的架构定义中用到了“基础结构”这个说法,我们改为“顶层结构”,可以更好地区分系统和子系统,避免将系统架构和子系统架构混淆导致架构层次混乱。

架构设计的目的

常见误区

因为架构很重要,所以要做架构设计

这是一句正确的废话,架构很重要,但架构为何重要呢?

例如:不做架构设计系统就运行不起来吗?

其实不然, 很多朋友尤其是经历了创业公司的朋友会发现, 公司的初始产品没有架构设计, 大伙撸起袖子简单讨论一下就开始编码了, 根本没有正规的架构设计过程, 而且也许产品开发速度还更快, 上线后运行也还不错。

例如:做了架构设计就能提升开发效率吗?

也不尽然,实际上有时候最简单的设计开发,效率反而是最高的,架构设计毕竟需要投入时间和人力,这部分投入如果用来尽早编码,项目也许会更快。

例如:设计良好的架构能促进业务发展吗?

好像有一定的道理,例如,设计高性能的架构能够让用户体验更好,但反过来想,我们照抄微信的架构,业务就能达到微信的量级吗?肯定不可能,不要说达到微信的量级,达到微信1/10的量级,做梦都要笑醒了。

不是每个系统都要做架构设计吗

这其实是知其然不知其所以然, 系统确实要做架构设计, 但还是不知道为何要做架构设计, 反正大家都做架构设计, 所以做架构设计肯定没错。

这样的架构师或设计师很容易走入生搬硬套业界其他公司已有架构的歧路,美其名曰“参考”“微改进”。一旦强行引入其他公司架构,很可能会出现架构水土不服,运行起来很别扭等各种情况,最后往往不得不削足适履,或者不断重构,甚至无奈推倒重来。

公司流程要求系统开发过程中必须有架构设计

与此答案类似的还有因为“架构师总要做点事情”,所以要做架构设计,其实都是舍本逐末。因为流程有规定,所以要做架构设计;因为架构师要做事,所以要做架构设计。这都是很表面地看问题,并没有真正理解为何要做架构设计,而且很多需求并不一定要进行架构设计。如果认为架构师一定要找点事做,流程一定要进行架构设计,就会出现事实上不需要架构设计但形式上却继续去做架构设计,不但浪费时间和人力,还会拖慢整体的开发进度。

为了高性能、高可用、可扩展,所以要做架构设计

能够给出这个答案,说明已经有了一定的架构经历或基础,毕竟确实很多架构设计都是冲着高性能、高可用等“高 XX”的目标去的。

但往往持有这类观点的架构师和设计师会给项目带来巨大的灾难,这绝不是危言耸听,而是很多实际发生的事情。为何?因为这类架构师或设计师不管三七二十一,不管什么系统,也 不管什么业务,上来就要求“高性能、高可用、高扩展”,结果就会出现架构设计复杂无比,项目落地遥遥无期,团队天天吵翻天等各种让人抓狂的现象,费尽九牛二虎之力将系统上线,却出现运行不够稳定,经常出问题,出了问题很难解决,加个功能要改1个月等各种让人抓狂的事件。

架构设计的真实目的

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

复杂度来源

高性能

软件系统中高性能带来的复杂度主要体现在两方面,一方面是单台计算机内部为了高性能带来的复杂度;另一方面是多台计算机集群为了高性能带来的复杂度。

高可用

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

可扩展性

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

低成本

低成本给架构设计带来的主要复杂度体现在:往往只有“创新”才能达到低成本目标。这里的“创新”既包括开创一个全新的技术领域(这个要求对绝大部分公司太高),也包括引入新技术,如果没有找到能够解决问题的新技术,那么真的就需要自己创造新的技术。

安全

安全本身是一个庞大而又复杂的技术领域,并且一旦出问题,对业务和企业形象影响非常大

从技术的角度来讲,安全可以分为两类:一类是功能上的安全,另一类是架构上的安全。

总结

  • 系统泛指由一群有关联的个体组成,根据某种规则运作,能完成个别元件不能单独完成的工作的群体。它的意思是“总体”“整体”或“联盟”。

  • 子系统也是由一群有关联的个体所组成的系统,多半是更大系统中的一部分。

  • 软件模块(Module)是一套一致而互相紧密关联的软件组织。它分别包含了程序和数据结构两部分。

  • 软件组件定义为自包含的、可编程的、可重用的、与语言无关的软件单元,软件组件可以很容易被用于组装应用程序中。

  • 软件框架(Software Framework),通常指的是为了实现某个业界标准或完成特定基本任务的软件组件规范,也指为了实现某个软件组件规范时,提供规范所要求之基础功能的软件产品。

  • 软件架构指软件系统的顶层结构。

  • 同一软件系统从不同的角度进行分解,会得到不同的架构。

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

  • 主要的软件系统复杂度有高性能、高可用、可扩展、低成本、安全、规模几种。

http://www.gsyq.cn/news/1518573.html

相关文章:

  • pandas MultiIndex实战:百万行数据的高效分析与内存优化
  • 美丽达新材料揭秘:地坪漆外墙仿石漆防水涂料厂家优选 - 变量人生001
  • 避坑必看!2026安徽合肥市全封闭特训学校排名,专业解析青少年叛逆、沉迷游戏、不肯上学、亲子不和 - 辛云教育资讯
  • 嵌入式定时器与DAC实战:从抗噪滤波到自动波形生成
  • ncmdump终极指南:三步解锁网易云音乐NCM格式的完整解决方案
  • 2026年菏泽CPPM和SCMP课程咨询入口:众智商学院官网、400电话和冯老师 - 众智商学院职业教育
  • HCS08硬件调试模块实战:触发设置与跟踪窗口深度解析
  • 别再为文件预览头疼了!在若依SpringBoot+Vue项目中集成kkFileView的完整指南
  • 免费投票工具软件有哪些?2026年5款零收费投票小程序实测横评,防刷+无广告才是真免费 - 微信投票小程序
  • Precision与Recall实战指南:如何在业务代价中做二元决策
  • 如何在Windows 10上实现Android应用原生运行:WSA-Windows-10项目完整技术指南
  • SKkeeper深度解析:Blender形变键与修改器协同处理的技术实现
  • 飞思卡尔56F80x GPIO寄存器配置实战:从内存映射到精准控制
  • i茅台自动预约系统终极指南:如何彻底解放双手实现智能抢购
  • MC68377 QADC64模块:逐次逼近ADC与队列扫描机制详解
  • 终极指南:如何免费解锁Cursor Pro功能并永久享受AI编程助手
  • 突破数字枷锁:3种方式重塑你的音乐自由之旅
  • AutoRaise技术深度解析:macOS窗口悬停激活机制与系统级事件处理架构
  • MC68377 TouCAN控制器寄存器配置与中断管理实战指南
  • 基因组水平转移检测终极指南:从零开始掌握HGTector2完整流程
  • 2026杭州代理记账哪家好? 杭州仟驰企业管理有限公司资质过硬 - 玖叁鹿
  • 告别OPC UA?手把手教你用Python-Snap7在树莓派上搭建低成本PLC数据采集网关
  • 全国工程级火烧板厂家排行:品质与交付能力实测对比 - 奔跑123
  • 2026 宁波热门经典款包包 回收价格会更有优势吗? - 薛定谔的梨花猫
  • BilibiliDown终极指南:一站式B站视频批量下载解决方案
  • 深入解析NXP KE17Z MCU复位与启动机制:从原理到实战避坑指南
  • 终极指南:在Linux上安装Realtek 8922AE WiFi 7网卡驱动的完整教程
  • 2026长沙自然式风格花园庭院设计施工公司排行榜:半山营造位居榜首,七家实力机构深度盘点 - 玖叁鹿
  • 2026 沈阳黄金变现,老店零差评,无票 / 变形 / 断裂黄金正常收 - 讯息早知道
  • MC68328微控制器RTC与定时器模块:从原理到实战编程详解