从0开始学架构——架构解释

1.架构到底是什么

1.1系统与子系统

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

关键内容:

  1. 关联:系统是由一群有关联的个体组成,没有关联的个体堆在一起不能称为系统。例如,把一个发动机和一台PC放在一起不能称之为系统,而把发动机、底盘、轮胎、车架组合起来才能称为一台汽车。
  2. 规则:系统内的个体要按照指定的规则运行,即规则规定了系统内个体分工和协作的方式。例如,汽车发动机负责产生动力,然后通过变速器和转动轴,将动力输出到车轮上,从而驱动汽车前进。
  3. 能力:系统能力和个体能力有本质的差别,不是个体能力之和,而是产生了新的能力。如,汽车能够载重前进,而发动机、变速器、传动轴、车轮本身都不具备这样的能力。

子系统也是由一群有关联的个体所组成的系统,多半会是更大系统中的一部分。其实子系统的定义和系统定义是一样的,只是观察的角度有差异,一个系统可能是另外一个更大系统的子系统。

按照这个定义,系统和子系统比较容易理解。我们以微信为例来做一个分析。

1. 微信本身是一个系统,包含聊天、登录、支付、朋友圈等子系统。

2. 朋友圈这个系统又包括动态、评论、点赞等子系统。

3. 评论这个系统可能又包括防刷子系统、审核子系统、发布子系统、存储子系统。

4. 评论审核子系统不再包含业务意义上的子系统,而是包括各个模块或者组件,这些模块或者组件本身也是另外一个维度上的系统。例如,MySQL、Redis 等是存储系统,但不是业务子系统。

1.2模块与组件

   模块和组件都是系统的组成部分,只是从不同的角度拆分系统而已。

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

   以一个最简单的网站系统来为例。假设我们要做一个学生信息管理系统,这个系统从逻辑的角度来拆分,可以分为“登录注册模块”“个人信息模块”“个人成绩模块”;从物理的角度拆

分,可以拆分为 Nginx、Web 服务器、MySQL。

1.3框架与架构

      软件框架(Software framework)通常指的是为了实现某个业界标准或完成特定

基本任务的软件组件规范,也指为了实现某个软件组件规范时,提供规范所要求之

基础功能的软件产品。

      关键点:

        1. 框架是组件规范:例如,MVC 就是一种最常见的开发规范,类似的还有 MVP、MVVM、 J2EE 等框架。

2. 框架提供基础功能的产品:例如,Spring MVC 是 MVC 的开发框架,除了满足 MVC 的规 范,Spring 提供了很多基础功能来帮助我们实现功能,包括注解(@Controller 等)、 Spring Security、Spring JPA 等很多基础功能。

软件架构指软件系统的“基础结构”,创造这些基础结构的准则,以及对这些结构 的描述。由于“基础结构”这个概念并没有明确说是从什么角度来分解的,所以可以从业务逻辑、物理部署和开发规范等多个角度分解。

1.4总结

架构是顶层设计;框架是面向编程或配置的半成品;组件是从技术维度上的复用;模块是从

业务维度上职责的划分;系统是相互协同可运行的实体。

参考文档:

《从零开始学架构》——李运华

  • 6
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值