一、层次式架构设计
1.1 定义
- 层次式架构是最通用的架构,也被叫做N层架构模式。在分层次架构中的组件被划分成几个层,每个层代表应用的一个功能,都有自己特定的角色和职能。
- 层次式架构的一个特性是关注分离。该层中的组件只负责本层的逻辑,组件的划分很容易明确组件的角色和职责,也比较容易开发、测试、管理和维护。
1.2 数据访问层五种数据访问模式
在线访问
DataAccess Object(DAO)
- DAO工厂类
- DAO接口
- 实现DAO接口的具体类
- 数据传输对象
Data Transfer Object
离线数据模式
对象/关系映射(ORM)
1.3 物联网层次架构
- 感知层
底层是用来感知数据的感知层,利用传感器、二维码、RFID等设备随时随地获取物理的信息。 - 网络层
数据传输处理的网络层,将对象当前的信息实时准确地传递出去。 - 应用层
解决信息处理和人机交换问题。应用服务
1.4 C/S和B/S架构
二、面向服务架构设计(SOA)
2.1 定义及特点
- SOA是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。
- 接口是采用中立的方式进行定义,它独立于实现服务的硬件平台、操作系统和编程语言。
2.2 主要协议和规范
2.3 SOA的作用
- 系统集成:打通异构系统,打破信息孤岛
- 业务敏捷:通过服务编排快速响应业务流程变化
- 服务重用:避免功能重复开发
- 松耦合:服务间通过接口交互,隐藏实现细节
- 标准化治理:以服务视角管理IT资产
2.4 SOA的设计原则
- 无状态
- 单一实例
避免功能冗余 - 明确定义的接口
- 自包含和模块化
- 粗粒度
服务数量不应该太大,依靠消息交互而不是远程调用。通常消息数量比较大,但是服务之间的交换频度较低 - 服务之间松耦合
- 复用能力强
- 互操作、兼容和策略声明
2.5 SOA的设计模式
2.5.1 企业服务总线ESB
2.5.2 微服务模式
微服务架构将一个大型的单个应用或服务拆分成多个微服务,可扩展单个组件而不是整个应用程序堆栈,从而满足服务等级协议。微服务架构围绕业务领域将服务进行拆分,每个服务可以独立进行开发、管理和迭代,彼此之间使用统一接口进行交流,实现了在分散组件中的部署、管理与服务功能,使产品交付变得更加简单,从而达到有效拆分应用,实现敏捷开发与部署的目的。
2.5.2.1 微服务的优缺点
- 复杂应用解耦
- 独立
- 技术选型灵活
- 容错
- 松耦合,易扩展
2.6 SOA和微服务的区别
- 微服务相比于SOA更加精细,微服务更多地以独立的进程的方式存在,互相之间并无影响
- 微服务提供的接口方式更加通用化,例如HTTP RESTful方式,各种终端都可以调用,无关语言、平台限制
- 微服务更倾向于分布式去中心化的部署方式,在互联网业务场景下更适合
2.6 SOA的使用注意事项
- 注意对原有系统架构中的集成需求进行细致的分析和整理
- 服务粒度的控制
- 无状态服务的设计
三、云原生架构设计
3.1 定义
从技术的角度,云原生架构是基于云原生技术的一组架构原则和设计模式的集合,旨在将云应用中的非业务代码部分进行最大化的剥离,从而让云设施接管应用中原有的大量非功能特性(如弹性、韧性、安全、可观测性、灰度等),使业务不再有非功能性业务中断困扰的同时,具备轻量、敏捷、高度自动化的特点。由于云原生是面向“云”而设计的应用,因此,技术部分依赖于传统云计算的3层概念,即基础设施即服务(Iaa)、平台即服务(PaaS)和软件即服务(SaaS)。
3.2 设计原则
3.3 架构模式
3.4 架构反模式
四、大数据架构设计
4.1 大数据架构特征
- 鲁棒性和容错性
- 低延迟读取和更新能力
- 横向扩容
- 通用性
- 延展性
- 即席查询能力
- 最少维护能力
- 可调试性
4.2 大数据技术生态
4.3 Lambda架构
4.4 Kappa架构
4.5 Lambda架构和Kappa架构比对
五、安全架构设计
5.1 安全模型
- 分类
- BLP
- Biba