架构设计特征和架构设计风格
架构设计特征往往会用于具体地解决某一具体的重复的架构问题,而架构风格是对某一具体的架构设计方案的命名。软件架构风格是描述某一特定应用领域中系统组织方式的惯用模式。架构风格反映了领域中众多系统所共有的结构和语义特征。
领域驱动设计
领域驱动设计的战略核心是将问题域与应用架构相剥离,将业务语义化,把原本晦涩难懂的业务算法逻辑,通过领域对象,统一语言转化为领域概念清晰的显性的表达出来。
SOA面向服务架构
背景
在互联网应用规模迅速扩大的情况下,集中式架构已经无法满足无限制地提升系统吞吐量。
概念
- 从软件的基本原理定义,SOA是一个组件模型,它将应用模型的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。
- 从应用的角度定义,SOA是一种应用架构,将日常业务应用划分为单独的功能和流程,即服务。SOA使用户可以构建、部署和整合这些服务,且无需依赖应用程序机器运行平台。
特点
- SOA中的接口独立于实现服务的硬件平台、操作系统和编程语言,采用中立的方式进行定义。
- SOA可以根据需求通过网络对松散耦合的粗颗粒度应用组件进行分布式部署、组合和使用。
- 服务层是SOA的基础,可以直接被应用调用,从而有效控制系统中软件代理交互的人为依赖性。
原则
- 明确定义的接口
- 自包含和模块化
- 松耦合
- 粗颗粒
- 互操作性、兼容和策略声明
微服务和SOA
| 微服务 | SOA | |
|---|---|---|
| 设计图形 | 去中心化的分布式 | 星形 |
| 服务 | 垂直服务 | 水平服务 |
| 复用 | 重写 | 重用 |
| 设计方向 | 自下而上 | 自上而下 |
云原生架构
云原生是通过构建团队、文化和技术,利用自动化和架构来管理系统的复杂性和解放生产力。云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。