百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

关于软件架构的一切(软件架构主要关注哪些问题)

ccwgpt 2024-09-27 07:22 29 浏览 0 评论

现有软件架构方法的详细概述

软件开发可以描述为一个复杂的系统过程,需要在各个技术领域以及相关业务方面的专业知识。就像总体规划的蓝图一样,通过定义软件的体系结构,可以促进此软件开发过程的组成部分。

为什么我们需要软件架构


早期的开发人员用来设计无体系结构的软件,这种软件最初看起来像是没有计划开销以及更快的原型制作的优点。但是,随着他们深入到过程中,该软件变得像泥泞的球一样变得僵化和难以管理。随着每项变更的成本越来越高,这种方法后来被称为“泥浆大球”(Big Ball of Mud)

随着时间的推移,这种项目变得难以管理,因此每次新迭代都会大大增加维护成本。这限制了软件的发展,超出了项目开始时最初定义的范围。

在软件设计的多年发展过程中,开发人员提出了一些健壮的体系结构方法,以避免出现少体系结构的软件设计问题(也称为“泥泞大球”)。以下是一些最著名的

  • 分层架构
  • 多层架构
  • 面向服务的体系结构(SOA)
  • 微服务架构

分层架构

此方法基于关注点分离的原理。软件设计分为相互重叠的一层。每一层都承担着专门的责任。架构将软件分为以下几层

  • 表示层
  • 业务逻辑层
  • 数据链路层

表示层拥有与外界交互的用户界面。这也负责提供用户体验,因为这是暴露给最终用户交互的唯一层。

顾名思义,业务逻辑层包含软件应用程序的业务逻辑。该层将UI / UX与业务相关的计算分离开,从而提供了根据不断变化的业务需求修改逻辑的灵活性,而不会影响其他层。

数据链接层负责与数据库等持久性存储进行交互以及与域无关的杂项数据处理(即与业务无关)

数据和控制从设计的每一层流到另一层。这些层还增加了设计中的抽象度。由于稳定性在一定程度上与抽象成正比,因此也将软件的稳定性提高到一定程度。


好处

  • 与其他方法相比,实现起来更简单
  • 由于各层之间的关注点分离而提供抽象
  • 层之间的隔离使其他层免受一层的修改
  • 由于耦合度低,软件变得更易于管理

坏处

  • 没有太大的可扩展性
  • 用这种方法构建的软件将倾向于具有缺乏易于修改的单体结构
  • 即使没有必要从某些层传递数据,数据也必须一层一层地从另一层流出。此问题被称为“污水池问题”

多层架构

这种架构方法根据客户端服务器通信原理将软件套件分为几层。架构可以具有n层系统中的一,二层,将数据提供者和使用者之间的职责分开。

它利用请求响应模式在定义的层之间进行通信。与分层架构不同,它提供的可伸缩性可以是水平的(通过高性能节点扩展网络)或垂直的(通过提高单个性能来扩展每个节点)

单层系统

在这种方法中,单个系统既可以充当客户端又可以充当服务器,并且可以简化部署,而无需进行系统间通信(ISC)。因此,提供了很好的通信速度。

这样的系统仅适用于小规模的单用户应用程序,而不应用于多用户复杂的应用程序。

2层系统


这样的系统由两个物理机组成,分别是服务器和客户端。它提供了数据管理操作以及数据处理和表示操作之间的隔离。

  • 客户拥有表示,业务逻辑和数据链接层。
  • 服务器保存数据存储,例如数据库

3层/ n层系统

> 3-Tiered Architecture

这样的体系结构在水平和垂直方向上都是高度可扩展的。通常,实施n层体系结构比较昂贵,但可以提供高性能。因此,它在大型复杂软件解决方案中是首选。

可以将其与面向服务的高级体系结构样式相结合,以生成高度复杂的模型。当软件复杂且需要性能和扩展性时,建议使用此体系结构,因为这可能是在资源和时间上更昂贵的方法。

面向服务的架构

SOA是基于服务的体系结构模型,其中组件和应用程序使用定义良好的服务进行通信。

它由5个元素组成,即

  • 服务
  • 服务巴士
  • 服务库服务目录
  • SOA安全性
  • SOA治理

