分层架构

模式介绍

最常见的架构模式

每层只接收上层的请求,每层都有特定的职责,下层被上层复用

分层对性能有一定影响,因为要创建更多的对象

通常有四层:表现层presentation、业务层business、持久层persistence、数据层database

软件架构模式 - 图1

相关概念

软件架构模式 - 图2

closed标记了这一层是封闭的。表示上层请求必须经过本层,不能绕过去。比如业务层不能直接调用数据层。

软件架构模式 - 图3

open标记开放层。表示这一层可以被绕过。

如果很多请求在某一层什么都没有做,那么可以尝试将这一层设置为open,不需要这一层的请求可以直接绕过这一层。

微内核架构

软件架构模式 - 图4

事件驱动架构

最常见分布式异步架构模式。

高扩展性、高适用性、低耦合度

调解器拓扑

适合事件具有多个有一定顺序的步骤的场景

组件:事件队列、事件调解器、事件通道、事件处理器

事件:初始事件、处理事件

事件队列:传递初始事件。消息队列、web服务都可以

事件调解器:编排初始事件中的步骤。允许事件并行。从初始事件中的每一步中,生成处理事件发送给事件通道

事件通道:传递处理事件。处理事件可由多个事件处理器处理。可以是消息队列或消息主题

事件处理器:接收处理事件,执行特定任务。

代理拓扑

没有中央事件调解器,消息流以链式方式分布在事件处理器中

处理流程简单

软件架构模式 - 图5

组件:代理器、事件处理器

事件驱动架构实践

管道架构

基于空间架构

微服务架构

替代单体应用和面向服务架构,单体应用过于耦合,而面向服务太复杂

服务组件颗粒度灵活,和意识几个模块或整个业务

组件之间需要远程访问协议进行通信(JMS、AMQP、REST、SOAP)

软件架构模式 - 图6

基于API REST的拓扑

软件架构模式 - 图7

为应用程序提供接口

细粒度、每个服务仅包含1-2个模块

提供单一功能的RESTful web服务

基于应用REST的拓扑

软件架构模式 - 图8

为用户提供接口

粗粒度、每个组件包括一整个业务

基于集中式消息传递的拓扑

软件架构模式 - 图9

不使用REST访问访问,而是使用集中式消息代理来访问服务(ActivaMQ、HometQ)

排队机制、异步消息、监控、负载均衡等

面向服务架构

基于服务架构

无服务架构

LMAX