首页 > 其他分享 >单体、分布式、微服务、Serverless及新兴部署模式分析

单体、分布式、微服务、Serverless及新兴部署模式分析

时间:2024-07-13 09:56:02浏览次数:17  
标签:Serverless 架构 部署 业务 单体 网格 模式分析 服务 分布式

在数字化时代,软件架构的选择对于企业的技术战略至关重要。从单体架构到Serverless,再到服务网格和服务化模型,每一种架构模式都反映了特定时期内技术发展和业务需求的特点。本文将对这些架构模式的优缺点进行讨论,供大家参考。

部署方式的不断演进

单体架构(Monolithic Architecture)

概念含义:
单体架构是一种应用程序设计方法,其中所有的功能和业务逻辑都集成在一个单独的、自包含的单元中。单体架构类似于结构型设计模式的享元模式,不断地复用现有的数据库、配置等。它是架构世界的全家桶,web+package,前台业务+后台管理都在里边。在业务发展之初是有无可比拟的优势的,容易部署和发布上线,满足了业务初期的快速发版上线,最快程度地让用户看到产品原型。

特点:

  • 易于开发和部署:所有组件都集成在一起,简化了开发和部署流程。
  • 测试相对简单:由于所有组件都在一起,测试可以更集中地进行。

优点:

  • 易于开发和部署:单体应用通常包含在一个应用程序中,开发和部署过程相对简单。
  • 快速迭代:在项目初期,需求不复杂时,单体架构可以快速响应市场变化。

缺点:

  • 复杂性高:随着功能的增加,代码库迅速膨胀,导致项目难以维护,需求迭代慢。
  • 技术债务:长期积累的技术债务使得单体应用越来越难以适应新需求。 引入新的框架或语言需要重构所有业务模块,阻碍技术创新
  • 部署频率低:全量部署耗时长,风险高,导致部署频率降低。
  • 可靠性差:单体应用的一个Bug可能影响整个系统。 一损俱损
  • 扩展能力受限:无法根据业务模块的需要进行伸缩,导致资源浪费。
  • 阻碍技术创新:统一技术平台限制了新技术的引入和创新。

分布式架构(Distributed Architecture)

概念含义:
分布式架构是一种应用程序设计方法,其中应用程序的不同组件分布在不同的服务器或位置,并通过网络通信。这种架构对业务按照产品模块抽象,变成一个分布式系统,然后部署在不同的服务器上,责任清晰

可以针对性的扩展,灵活部署可重用的逻辑单元抽象后,提高代码的复用性。类似于桥接再前后台方向上做拆分,在水平方向上也做拆分,即允许水平扩展和负载均衡。

特点:

  • 可扩展性:通过增加更多的服务器来处理增加的负载。
  • 高可用性:组件分布在不同位置,提高了系统的容错能力。

优点:

  • 负载均衡:通过分布式部署,系统可以更好地处理高并发需求。
  • 降低耦合度:模块化设计降低了模块间的依赖。
  • 责任清晰:不同团队可以负责不同的子项目。
  • 扩展方便:新增功能时,只需增加子项目并调用其他系统接口。
  • 部署灵活:可以灵活地进行分布式部署。
  • 提高代码复用性:例如,通过分布式REST服务共享service层。

缺点:

  • 系统间交互复杂:远程通信增加了接口开发的工作量,问题排查更加困难。
  • 相比较单体应用,需要网络开销
  • 相比较单体应用,发布系统需要特定脚本,甚至是运维平台。

面向服务架构(SOA模式)

从运维侧视角出发,从前后端分离切入,后端服务发布后需要登记,然后web根据列表查找对应的服务,然后直连数据库,这就是面向服务架构SOA,最大的特征是注册中心,类似于代理设计模式的作用。它确保服务的设计和开发的一致性和完整性的治理机制。模块按照后端服务的功能内聚进行拆分,然后抽象为服务。

优点:

1)ESB集成不同协议的服务,做消息的转化、解释、路由,从而联通各个服务解决企业通信问题

2)服务松耦合、可扩展性强

缺点:

1)ESB的存在并没有根本解决单体巨石应用的一些问题

2)SOA更多的面向企业服务,服务拆分粒度很大,更多的是为了复用

微服务架构(Microservices Architecture)

概念含义:
因S0A服务粒度太粗,微服务是去中心化的SOA扩展,强调服务彻底的组件化,一个组件就是一个产品。服务间通过轻量化的协议进行通信,并根据服务本身进行独立化部署。微服务架构是一种将应用程序作为一套小服务的设计方法,每个服务运行在其自己的进程中,并通常围绕业务功能构建。微服务采用分布式、松耦合结构,服务可以独立部署、升级和扩展,它们之间不会互相影响,也可以让不同的开发团队各自维护自己的服务,而不是更新整个应用,从而减少开发时间和发布频率。微服务类似于装饰模式,通过服务之间的积木式看加完成用户想要的功能。

