成为架构师,必须掌握 10 种常见的架构模式!
杰哥的IT之旅
共 3276字,需浏览 7分钟
·
2020-11-10 18:14
公众号关注“杰哥的IT之旅”,
选择“星标”,重磅干货,第一时间送达!
想知道如何设计大型企业级的系统吗?在开始主要的代码开发之前,我们必须选择一种合适的体系架构,它将为我们提供所需的功能和质量属性。因此,在将它们应用到我们的设计之前,应该先了解不同的体系结构。
- 什么是架构模式 -
架构模式是在给定上下文中解决软件架构中常见问题的通用、可重用的解决方案。架构模式类似于软件设计模式,但范围更广。
- 分层模式 -
一般信息系统中最常见的4层划分如下:
Presentation layer 表示层(也就是UI层) Application layer 应用层(也就是服务层) Business logic layer 业务逻辑层(也就是领域层) Data access layer 数据访问层(也就是数据持久层)
应用
一般桌面应用程序 电子商务Web应用程序
- 客户端-服务器模式 -
应用
在线应用程序,如电子邮件、文件共享和银行业务等
- 主从模式 -
在数据库复制中,主数据库被视作权威数据源,而从数据库与其保持同步 连接到计算机系统总线上的外围设备(主驱动器和从驱动器)
- 管道过滤模式 -
应用
编译器。依次使用不同的过滤器执行词法分析、解析、语法分析和代码生成 生物信息学中的工作流程
- Broker模式 -
服务器将它们的功能(服务和特征等)发布到代理,客户端向代理请求服务,然后代理根据其注册表将客户端请求转发给合适的服务。
应用
消息代理软件,如 Apache ActiveMQ, Apache Kafka, RabbitMQ 和 JBoss Messaging.
- P2P模式 -
应用
文件共享网络,如Gnutella 和 G2 多媒体协议,如P2PTV 和 PDTP 基于加密货币的产品,如比特币和区块链
- 事物总线模式 -
应用
安卓开发 通知服务
- MVC模式 -
模型——包含核心功能和数据 视图——向用户显示信息(可以定义多个视图) 控制器——处理用户的输入
应用
主流编程语言的互联网应用架构 网络框架,如Django 和 Rails.
- 黑板模式 -
黑板—— 一个结构化的全局内存,包含解决方案领域的对象 知识源——具有自身含义的专业模块 控制组件——选择、配置和执行模块
应用
语音识别 车辆识别与跟踪 蛋白质结构鉴定 声呐信号解释
- 解释器模式 -
应用
数据库查询语言,如SQL 用于描述通信协议的语言
- 架构模式对比 -
模式 | 优点 | 缺点 |
分层结果更容易进行标准化,因为可以清晰地定义每个层级 层级内的修改不会影响其它层 | 某些场景下,需要跳过其中一些分层 | |
因为不同客户端有不同形式,进程间通信会造成很大负载 | ||
主从模块间的通信延迟可能是一个问题,尤其在实时系统中。 | ||
容易添加过滤器,系统很容易扩展; 过滤器可重用,可以通过重新组合已有的过滤器来创建不同的管道流。 | 从一个过滤器传递到另一个时,存在数据转换的负载 | |
对任意节点的失败都有高度稳定性; 在资源和计算能力方面具有高度可伸缩性 | 很难保证安全; 性能取决于节点的数量 | |
对于高度分布式应用很有效 | ||
很容易扩展数据空间中的结构 | 可能需要同步机制和访问控制 | |
有利于终端用户的可编程性; 增强了灵活性,因为替换一个解释程序很容易 |
(完)
作者:Vijini Mallawaarachchi
原文:https://towardsdatascience.com/10-common-software-architectural-patterns-in-a-nutshell-a0b47a1e9013
如果您觉得这篇文章对您有点用的话,麻烦您为本文来个四连:转发分享、点赞、点在看、留言,因为这将是我写作与分享更多优质文章的最强动力!
本公众号全部博文已整理成一个目录,请在公众号后台回复「
m
」获取!
推荐阅读:
1、程序员必知的 7 种软件架构模式
2、支付宝的架构到底有多牛逼?
3、微信支付软件架构,这也太牛逼了!
4、今日头条的技术架构到底有多牛逼?
5、蚂蚁金服的技术架构到底有多牛逼?
6、一文读懂「分布式架构」
7、如何画出一张合格的技术架构图?
8、如何画出优秀的架构图?
9、从 Nginx 优秀的核心架构设计,揭秘其为何能支持高并发?
10、就是要让你搞懂Nginx,这篇就够了!
关注微信公众号「杰哥的IT之旅」,后台回复「1024」查看更多内容,回复「加群」备注:地区-职业方向-昵称 即可加入读者交流群。 点个[在看],是对杰哥最大的支持!
评论