【系统架构】集群、分布式概念及系统架构演进过程

news2024/9/24 11:32:58

集群、分布式概念:

        对食物没有太高要求的人在肚子饿的时候一般都会选择去兰州拉面、沙县小吃等小饭馆,这类小饭馆有个很显著的特点:洗菜、切菜、炒菜都是同一个人完成,如果厨子不舒服可能饭馆还会歇业。而一些人流量较大的饭馆的分工则不像小饭馆那样“随便”,厨房中可能有多个洗菜的、多个切菜的、多个炒菜的,每个人都各司其职,就算其中一个炒菜的大厨生病了也不会导致饭馆歇业,顶多影响一下上菜速度。

        在上述例子中,我们可以将洗菜、切菜、炒菜视作一个独立的模块,小饭馆中的大厨同时需要干这三件事可以抽象成多个功能模块部署在一个项目中、小饭馆里只有一个厨子可以抽象成服务单体部署、厨子生病可以抽象成服务挂了,如下图所示。

        在大饭馆中,洗菜、切菜、炒菜等工作分配给了不同的人,不再是由一个人完成,并且每份工作有多个人在做,相当于把功能模块进行了抽离,模块不再内嵌到一个项目中,而是拆分成多个服务部署到不同机器上,形成一个完整的系统,如下图所示。

        在上图中,洗菜有两个人负责、切菜有两个负责、炒菜也有两个人负责,这就是集群的概念,假设其中一个炒菜的生病了,另外一个炒菜的也能接替它的工作,系统能照常运行。

        做菜的每个流程都有专门的人来负责就是分布式的概念。洗菜、切菜、炒菜的多个人共同协作一起完成做菜这件事。

        总结

        集群指多个人做一样的事情(多台机器提高相同的服务)。

        分布式指多个人做不一样的事情(每台机器提供不同的服务),这些事可以合并起来变成一件大事(不同服务组合,变成一个完善的系统)。

系统架构演进:

        (1)单体架构业务模块(如用户模块、订单模块等)不进行拆分,放在同一个项目中。

        优点开发、部署都很方便

        缺点

        1、可靠性差,一个模块出了问题会导致整个系统不可用。

        2、可伸缩性差,不能将系统中的一个模块单独抽离出来集群部署。

        3、扩展性差,新需求产生新模块时,还是只能将新模块放在一个应用中。

        (2)垂直架构拆分功能模块,放到不同项目中(系统拆分成多个单体架构)。

        优点相对于单体架构,模块间的耦合度降低,可靠性、可伸缩性、扩展性都有所提升。

        缺点假设有一个用户模块E,两个应用都需要用到这个模块,那么只能将模块E分别集成到两个应用中,造成功能重复。

        (3)分布式架构将系统中的公用模块抽离出来,放到一个新的项目中;作为独立的服务供其它服务消费,实现服务的共享和重用。

        由于部署在不同的机器上,业务模块与公用模块间的通信本质上是不同机器之间的网络通信,业务模块需要获知部署公用模块机器的IP、端口和暴露出来的接口,基于RPC(Remote Procedure Call,远程过程调用)或消息队列实现模块间的交互。

        优点解决了垂直架构中重复功能的问题。

        缺点一旦公用模块发生变更(IP、端口发生变更),业务模块那边也需要做相应改变(该配置文件或代码)。

        (4)SOA(面向服务)架构模块与模块之间不再直接进行交互,而是通过ESB(企业服务总线)服务中介来为模块间的交互搭建桥梁。

        特点

        1、服务的状态发生变更时,调用方服务不需要感知服务提供方的变化,并做出相应改变;我们只需要告诉ESB,“我”要访问哪一个服务,由ESB去寻找服务提供方。(进一步降低了模块间的耦合度)。

        2、ESB的功能负载均衡、流量控制、加密处理、服务监控、异常处理、监控告急等。

        (5)微服务架构中心思想将模块彻底的"组件化"和"服务化",业务系统会拆分成多个可以独立开发、设计、运行的小应用,应用之间通过服务完成交互和集成。

        特点

        1、每个微服务相互独立、互不干扰,模块间耦合度极低。

        2、每个微服务可以自由选择开发技术和工具(开发语言选择、技术选型自由度高),不需要与其它团队协调。

        3、每个微服务都有属于自己的业务数据,在部署、测试时无需依赖于其它服务(SOA架构中,可能还需要先启动服务提供模块),极大地便利了自动化部署和测试。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1310955.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Qt之QNetworkAccessManager】概述及示例

概述 QNetworkAccessManager类允许应用程序发送网络请求和接收应答 网络访问API是围绕一个QNetworkAccessManager对象构建的,该对象为它发送的请求保存通用配置和设置。它包含代理和缓存配置,以及与此类问题相关的信号,以及可用于监视网络操…

【Linux API 揭秘】container_of函数详解

我的圈子: 高级工程师聚集地 我是董哥,高级嵌入式软件开发工程师,从事嵌入式Linux驱动开发和系统开发,曾就职于世界500强企业! 创作理念:专注分享高质量嵌入式文章,让大家读有所得! …

leetcode-21-合并两个有序链表(C语言实现)

题目: 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1: 输入:l1 [1,2,4], l2 [1,3,4] 输出:[1,1,2,3,4,4]示例 2: 输入:l1 [], l2 [] 输出…

不用再找,这是大模型 LLM 微调经验最全总结

大家好,今天对大模型微调项目代码进行了重构,支持ChatGLM和ChatGLM2模型微调的切换,增加了代码的可读性,并且支持Freeze方法、Lora方法、P-Tuning方法、「全量参数方法」 微调。 PS:在对Chat类模型进行SFT时&#xff…