客户端通过网络使用标准协议和数据格式发送请求。ESB处理的此请求可以被视为SOA的核心。ESB负责编排和路由。ESB使用服务存储库将请求定向到专用服务。该专用服务可以与其他服务或数据库交互以组成响应有效负载(响应数据)。

完整的请求响应调用符合SOA治理和安全性规则,以完成确保安全性和正确性的事务。


服务通常分为两种类型

  • 原子服务:提供无法进一步分解的功能
  • 组合服务:多种大气服务的集合,以提供复杂的组合功能

服务种类

服务可以是以下类型,即

  • 实体服务
  • 域服务
  • 公用事业服务
  • 综合服务
  • 申请服务
  • 安保服务

微服务架构

根据Martin Fowler在2014年撰写的文章中提供的定义,描述了微服务架构

简而言之,微服务架构风格是一种将单个应用程序开发为一组小型服务的方法,每个小型服务都在自己的进程中运行并与轻量级机制(通常是HTTP资源API)进行通信。这些服务围绕业务功能构建,并且可以由全自动部署机制独立部署。这些服务的集中管理几乎没有,它可以用不同的编程语言编写并使用不同的数据存储技术。

它基于服务组件化的原理。这种体系结构将软件分解为可以定义为服务的各种组件。每项服务负有单一责任,每项服务本质上都是孤立的。一种服务的更改不应影响其他服务。


微服务包括什么

能够独立扩展的隔离,简洁和细粒度微服务的体系结构组合

架构由5个部分组成,如下所示

  • 服务
  • 服务巴士
  • 外部配置
  • API网关
  • 货柜

微服务的特征

微服务架构应包含以下特征

  • 通过服务进行组件化
  • 围绕业务能力进行组织
  • 产品不是项目
  • 智能端点和哑管道
  • 分散治理
  • 分散数据管理
  • 基础设施自动化
  • 失败的设计
  • 进化设计

建议与不同的团队分别开发不同的微服务,并允许每个微服务随时间同时演化,就像空气中的各种气泡一样。由于数据通信是按照标准协议和数据格式进行的,因此一项服务的结构不会影响共同服务中的功能。


好处

  • 由于高度隔离,提供低耦合
  • 增强模块化
  • 一项服务中的故障不会对整个系统造成影响,因为它们是隔离的
  • 提供高度的灵活性
  • 提供高度的可扩展性
  • 易于修改可以加快进化迭代的速度
  • 可以实现更好的错误处理
  • 避免层层架构和数据流仅通过有关服务的问题

缺点

  • 不同服务之间进行通信时出现故障的可能性更高。
  • 难以管理大量服务。
  • 需要解决的问题,例如网络延迟和负载平衡以及其他类似分布式体系结构的问题
  • 分布式环境下的复杂测试
  • 实施需要更多时间

参考

结论

每种软件体系结构方法的设计动机都是为了解决先前体系结构中的突出问题。拥有不同方法的适当知识可以帮助您为项目设计高效的软件架构

“尽管不存在完善的软件体系结构,但是,只要满足项目的功能和非功能需求,任何体系结构方法都可以被认为是相对完美的”


