应用技术架构 —— 单体架构 & 垂直架构 & SOA 架构

2023-03-22 09:52:52 浏览数 (4)

本文作者:何文强 — CODING 高级解决方案架构师 具有一线互联网、物联网独角兽、全国股份制银行、新型智慧交通等跨行业从业经历,历任 Java 开发高级工程师、DevOps 技术专家、高级研发经理等职,对微服务、敏捷、DevOps、容器技术有深刻的理解和丰富的实践。

单体架构

1968 年的软件危机产生了软件工程,并且催生了面向对象的高级语言,例如 1972 的 C 语言,同时产生了我们的单体式的技术架构,单体架构的特点是所有代码逻辑都耦合在一个项目中。

垂直架构

在 1980s 时代,大型应用和超大型应用开始兴起,特别是操作系统和数据库的出现和广泛应用,数百万行代码量的系统较为普遍。随着业务的发展、单体架构越来越臃肿,系统代码量日益膨胀,在同一系统上协作的开发人员越来越多。基于单体架构的协作效率越来越低,系统故障率越来越高。将一个大型应用拆分成多个相互独立的小型应用成为解决单体应用的一种方案,这就是垂直架构(也成为“竖井式架构”)。垂直架构根据业务属性将一个大的单体应用拆分成多个模块或子系统,子系统之间没有直接关联。

垂直架构相较于单体架构而言,进行了部分解耦,但是不够彻底,在各个子系统相互依赖的代码和模块中,存在重复代码拷贝和模块功能重复开发的情况。

垂直架构按功能进行 MVC 划分和按职能进行前后端分离模式,通过分层来规范职责和定义边界。

面向服务的架构(SOA)

随着互联网的出现和发展,软件用户的数量的急剧增长,应用的用户规模指数级增长,具有海量用户的应用变得普遍。垂直架构在技术上很难满足承载海量用户的要求。分布式理论和分布式技术的日渐成熟,面向服务的架构(SOA)开始出现,并广泛应用于大型的重要系统上(例如金融核心交易系统等)。

面向服务的架构(SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)进行拆分,并通过这些服务之间定义良好的接口和协议联系起来。

面向服务的架构主要由两种:以企业服务总线(ESB)为代表的 SOA 和以 RPC 为代表的 SOA。

ESB

ESB 是一种基于消息的中心化架构。ESB 中心化架构实现了松耦合,依赖于 ESB 消息总线技术实现异构系统的信息交互和集成集中式架构管理,因此它虽然是面向服务的,但它本质上依旧是一个中心化的架构。

ESB 特点
  1. 消息传递:支持通过 MQ 进行消息同步或异步通信;
  2. Web 服务:支持 SOAP、REST 方式的应用数据交互;
  3. 数据转换:支持 XML、JSON、YAML 等数据格式转化;
  4. 路由智能:对预期数据进行智能数据路由。
ESB 优势
  1. 不同业务或模块的充分解耦;
  2. 规范和统一了系统间的调用方式;
  3. 轻松实现异构系统集成并对外提供服务。
ESB 不足
  1. 存在单点;
  2. 业务、三方依赖、NFR 耦合严重;
  3. 部署困难;
  4. 维护成本高;
  5. 扩展性差;
  6. 服务治理弱。
RPC

RPC 协议是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC 协议假定某些传输协议的存在,如 TCP 或 UDP,为通信程序之间携带信息数据。在 OSI 网络通信模型中,RPC 跨越了传输层和应用层。RPC 使得开发包括网络分布式多程序在内的应用程序更加容易。这个时期典型的 RPC 协议如 RMI、WebService 等(gRPC 和 Thrift 都属于现代意义的 RPC)。

RPC 优势
  1. 交互方式简单,客户端/服务端间的交互协议容易统一;
  2. 跨语言异构支持;
  3. 不存在 ESB 中的单点故障可能。
RPC 不足
  1. 交互方式较为单一,不能进行复杂的多模块之间的协议交互;
  2. 异常处理困难;
  3. 缺少服务治理能力;
  4. 采用私有协议,扩展性较差。

《数字化 IT 从业者知识体系》背景

数字化和可持续发展是中国企业未来发展的两大主题,掌握数字化知识,具备数字化能力,应用数字化技术是我们 IT 从业者未来核心竞争力所在。《数字化 IT 从业者知识体系》的初衷是为 IT 从业者提供的系统性的数字化知识体系,内容涵盖管理实践、工程实践、技术实践三个层次,涉及软件开发方法、应用技术架构、应用部署与管理、软件交付与协作四大方面。

在接下来的《数字化 IT 从业者知识体系》系列文章,何文强将从软件开发方法、应用技术架构、应用部署与管理、软件交付与协作四个方面,为大家进行逐一分享介绍:

1. 软件开发方法主要包括瀑布、敏捷、精益等;

2. 应用技术架构主要包括微服务架构、服务网格架构、无服务器架构、分布式多运行架构等;

3. 应用部署与管理主要包括但不限于虚拟化技术、容器技术与容器编排等;

4. 软件交付与协作主要包括但不限于 CMMI、ITIL、DevOps 等。

相信该知识体系有利于 IT 从业者构建丰富的技术体系、全面的技术视野和系统的能力建设。欢迎大家前往《数字化 IT 从业者知识体系》话题进行详细阅读。

1 人点赞