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

​​​​​​​​

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

(见表 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并没有规定服务的大小或粒度,因此可以包括各种不同类型的服务,从较大的服务到微小的服务。

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

相关推荐
在未来等你18 分钟前
Elasticsearch面试精讲 Day 14:数据写入与刷新机制
大数据·分布式·elasticsearch·搜索引擎·面试
敲上瘾32 分钟前
Docker 存储卷(Volume)核心概念、类型与操作指南
linux·服务器·数据库·docker·容器·架构
John_ToDebug44 分钟前
从源码视角全面解析 Chrome UI 布局系统及 Views 框架的定制化实现方法与实践经验
c++·chrome·架构
一水鉴天1 小时前
整体设计 之 绪 思维导图引擎 :思维价值链分层评估的 思维引导和提示词导航 之 引 认知系统 之8 之 序 认知元架构 之3(豆包助手 之5)
架构·认知科学
在未来等你1 小时前
Elasticsearch面试精讲 Day 11:索引模板与动态映射
大数据·分布式·elasticsearch·搜索引擎·面试
在未来等你1 小时前
Kafka面试精讲 Day 14:集群扩容与数据迁移
大数据·分布式·面试·kafka·消息队列
uzong1 小时前
深入浅出:画好技术图
后端·架构
眠りたいです12 小时前
基于脚手架微服务的视频点播系统-播放控制部分
c++·qt·ui·微服务·云原生·架构·播放器
^辞安12 小时前
RocketMQ为什么自研Nameserver而不用zookeeper?
分布式·zookeeper·rocketmq
Aczone2813 小时前
硬件(五) 存储、ARM 架构与指令系统
arm开发·嵌入式硬件·架构