(本文由闻数起舞翻译自Ronald ángel的文章《Everything About Software Architecture》,转载请注明出处,原文链接:https://medium.com/swlh/everything-aboutsoftware-architecture-dfd2b9351ef4)

相关推荐

2025南通中考作文解读之四:结构框架

文题《继续走,迈向远方》结构框架:清晰叙事,层层递进示例结构:1.开头(点题):用环境描写或比喻引出“走”与“远方”,如“人生如一条长路,每一次驻足后,都需要继续走,才能看见更美的风景”。2.中间...

高中数学的知识框架(高中数学知识框架图第三章)

高中数学的知识框架可以划分为多个核心板块,每个板块包含具体的知识点与内容,以下为详细的知识框架结构:基础知识1.集合与逻辑用语:涵盖集合的概念、表示方式、性质、运算,以及命题、四种命题关系、充分条件...

决定人生的六大框架(决定人生的要素)

45岁的自己混到今天,其实是失败的,要是早点意识到影响人生的六大框架,也不至于今天的模样啊!排第一的是环境,不是有句话叫人是环境的产物,身边的环境包括身边的人和事,这些都会对一个人产生深远的影响。其次...

2023年想考过一级造价师土建计量,看这30个知识点(三)

第二章工程构造考点一:工业建筑分类[考频分析]★★★1.按厂房层数分:(1)单层厂房;(2)多层厂房;(3)混合层数厂房。2.按工业建筑用途分:(1)生产厂房;(2)生产辅助厂房;(3)动力用厂房;(...

一级建造师习题集-建筑工程实务(第一章-第二节-2)

建筑工程管理与实务题库(章节练习)第一章建筑工程技术第二节结构设计与构造二、结构设计1.常见建筑结构体系中,适用建筑高度最小的是()。A.框架结构体系B.剪力墙结构体系C.框架-剪力墙结构体系D...

冷眼读书丨多塔斜拉桥,这么美又这么牛

”重大交通基础设施的建设是国民经济和社会发展的先导,是交通运输行业新技术集中应用与创新的综合体现。多塔斜拉桥因跨越能力强、地形适应性强、造型优美等特点,备受桥梁设计者的青睐,在未来跨越海峡工程中将得...

2021一级造价师土建计量知识点:民用建筑分类

2021造价考试备考开始了,学霸君为大家整理了一级造价师备考所用的知识点,希望对大家的备考道路上有所帮助。  民用建筑分类  一、按层数和高度分  1.住宅建筑按层数分类:1~3层为低层住宅,4~6层...

6个建筑结构常见类型,你都知道吗?

建筑结构是建筑物中支承荷载(作用)起骨架作用的体系。结构是由构件组成的。构件有拉(压)杆、梁、板、柱、拱、壳、薄膜、索、基础等。常见的建筑结构类型有6种:砖混结构、砖木结构、框架结构、钢筋混凝土结构、...

框架结构设计经验总结(框架结构设计应注意哪些问题)

1.结构设计说明主要是设计依据,抗震等级,人防等级,地基情况及承载力,防潮抗渗做法,活荷载值,材料等级,施工中的注意事项,选用详图,通用详图或节点,以及在施工图中未画出而通过说明来表达的信息。2.各...

浅谈混凝土框架结构设计(混凝土框架结构设计主要内容)

浅谈混凝土框架结构设计 摘要:结构设计是个系统的全面的工作,需要扎实的理论知识功底,灵活创新的思维和严肃认真负责的工作态度。钢筋混凝土框架结构虽然相对简单,但设计中仍有很多需要注意的问题。本文针...

2022一级建造师《建筑实务》1A412020 结构设计 精细考点整理

历年真题分布统计1A412021常用建筑结构体系和应用一、混合结构体系【2012-3】指楼盖和屋盖采用钢筋混凝土或钢木结构,而墙和柱采用砌体结构建造的房屋,大多用在住宅、办公楼、教学楼建筑中。优点:...

破土动工!这个故宫“分院”科技含量有点儿高

故宫“分院”设计图。受访者供图近日,位于北京海淀区西北旺镇的故宫北院区项目已开始破土动工,该项目也被称作故宫“分院”,筹备近十年之久。据悉,故宫本院每年展览文物的数量不到1万件,但是“分院”建成后,预...

装配式结构体系介绍(上)(装配式结构如何设计)

PC构件深化、构件之间连接节点做法等与相应装配式结构体系密切相关。本节列举目前常见的几种装配式结构体系:装配整体式混凝土剪力墙结构体系、装配整体式混凝土框架结构体系、装配整体式混凝土空腔结构体系(S...

这些不是双向抗侧结构体系(这些不是双向抗侧结构体系的特点)

双向抗侧土木吧规范对双向抗恻力结构有何规定?为何不应采用单向有墙的结构?双向抗侧土木吧1.规范对双向抗侧力结构体系的要求抗侧力体系是指抵抗水平地震作用及风荷载的结构体系。对于结构体系的布置,规范针对...

2022一级建造师《建筑实务》1A412020 结构设计 精细化考点整理

1A412021常用建筑结构体系和应用一、混合结构体系【2012-3】指楼盖和屋盖采用钢筋混凝土或钢木结构,而墙和柱采用砌体结构建造的房屋,大多用在住宅、办公楼、教学楼建筑中。优点:抗压强度高,造价...

取消回复欢迎 发表评论: