- 了解软件架构模型概念
- 学习常见的架构模式
- 熟悉架构模式应用方法
架构模式概念
(一切交流靠接口)
架构的定义
架构是构成一个系统的基础组织结构,包括系统的组件构成,组件间的相互关系、系统和其所在环境的关系、以及知道架构设计和演进的相关准则
架构的特征
架构风格
架构风格是以结构组织模式定义的一类系统族。一种软件体系结构风格刻划了一个具有类似结构和语义的系统家族。
内容:
- 构件
- 交互关系
- 约束条件
举例:
好处
架构与框架的关系
框架是软件,架构不是软件
- 通过框架实现了架构的沉淀落地
- 框架的质量决定了系统整体架构的质量
- 对框架的验证,同时也验证了整个系统架构
架构模式
定义:
- 架构模式是对以往系统的架构抽象而形成的模板
- 是对某个具体环境下问题的结构性解决方案
- 内容包括
- 提供一些实现定义好的子系统,指定他们的责任
- 给出把他们组织在一起的法则和指南
架构风格与架构模式的关系
- 概念上通常可互用
- 架构风格反映了系统遵循的某种模式,是一类系统的抽象总结描述
- 架构模式,是架构风格具体化的模板,可包含一种或多种结构风格,是为了实现某个目标,而形成的解决方案模板
模式
模式是表示上下文、系统目、解决方案三个方面关系的一个规则。
模式的层次分类
架构模式
设计模式
代码模式
软件架构模式具体实例
常见的架构模式
现状难处:
没有选择适合的架构模式->没有做好架构设计->代码耦合->需求不好改->架构大泥球化
六种常见的架构模式
1. 分层架构模型
分层架构反模式:层开放
2. 面向服务的架构 — SOA架构
包括业务方法和IT技术架构两个方面
基本特征:
- 服务的封装性
- 服务的重用
- 服务的互操作(既定的通信协议进行操作)
- 服务是自治的功能实体(强调实体的完全独立自主能力和自我管理、恢复能力)
- 服务之间的送耦合度
- 服务是位置透明的(设计和部署对用户完全透明)
- 明确定义的接口(WSDL标准化接口)
优缺点
3. 微服务架构模式
定义:
- 微服务是一种架构模式,它提倡将单体应用(巨石应用)划分为一组小服务
- 每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相沟通(常见:基于HTTP的RESTful API)
- 这些服务基于业务功能目标构建,通过全自动部署的方式进行独立部署
- 对这些服务采取最低限度的集中化管理,每个服务可采用不同开发语言、使用不同的数据存储方式
微服务架构特征
- 通过服务实现组件
- 组件:可被单独替换和升级的软件单元
- 库:被连接到一个程序并通过内存函数调用的组件,和程序在一个进程内(类库)
- 服务:服务进程外加载的组件,和调用它的程序是两个独立的进程
- 通过服务实现组件化:
- 服务可独立部署
- 服务有更明确的组件接口
- 基于业务功能搭建团队
- 每个业务团队,负责构建及运营其产品
- 传统根据技术层面->根据业务功能划分团队
- 做产品而非项目
- 团队负责产品的整个生命周期而非只限于开发上限
- 智能化服务端点和哑管道
- 基于服务源的HTTP API请求
- 轻量级异步消息机制(哑管道:值轻量级的消息总线,值具备信息路由能力)
- 去中心化的数据管理
- 通过Domain-Driven-Design进行区域划分
- 每个微服务管理自己的数据库
- 最终一致性+补偿机制
- 离散式治理
- 每个微服务团体可以通过工具用不同的方式实现标准化
- Tolerant Reader、Consumer-Driven Contacts
拓扑结构
细粒度:
粗粒度:
粒度拆分
4. 事件驱动架构模式
定义:
- 异步开发
- 由高度解构、单一母的组件构成,负责异步事件的接受和处理
- 主要拓扑结构:中介拓扑结构、代理拓扑结构
中介拓扑结构
代理拓扑结构
5. 基于内存空间的架构(SBA)
定义:
- 源于元组空间概念,也就是分布式内存概念
- 通过冗余的内存数据,代替数据库来实现高伸缩性
适用范围:
- 解决高性能、高并发的伸缩性需求
- 不太适合使用传统大规模关系型数据库的应用
6. 微内核架构
定义:
- 即插即用
- 通过插件的形式添加额外属性到核心系统中
- 新特性和核心系统隔离
架构特点:
- 可嵌入到其他架构中
- 很好地支持了渐进式设计和增量开发
适用场景:
- 基于核心系统的外围应用
- 基于核心版本的分支版本扩展
整体评估
架构模式应用方法
架构模型的选择
- 架构模式的选择主要在于核心业务需求
- 架构模式的评估主要在于核心质量需求
混搭的架构模式
架构模式与技术专业委员会的关系
practice: