【架构】五大常见架构模式,集中式架构、分布式架构、面向服务的系统架构、微服务架构等区别详解

​​​​​​​​

一、传统上,信息系统体系架构有三种常见模式

(见表 4-3):

  • ①、集中式架构。集中式架构下所有内容采用集中建设、支持和管理的模式,其主体系统通常部署千数据中心,以消除管理物理分离的基础设施带来的困难。

    在集中式架构中,所有的计算资源和数据存储都集中在一个地方。通常有一个中心服务器或者主数据库,所有的客户端应用程序都连接到这个中心服务器来获取数据或者执行计算任务。这种模式简单、易于管理,但是存在单点故障的风险,当中心服务器发生故障时,整个系统将不可用。

  • ②、分布式架构。硬件、软件、网络和数据的部署方式是在多台小型计算机、服务器和设备之间分配处理能力和应用功能,这些设施严重依赖千网络将它们连接在一起。

    分布式架构将计算资源和数据存储分散在多个地方 。系统由多个独立的节点组成,这些节点可以在不同的物理位置上,通过网络进行通信和协作。分布式架构具有高可用性和容错性,因为没有单点故障,即使某些节点发生故障,系统仍然可以继续运行。分布式架构通常用于大规模的互联网应用程序和云计算环境中。

  • ③、面向服务的系统架构 (Service-Oriented Architecture, SOA) SOA 架构中使用的软件通常被引向软件即服务 (Software-as-a-Service, Saas) 的相关架构,同时,这些应用程序在通过互联网交付时也被称为 Web 服务。

二、其他常见模式

  1. 客户端-服务器模式(Client-Server):

    在这种模式下,系统由两个主要组件组成:客户端和服务器。客户端负责向用户提供界面和交互功能,而服务器则负责存储数据和执行应用程序逻辑。客户端和服务器之间通过网络进行通信。这种模式通常用于企业级应用程序和Web应用程序。

    一个常见的例子是电子邮件系统。在这个系统中,用户使用电子邮件客户端(如Outlook、Gmail等)作为客户端,通过网络连接到电子邮件服务器,发送和接收电子邮件。服务器负责存储用户的电子邮件,并在需要时向客户端提供访问。这种模式允许用户通过客户端与服务器进行通信,而无需了解服务器的内部工作原理。

  2. 微服务架构模式(Microservices Architecture):

    微服务架构将应用程序拆分为一组小型、自治的服务,每个服务都专注于一个特定的业务功能。这些服务可以独立部署、扩展和更新,从而提高了系统的灵活性和可维护性。微服务架构通常与容器化技术(如Docker)和服务发现工具(如Kubernetes)结合使用,以简化部署和管理。

    在线社交网络为例。在这个系统中,可以将不同的功能拆分为微服务,如用户管理服务、帖子服务、评论服务等。每个微服务都可以独立部署、扩展和更新,从而提高了系统的灵活性和可维护性。例如,如果需要对评论功能进行更新,只需更新评论服务,而不会影响其他服务的运行。

三、微服务模式和分布式模式区别

  • 微服务架构:微服务解决的是系统复杂度 问题:一般来说是业务问题,即在一个系统中承担职责太多了,需要打散,便于理解和维护,进而提升系统的开发效率和运行效率,微服务一般来说是针对应用层面的。微服务如果用在其它系统,如存储系统感觉怪怪的,就像说Mysql集群是微服务的,总觉得哪里不舒服。
  • 分布式架构:分布式解决的是系统性能 问题: 即解决系统部署上单点的问题,尽量让组成系统的子系统分散在不同的机器上进而提高系统的吞吐能力。强调一个物理上分布的概念。

四、微服务架构可以看作是面向服务架构的一种实现方式

微服务架构模式(Microservices Architecture)和面向服务的架构模式(Service-Oriented Architecture,SOA)有一些相似之处,但它们并不完全相同。

微服务架构模式是一种更加细粒度的服务架构,它将应用程序拆分为一组小型、自治的服务,每个服务都专注于一个特定的业务功能。这些服务可以独立部署、扩展和更新,从而提高了系统的灵活性和可维护性。微服务架构通常与容器化技术(如Docker)和服务发现工具(如Kubernetes)结合使用,以简化部署和管理。

而面向服务的架构(SOA)是一种更宽泛的概念,它强调将应用程序的功能分解为可重用的服务,这些服务可以通过网络进行交互。每个服务都是独立的、自包含的单元,可以通过标准化的接口进行访问。SOA并没有规定服务的大小或粒度,因此可以包括各种不同类型的服务,从较大的服务到微小的服务。

因此,微服务架构可以看作是面向服务架构的一种实现方式,它强调了更小、更自治的服务单元,并且通常与现代的云原生技术结合使用,以支持敏捷开发和部署。

相关推荐
fengxin_rou1 小时前
RabbitMQ安装教程:windows本地安装和docker部署
java·分布式·后端·rabbitmq
星辰_mya1 小时前
分布式消息领域的“深水区”问题
分布式
juniperhan2 小时前
Flink 系列第20篇:Flink SQL 语法全解:从 DDL 到 DML,窗口、聚合、列转行一网打尽
大数据·数据仓库·分布式·sql·flink
jinanwuhuaguo2 小时前
反熵共同体——OpenClaw的宇宙热力学本体论(第十七篇)
大数据·人工智能·安全·架构·kotlin·openclaw
小旭95272 小时前
分布式事务 Seata 详解 + 链路追踪 SkyWalking 实战
java·分布式·后端·信息可视化·skywalking
Cosolar2 小时前
大模型应用开发工程师面试指南——从入门到通关,拿下高薪Offer
面试·架构·llm
AI服务老曹2 小时前
架构实战:如何构建支持X86/ARM及异构GPU/NPU的跨平台企业级AI视频管理系统?
arm开发·人工智能·架构
万岳科技系统开发2 小时前
小程序直播架构调整指南:H5嵌套模式的优化与替代方案
小程序·架构
roman_日积跬步-终至千里3 小时前
【系统架构师案例题-知识点】云原生与大数据架构
大数据·云原生·系统架构
迷藏4943 小时前
# 发散创新:用Locust实现高并发场景下的精准压力测试与性能调优实战在现代微服务架构中,**接口稳定性与响应速度**已成为衡量
java·python·微服务·架构·压力测试