你是否曾经思考过如何设计大型的企业级系统?在决定启动软件开发以前,首要的是选择恰当的架构来指引系统的功能及质量属性设计。所以在将软件架构应用于设计以前,必须要了解经常使用的架构模式。数据库
Wikipedia 的解释:设计模式
在软件架构中,架构模式是对特定环境下常见问题的通用且可重用的解决方案。架构模式与软件设计模式很类似,但架构模式的层次更高,且外延更大。性能优化
这篇文章将简述常见的 10 种架构模式的概念、用法以及其优缺点。服务器
分层模式用于对结构化设计的软件进行层次拆解,每一个层次为独立的抽象,为其上层抽象提供服务。网络
系统一般被拆分为如下四个层次:架构
使用场景并发
客户端/服务器模式由两个部分构成:一个服务器与多个客户端。服务器组件同时为多个客户端组件提供服务。客户端向服务器发启服务请求,服务器将相应服务信息回应给客户端。此外,服务器持续监听来自客户端的请求。框架
使用场景分布式
主/从模式由两个部分构成:主设备与从设备。主服务组件将做业分发给多个从设备组件,并根据这些从设备反馈的结果,计算生成最终结果。微服务
使用场景
管道/过滤器模式用于构造用于生成及处理数据流的系统。每一个处理过程都封装在 过滤器(filter) 组件之中,要处理的数据经过 管道(pips) 进行投递。管道同时用于做为 过滤器(filter) 间的缓冲及同步。
使用场景
代理模式用于在结构化系统中对组件解耦。系统内各组件间采用远过程调用(remote service invocations)的方式交互。 代理(Broker) 组件充当组件间通信的协调角色。
提供服务的组件将其能力(服务以及特性)发布给代理,客户端均向代理请求服务,由代理将请求重定向到先前已发布过对应服务的组件进行处理。
使用场景
对等模式中的组件称之为对等体(peer),对等体既做为向其余对等体请求服务的客户端,同时也作为响应其余对等体请求的服务端。对等体能够在运行过程当中动态地改变其角色,即,既能够单独作为客户端或服务端运行,又可同时做为客户端与服务端运行。
使用场景
事件总线模式应用于事件处理,主要由四个组件构成: 事件源(event source),事件侦听者(event listener),通道(Channel)以及总线(event bus) 。 事件源将消息发布到总线的特定通道,侦听者订阅相应的通道,事件源所发布的消息经通道通告给订阅通道的侦听者。
使用场景
模型/视图/控制器模式(简称 MVC 模式)将交互式应用程序拆分为三个部分:
MVC 模式经过将内部信息表示、用户信息呈现以及用户操做接收分开的方式解耦组件,实现高效代码重用。
使用场景
黑板模式适用于 无预知肯定解决策略 的问题,主要由三个组件构成:
全部的组件均能访问黑板,组件可将新生成的数据对象写入黑板,也能够经过模式匹配从黑板中获取知识源所生成的特定数据。
使用场景
解析器模式用于设计语言的解析程序,主要用于指定评估程序代码行,即解析出特定语言的语句与表达式,其核心思想是为语言的每一个符号定义相应的类。
使用场景
在此我向你们推荐一个架构学习交流群。交流学习群号:575745314 里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化、分布式架构等这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多
下表格总结了各架构模式的优缺点