当前位置: 首页 > 科技观察

五种主流软件架构模型

时间:2023-03-18 10:55:42 科技观察

【.com快译】在去年底举行的全球软件架构峰会(GlobalSoftwareArchitectureSummit)上,全球各行各业的开发者齐聚一堂,广泛讨论各种常见的行业模型中的软件架构。在此,我为大家整理总结了这些软件架构师为我们带来的精彩见解。首先,什么是软件架构模式?架构模式是软件架构师通过不断的实践,在过去得到验证和总结的优秀设计架构。它们通常可以在其他项目或领域中重复使用。更具体地说,架构模式是一组需要在实践中反复发现的设计决策。它具有定义明确的属性和一组可以重用和描述的架构。事实上,开发软件架构可以看作是选择、定制和组合模式的整个过程。软件架构师的任务是决定如何实例化模式以及如何使其适应问题的特定上下文和约束。我们将在下面详细讨论。MarkRichards在他的书--《软件架构模式》中主要介绍了五种软件架构模式,分别是:microkernel、microservice、layeredarchitecture、event-based(事件驱动)和space-based。下面我们将按顺序一一介绍。1.微内核模式微内核架构模式也称为插件架构模式。当软件团队创建具有可互换组件的系统时,通常会使用它。这种模式主要适用于那些必须能够适应不断变化的需求的软件系统。微内核模式将最小的功能核心与扩展功能和客户特定的组件分开。作为一种套接字(socket),可以插入各种扩展,协调它们之间的协作关系。业界普遍认为微内核架构模式是一种自然模式,可用于实现基于生产的应用程序。如本文所用,基于产品的应用程序是可以作为典型的第三方产品版本下载的打包应用程序。当然,很多公司也会以此来开发和发布他们内部的业务应用,比如:各种软件产品、版本、发行说明、可插拔功能等。微内核架构模式允许您将其他应用程序的功能作为插件添加到核心应用程序,从而提供可扩展性和功能分离(隔离)。微内核架构模式一般由两类架构组件组成:核心系统和各种插件模块。我们需要将应用的逻辑划分为独立的插件模块和基础核心系统,以提供基于应用功能和自定义处理逻辑的可扩展性、灵活性和隔离性。在传统观念中,微内核架构模式的核心系统只包含那些系统运行所需的最少功能。微内核架构的最佳示例是EclipseIDE。通过下载基本的Eclipse产品,您只能得到一个编辑器。只有在你添加了各种插件之后,它才会成为一个高度可定制的、功能强大的产品。优点:极大的灵活性和可扩展性。在某些实现场景中,允许应用程序在运行时插入。具有良好的便携性。易于部署。能够快速应对不断变化的环境。插件模块可以单独进行测试,并且可以很容易地被核心系统模拟以演示或原型化特定功能,从而实现对核心系统的最小修改甚至不修改。它提供了卓越的性能,因为您可以自定义和简化应用程序以仅包含那些必要的功能。适用于:需要从不同来源获取数据并在转换数据后写入不同目标的应用程序。工作流应用程序。任务和工作计划应用程序。2.微服务模式当您将应用程序编写为一组微服务时,您实际上是在编写多个协同工作的微应用程序。每个微服务都有自己的“职责”,团队可以独立于其他微服务进行开发。他们之间唯一的依赖就是沟通。当微服务相互通信时,您必须确保它们之间发送的消息是向后兼容的。优点:您可以单独编写、维护和部署每个微服务。您可以灵活地只扩展那些需要的微服务。由于您的应用程序的某些部分较小并且与其他部分松散耦合,因此您可以轻松地重写它们。新的团队成员很容易快速上手。可以使应用程序易于理解和修改。通过提供良好的可维护性和可测试性,实现快速、频繁的开发和部署。团队可以独立部署他们的服务,无需与其他团队协调。适用性:适用于元件较小的场所。边界清晰的企业级数据中心。快速开发新业务和Web应用程序。拥有遍布全球的开发团队。3.分层架构模式最常见的架构模式是分层架构模式。它是我们设计大多数软件所采用的传统方法,也具有一定的独立性。分层架构模式是一种多层模式,每一层都有多个组件。这意味着尽管所有组件都是相互关联的,但它们并不相互依赖。分层架构模式的每一层在应用程序中都有特定的角色和职责。例如:表示层将负责处理用户界面和浏览器之间的所有通信逻辑,而业务层将负责执行与请求相关的特定业务规则。分层架构模式的主要特点是每个组件各司其职,相互分离。也就是说,某一层上的组件只处理与该层相关的逻辑。优点:因为在这种架构中,组件只属于某一层,而其他层都可以模拟,所以这种模式具有很好的可测试性。由于该模式实现起来并不复杂,而且大多数公司都能够开发出功能集逐层分离的应用程序,因此开发起来非常容易,当然也成为了大多数业务应用程序的自然选择。可维护的。易于分配个人“角色”。分别更新和增强不同的层很方便。适用性:标准化的业务线应用程序,功能上不限于CRUD(创建、删除、修改、查询)操作。需要快速构建的新应用程序。团队中有不了解其他架构或经验不足的开发人员。那些需要有严格的可维护性和可测试性的应用。4.基于事件(event-driven)的模式这是最常见的分布式异步架构,用于开发高度可扩展的系统。该体系结构由可以侦听事件并异步处理它们的组件组成。事件驱动类架构创建了一个接收所有数据的中央单元。该单元可以委托给能够处理特定类型的各个模块。优点:容易适应复杂混乱的环境。可以很容易地扩展。当出现新的事件类型时,它可以很容易地扩展。适用:那些异步数据流的异步系统。各种用户界面。5.Space-GivingPatterns基于空间的架构模式是专门为解决那些可伸缩性和并发性问题而设计的。对于具有不确定因素和无法预测并发用户数的应用程序,它也是一种非常实用的架构模式。这种模式通过消除对中央数据库的约束并使用复制的内存数据网格实现了良好的可伸缩性。此外,基于空间的架构可以通过在多个服务器上拆分处理和存储来避免高负载下的功能故障。优点:能够快速响应不断变化的环境。虽然架构一般不能解耦和分布式,但它是动态的。先进的基于云的工具,可以轻松地将应用程序“推送”到服务器以简化部署。通过内存中数据访问和内置于该模式中的缓存机制可以实现高性能。由于对集中式数据库的依赖很小或不依赖,这种模式的扩展性非常好。适用:点击流、用户日志等数据量大的场景。偶尔丢失低价值数据不会造成严重后果的场景。社交网络环境。总的来说,上面介绍的五种架构模型各有各的优势和适用环境。您可以在程序设计和项目中根据实际需要选择不同的软件架构模式,实现复用。原标题:5大软件架构模式作者:EkaterinaNovoseltseva