特点:

  • 独立性:每个服务可以独立开发、部署和扩展。
  • 技术多样性:团队可以选择最适合其服务的技术栈。

优点:

  • 易于开发和维护:每个微服务关注特定业务功能,代码量较少。
  • 快速启动:微服务代码量少,启动快。
  • 局部修改易部署:只需重新部署修改的服务。
  • 技术栈灵活:可根据服务需求选择合适的技术栈。

缺点:

  • 运维要求高:需要保证大量服务的正常运行与协作。
  • 分布式复杂性:系统容错、网络延迟、分布式事务等带来挑战。
  • 接口调整成本高:API修改可能影响多个服务。
  • 重复劳动:相同功能可能在不同服务中重复开发。

Serverless架构(Serverless Architecture)

概念含义:
Serverless包括BaaS和FaaS服务,前者就是开发者利用提供包括云函数、数据存储、文件存储等一整套后端服务,通过API完成运维管理和容器部署;后者允许开发者以函数作为最小单元部署到云平台上,再通过API来调用。Serverless好处是按照实际使用进行计费,降低了研发成本可以一套代码多端使用。对于单个API和一组API的计费和流量统计就是典型的组合模式。

特点:

  • 无需管理服务器:开发者专注于代码,而云服务提供商处理基础架构。
  • 按需付费:只支付代码实际运行的时间。

优点:

  • 低运营成本:按需计费,节省资源。
  • 简化设备运维: 聚焦业务逻辑开发, 开发人员无需关注底层硬件运维。
  • 提升可维护性:集成第三方服务,降低开发成本,简化运维, 业务连续性和容灾有保障 。
  • 快速开发:利用BaaS平台快速开发产品, 弹性高可用,按需付费,灵活性和适应性好 。

缺点:

  • 厂商平台绑定:依赖特定云服务,线上开发黑盒调试复杂,迁移成本高。
  • 成功案例少,无行业标准:目前适合简单应用,缺乏大型案例。
  • 冷启动,冷门函数或周期性函数应对突发高流量难以快速达到峰值能力
  • 接口暴露较多,安全风险增加

服务网格模式(Service Mesh)

概念含义:
服务网格(Service Mesh)是一种专注于微服务间通信的基础设施层,如Istio、Linkerd等。Sidecar 架构是指业务容器和代理容器同处于一个 Pod 内,业务容器的进出向流量全部由代理容器代理。业务容器负责业务逻辑本身,代理容器负责服务的治理,包括负载均衡、网格信息传递、流控熔断、访问控制等。Sidecar模式就是一个适配器,使得不同的业务模块都可以进行一些统一的操作与管理。

特点:

  • 微服务间通信的抽象化:服务网格处理服务间的通信,使得业务逻辑更清晰,实现微服务治理与业务逻辑的解耦。
  • 增强的可观察性:服务网格可以提供更详细的监控和日志记录。
  • 异构系统的统一治理。 多语言、多协议的统一流量管控、监控等需求。
  • 流量控制。服务网格承载了微服务之间的通信流量,服务网格流量控制
  • 安全。服务网格恰恰提供了保护网络调用的功能和基础设施。

优点:

  • 微服务间通信的抽象化:简化了服务间的通信逻辑。
  • 增强的服务发现和负载均衡:自动服务发现和智能负载均衡。
  • 故障恢复和流量管理:提供重试、超时和流量分割。
  • 安全和策略执行:统一的安全策略和认证。

缺点:

  • 增加系统复杂性:引入服务网格层可能会增加系统的复杂性。
  • 性能开销:代理可能会引入额外的延迟。

模型即服务模式(Model as a Service, MaaS)

概念含义:
MaaS,模型即服务,是典型的门面设计模式, 通过模型训练,封装成对外的整套逻辑和数据 (包括视频、音频、图片、表格),上层业务逻 辑部分下沉到模型智能算法。通过大模型训练, 动态调整服务能力和用户期待的系统行为和数据 反馈。它屏蔽模型训练子系统的复杂实现,用户 仅仅是通过自然语言就可以获得对应的买票、支 付、互动、图像、甚至是AI制作的视频 ,允许用户通过API访问预先训练好的机器学习模型,而无需自己构建和维护模型。

特点:

  • 快速集成AI:用户可以快速将AI模型集成到自己的应用程序中。
  • 持续更新:服务提供商负责模型的持续训练和优化。

优点:

  • 快速集成AI能力:无需自行开发,快速集成AI模型。
  • 持续更新和优化:服务提供商持续优化模型。
  • 降低技术门槛:无需深入了解机器学习技术。

