• 常用概念-分布式系统


    常用概念系列目录

    1. 常用概念-水平扩展和垂直扩展
    2. 常用概念-集群
    3. 常用概念-分布式系统

    正文

    分布式系统是建立在网络之上的软件系统,此定义包含了两个关键点

    • 软件系统
      此处的软件是一个通用概念,可以是业务软件、也可以是数据库软件、也可以是中间件软件;
      系统指这些软件作为一个整体统一对外提供服务;
    • 网络之上
      网络通信是分布式系统的显著特点,也是导致分布式系统产生数据不一致、服务不可用等问题的根源;

    本文以具备多个功能模块的业务软件为例,介绍分布式系统的相关知识。数据库软件、中间件软件可以认为是具备一个功能模块的业务软件。

    一般情况下,软件系统包含多个功能模块,这些功能模块相互协调合作,向用户提供各类服务。

    在单体系统中,这些功能模块在一个工程中,模块之间的调用都在本地完成,不经过网络,最终单体系统经过编译打包后,部署在一台服务器上。

    分布式系统同样也是一个软件系统,它同样包含了多个功能模块。不同的是,这些功能模块被部署在不同的服务器节点上(分布式,即分布在不同的服务器节点上),这些模块之间的交互需要通过网络完成。

    为何要使用分布式系统?

    • S: 用户请求量大或数据量大,单体系统无法有效响应请求或处理数据。

    • T: 单体系统问题实质是物理层面单台服务器的性能不够问题,其根本解决办法是提高服务器性能。

      • 当进行垂直扩展时(即提升服务器性能),系统部署包仍部署在一个服务器上,系统各个功能模块之间的调用不走网络,此时不是分布式系统。
      • 当进行水平扩展时(即增加服务器数量),就需要对单体系统进行切分,并将切分后功能模块运行在多个服务器,此时系统各个功能模块之间调用需要通过网络,此时是分布式系统;
    • A:对单体系统的切分是功能模块层面,这些功能模块可以认为是一项任务,这些任务分布在不同的服务器上。常见三种切分方式

      • 水平切分
        复制单体系统的部署包,将其部署在不同的服务器上,即同一个系统部署到多台机器上。
        对应水平扩展;
      • 垂直切分
        按照业务维度,将单体系统拆分为多个功能模块,这些功能模块分别形成不同的部署包,部署在不同的服务器上;
        对应垂直扩展;
      • 混合切分
        将水平切分和垂直切分结合起来;
    • S: 以具备A、B、C三个模块的单体系统为例,单体系统的部署情况为 服务器1(A、B、C)

      • 水平切分
        服务器1(A、B、C) <----> 服务器2(A、B、C)<----> 服务器3(A、B、C)
        箭头表示存在交互关系

      • 垂直切分
        服务器1(只有A) <----> 服务器2(只有B)<----> 服务器3(只有C)
        箭头表示存在交互关系

      • 混合切分
        服务器1(只有A) <----> 服务器2(只有B1) <----> 服务器3(只有B2)<----> 服务器4(只有C)

        A B C垂直切分,B1、B2水平切分
        箭头表示存在交互关系

    分布式系统实质是分布式部署系统,其特点是功能模块部署在不同的服务器上,通过网络交互。

    微服务是一种软件架构设计思想,强调在业务层面将大的功能拆分为小的服务模块,是上文的切分过程。而分布式是在系统切分完成之后,强调系统部署包分布在不同的服务器上面。

  • 相关阅读:
    NYOJ - 91 - 阶乘之和(贪心算法)
    风控策略的上线效果评估与调优
    【大数据离线开发】6.2 MapReduce的高级特性
    Docker 部署mysql8(arm64)
    HTML <u> 标签
    Dive into TensorFlow系列(2)- 解析TF核心抽象op算子
    太速科技-基于Xilinx Kintex-7 FPGA K7 XC7K325T PCIeX8 四路光纤卡
    Maxcompute-UNION数据类型对齐的方法
    【JetPack Compose】JetPack Compose简单介绍
    STM32 DMA从存储器发送数据到串口
  • 原文地址:https://blog.csdn.net/TylerGuoj/article/details/126231456