icql

架构基础_概念和基础

一、架构概念

architecture

“架构”到底指什么

架构定义:软件架构指软件系统的顶层结构

系统与子系统

1) 系统(System): 泛指由一群有关联的个体组成,根据某种规则运作,能完成个别元件不能单独完成的工作的群体。它的意思是“总体”“整体”或“联盟”
2) 子系统(Sub Sysytem): 也是由一群有关联的个体所组成的系统,多半会是更大系统中的一部分

模块与组件

1) 软件模块(Module): 是一套一致而互相有紧密关连的软件组织。它分别包含了程序和数据结构两部分
2) 软件组件(Component): 定义为自包含的、可编程的、可重用的、与语言无关的软件单元,软件组件可以很容易被用于组装应用程序中

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

示例:
学生信息管理系统,逻辑角度拆分成 登录注册模块、个人信息模块等,物理角度拆分成web服务组件、存储组件

框架与架构

1) 框架(Framework): 框架关注的是“规范”,指的是为了实现某种功能的软体组件规范,也指为了实现某个软体组件规范时,提供规范所要求之基础功能的软件产品
2) 架构(Architecture): 架构关注的是“结构”

MVC开发规范,spring mvc是实现mvc的软件产品,都称之为框架

架构设计的目的

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

复杂度来源

  1. 高性能 衡量指标: tps/qps,p95/p99,response time

  2. 高可用 衡量指标: 4个9(可用时间为99.99%)
    不可用时间计算:
    年度总时间=365*24*60=525600分钟
    网站不可用时间=525600*(1-99.99%)=52.56分钟
    
  3. 可扩展 衡量指标: 应对需求变化扩展容易

  4. 低成本、安全、规模

二、架构设计原则

  1. 合适原则
  2. 简单原则
  3. 演化原则