缺点:

  • 数据隐私和安全问题:数据需要上传到外部服务器。
  • 依赖外部服务:模型的性能和可用性依赖于服务提供商。
  • 模型的问题如果上升到业务层,那么排查很难
  • 跨编程语言协同有难度
  • 目前模型的响应速度无法应对超高流量

总结

软件架构的选择应基于业务需求、技术能力、团队经验等多方面因素。从单体到微服务,再到Serverless和新兴的服务网格与MaaS模式。每种部署模式都对应着不同的技术需求和业务场景,选择合适的架构模式对于提高开发效率、系统可维护性和业务扩展性至关重要。

本文为大家提供了对不同软件架构模式的深入解析,希望能够帮助大家更好地理解每种架构的特点,以及它们在现代软件开发中的应用。

标签:Serverless,架构,部署,业务,单体,网格,模式分析,服务,分布式
From: https://blog.csdn.net/kunpengtingting/article/details/140358651

相关文章

  • 【云原生技术】Serverless简介
    Serverless简介Serverless的定义Serverless的工作原理应用举例1.Web应用后端服务2.数据处理和分析3.IoT应用总结Serverless是一种云计算服务模型,它使开发者能够编写和部署功能单元(Functions)而无需管理底层的服务器资源。下面详细介绍Serverless的定义、工作原理......
  • 在 PostgreSQL 里如何实现数据的分布式查询的负载均衡?
    文章目录在PostgreSQL中实现数据分布式查询的负载均衡在PostgreSQL中实现数据分布式查询的负载均衡在当今数字化时代,数据量呈爆炸式增长,对于大规模数据处理的需求也日益迫切。在PostgreSQL中实现数据的分布式查询负载均衡成为了提升系统性能和可用性的关键......
  • 设计模式与分布式架构实战 总结
    在当今快速发展的软件工程领域,掌握设计模式和分布式架构对于构建高效、稳定、可扩展的系统至关重要。以下是对相关内容的进一步分析和梳理,供大家参考。架构设计的哲学:NP问题的现实映射什么是NP问题?NP问题是计算机科学中的一个重要概念,它代表了一类可以在多项式时间内验证......
  • 探讨篇(四):分布式数据访问解决方案
    背景如果数据在同一个服务的同一个数据库,通过SQL即可查询相对比较简单,但当数据被分布到不同服务不同的数据库中时,访问组合数据的操作就变的比较困难。针对这个问题,本文描述了服务读取不同服务的数据库的几种方法:服务间通信模式、数据缓存模式、数据复制模式、数据共享模式本文......
  • 算力共享,分布式大模型是什么,模型并行,流水线并行
    目录算力共享,分布式大模型是什么一、算力共享二、分布式大模型AllReduce是什么原理概述具体原理简单例子模型并行,流水线并行是什么模型并行流水线并行环形通信(如RingAllReduce)、树形通信(如TreeAllReduce环形通信(RingAllReduce)树形通信(TreeAllReduce)总结......
  • 软件系统的架构演进以及集群和分布式
    一、单体架构:将四个模块ABCD放到一个项目中,功能模块不进行拆分,项目整体搭建集群叫做多机单体架构,项目不搭建集群叫单机单体架构。                 单体架构的优点:简单:开发部署都很方便,小型项目首选单体架构的缺点:......
  • 面经梳理-分布式
    题目请简述一下CAP理论,我们常见的中间件分别侧重点是什么?简述一下BASE理论?什么是强一致性,弱一致性,最终一致性CAP理论CAP原则又称CAP定理,指的是在一个分布式系统中,Consistency(一致性)、Availability(可用性)、Partitiontolerance(分区容错性)这三个基本需求,最多只能同时满足其中的2......
  • java Redission 分布式锁的使用
    在微服务的场景下,一个应用会部署多个实例,在一些业务场景中,需要保证同一时间多个线程只能有一个线程操作资源,分布式锁可以实现这一需求。JAVA中,Redission分布式锁是基于Redis实现的分布式锁,使用简单,只需要关注业务场景和使用到的接口即可。引入依赖<!--https://mvnreposito......
  • 服务网格新篇章:Eureka与分布式服务网格的协同共舞
    服务网格新篇章:Eureka与分布式服务网格的协同共舞引言在微服务架构的浪潮中,服务网格(ServiceMesh)技术以其微服务间通信的精细化控制而备受瞩目。Eureka作为Netflix开源的服务发现框架,虽然本身不直接提供服务网格功能,但可以与服务网格技术如Istio、Linkerd等无缝集成,实现服......
  • 会话无界:Eureka中服务的分布式会话管理策略
    会话无界:Eureka中服务的分布式会话管理策略引言在微服务架构中,随着服务数量的增加,传统的会话管理方法面临着诸多挑战,如数据一致性、服务隔离和水平扩展等。Eureka作为Netflix开源的服务发现框架,虽然本身不直接提供会话管理功能,但可以与其他技术结合使用,实现服务的分布式会......