一款计算机顶会爬取解析系统 paper info

一款计算机顶会爬取解析系统 paper info 背景项目实现的功能 技术方案架构设计项目使用的技术选型 使用方法本地项目部署使用ChatGPT等大模型创建一个ChatGPT助手使用阿里云 顶会数据量 百度网盘pfd文件json文件 Q&A github链接 :https://github.com/codebricki…

PyTorch 模型训练性能大揭秘:从基础到高级技巧一网打尽!

PyTorch 是一个开源的 Python 机器学习库,基于Torch,用于自然语言处理等应用程序。 PyTorch既可以看作加入了GPU支持的numpy,也可以看成一个拥有自动求导功能的强大的深度神经网络,同时它也是大模型开发的首选工具。 《PyTorch模…

每日分享,以元旦为题的诗词

元旦佳节即将来临,相信大家都会在朋友圈表达一下自己的情感,不管大家以前是怎么表达的,今天小编给你分享几首以元旦为题的几首诗,喜欢的朋友可以自取,想要更多免费的诗词,请自行百度或小程序搜索&#xff1…

ES中根据主键_id查询记录

一、需求 es中_type:_doc,想要根据主键_id查询记录 二、实现 复合查询中使用语句查询http://192.168.1.1/_doc/1

ArcGIS for Android开发引入arcgis100.15.2

最后再点击同步即可!!!

Stable diffusion 简介

Stable diffusion 是 CompVis、Stability AI、LAION、Runway 等公司研发的一个文生图模型,将 AI 图像生成提高到了全新高度,其效果和影响不亚于 Open AI 发布 ChatGPT。Stable diffusion 没有单独发布论文,而是基于 CVPR 2022 Oral —— 潜扩…

如何用开关电源测试系统测试电源峰值电流?

一、用万用表、示波器测量峰值电流 首先将待测电路输入信号线分别连接到测试电路的输入端和地端。待测电路的电源端连接电源。然后将示波器设置为AC耦合模式,通道1连接待测电路输入端,通道2连接待测电路地端。调整数字万用表为电流测量模式。打开电源&am…

【动手学深度学习】(十三)深度学习硬件

文章目录 一、CPU和GPU二、更多的芯片1.DSP:数字信号处理2.可编程阵列(FPGA)3.AI ASIC 三、单机多卡并行 一、CPU和GPU 提升CPU利用率 在计算ab之前,需要准备数据 主内存->L3->L2->L1->寄存器(数据只有进入寄存器才可以参与运算) 提升空间和时间的内存…

USB2.0 Spec 中文篇

体系简介 线缆 USB 是一种支持热拔插的高速串行传输总线,使用一对(两根)差分信号来传输数据,半双工。要求使用屏蔽双绞线。 供电 USB 支持 “总线供电” 和 “自供电” 两种供电模式。在总线供电方式下,设备最多可…

C++学习笔记—— C++内存管理方式:new和delete操作符进行动态内存管理

系列文章目录 http://t.csdnimg.cn/d0MZH 目录 系列文章目录http://t.csdnimg.cn/d0MZH 比喻和理解a.比喻C语言开空间C开空间 b.理解a、C语言的内存管理的缺点1、开发效率低(信息传递繁琐)2、可读性低(信息展示混乱)3、稳定性差&…

【MATLAB】基于VMD分解的信号去噪算法(基础版)

代码的使用说明 基于VMD分解的信号去噪算法(基础版) 代码流程图 代码效果图 本文代码:阿里云盘分享 获取代码请关注MATLAB科研小白的个人公众号(即文章下方二维码),并回复VMD去噪 本公众号致力于解决找代…

铭飞CMS list 接口 SQL注入漏洞复现

0x01 产品简介 铭飞CMS是一款基于java开发的一套轻量级开源内容管理系统,铭飞CMS简洁、安全、开源、免费,可运行在Linux、Windows、MacOSX、Solaris等各种平台上,专注为公司企业、个人站长快速建站提供解决方案 0x02 漏洞概述 铭飞CMS在5.2.10版本以前list 接口处存在sql注入…

AI抽烟识别系统研发关键

为了设计一个有效的AI抽烟识别系统,我们需要考虑几个关键组成部分:图像捕捉、数据处理、模型训练、以及实际应用场景。下面是这个方案的详细阐述: 1. 图像捕捉与数据收集 摄像头部署:首先,在需要监控的区域安装高分辨…

社交网络分析1:起源发展、不同领域的应用、核心概念

社交网络分析1:社交网络相关定义和概念 写在最前面关于课程 社交网络、社交网络分析社交网络发展阶段(自己感兴趣)1. 社交网络的起源2. 社交网络的演变3. 社交网络的成熟4. 发展阶段补充和展望 2023社交大变革(自己感兴趣的点&…

带你手把手解读firejail沙盒源码(0.9.72版本) (三) fcopy

文章目录 main.c该模块的各个函数功能详解selinux_relabel_pathcopy_filemkdir_attrcopy_linkproc_pid_to_selffs_copydircheckduplicate_dirduplicate_fileduplicate_linkmain Makefile main.c 文件总结 ├── fcopy │ ├── Makefile │ └── main.cmain.c #include…

深度学习中的高斯分布

1 高斯分布数学表达 1.1 什么是高斯分布 高斯分布(Gaussian Distribution)又称正态分布(Normal Distribution)。高斯分布是一种重要的模型,其广泛应用与连续型随机变量的分布中,在数据分析领域中高斯分布占有重要地位。高斯分布是一个非常常见的连续概…