当前位置: 首页 > news >正文

【分布式 | 第五篇】何为分布式?分布式锁?和微服务关系?

在这里插入图片描述

文章目录

  • 5.何为分布式?分布式锁?和微服务关系?
    • 5.1何为分布式?
      • 5.1.1定义
      • 5.1.2例子
      • 5.1.3优缺点
        • (1)优点
        • (2)缺点
    • 5.2何为分布式锁?
      • 5.2.1定义
      • 5.2.2必要性
    • 5.3区分分布式和微服务
      • 5.3.1区分点
      • 5.3.2举例

5.何为分布式?分布式锁?和微服务关系?

5.1何为分布式?

5.1.1定义

  1. 分布式系统是由多台计算机或设备共同工作通过网络进行通信和协作,以实现一个统一的目标或完成一个共同的任务。
  2. 想象一下,如果把一个任务分解成多个小任务,然后由不同的人分工合作完成,这就像是分布式系统的工作方式。
  3. 分布式系统就是将一个大任务分解成多个小任务由多台设备共同协作完成,以提高系统的性能和可靠性,这就好像是一个由多个人组成的团队一起完成一项任务一样。

5.1.2例子

  1. 组织一个大型派对。如果你自己负责所有准备工作,比如购买食物、装饰场地、发送邀请等,可能会非常辛苦而且效率低下。但如果你将任务分配给一些朋友,比如让其中一人负责食物购买、另一人负责场地布置、再另一人负责发送邀请,那么整个派对的准备工作就会变得更加高效和顺利。这就好像是一个分布式系统,各个部分(人)通过协作完成了一个共同的目标(派对)。
  2. 在计算机领域,分布式系统也是类似的道理。它将任务分配给多台计算机或设备,每台设备完成一部分工作,然后将结果汇总或交换信息,最终完成整个任务。这种分工合作的方式能够提高系统的性能、可靠性和扩展性,使得系统能够应对更大的负载和更复杂的任务。

5.1.3优缺点

(1)优点
  1. 高可用性 分布式系统通过将数据和计算分布在多个节点上,可以提高系统的可用性。即使某个节点或部分节点发生故障,系统仍然可以继续运行,从而保证了系统的可靠性和持续可用性。

  2. 扩展性 随着业务的增长和用户规模的扩大,单一节点往往无法满足系统的需求。分布式系统可以通过增加节点或者扩展集群规模来实现水平扩展,从而满足系统的性能需求。

  3. 容错性 在分布式系统中,由于存在多个节点,即使部分节点发生故障,系统仍然可以继续运行。通过数据的冗余备份和故障转移等机制,分布式系统能够提高容错性,减少单点故障对系统造成的影响。

    图片描述

  4. 地理分布: 分布式系统允许将数据和计算分布在不同地理位置的节点上,从而实现数据的就近访问和处理,提高数据传输的效率和响应速度。

(2)缺点

凡事具有两面性,分布式服务带来很多好处的同时肯定还会带来麻烦,主要从 3 方面考虑。

  1. 分布式服务依赖网络
    服务器间通讯依赖网络,不可靠网络包括网络延时,丢包、中断、异步,一个完整的服务请求依赖一连串服务调用,任意一个服务节点网络出现问题,都可能造成本次请求失败。
  2. 维护成本高
    传统单体式服务只需要维护一个站点就可以。
    分布式服务系统被拆分成若干个小服务,服务从 1 变为几十个上百个服务后,增加运维成本。
  3. 一致性,可用性,分区容错性无法同时满足
    这个是最主要的,这三种特性就是平时说的 CAP 定理,在分布式系统中,这三种特性最多只能满足两种,无法同时满足,需要根据实际情况去调整牺牲掉其中哪个。

5.2何为分布式锁?

5.2.1定义

  1. 分布式锁是一种用于在分布式系统中实现互斥访问的机制
  2. 它允许多个进程或线程在不同的节点上同步访问共享资源,确保在任何时刻只有一个进程或线程可以持有锁,并且能够安全地释放锁,以避免资源竞争和数据不一致的问题。

5.2.2必要性

  1. 数据一致性:在分布式系统中,多个节点可能同时访问共享资源,如果不加控制地进行访问,可能会导致数据不一致的问题,例如脏数据或冲突写入。使用分布式锁可以确保在任何时刻只有一个节点可以修改共享资源,从而保证数据的一致性。
  2. 避免竞态条件:在并发访问的情况下,如果没有适当的锁机制,可能会出现竞态条件,导致不确定的执行结果或错误的行为。分布式锁可以有效地避免这种情况的发生,确保对共享资源的安全访问。
  3. 防止资源过度消耗:在高并发环境下,如果没有锁机制限制对某些资源的访问,可能会导致资源过度消耗或系统崩溃。通过分布式锁可以对资源的访问进行合理的限制和调度,从而保护系统的稳定性和可靠性。

5.3区分分布式和微服务

​ 分布式系统是由多台计算机或设备共同工作,通过网络进行通信和协作,以实现一个统一的目标或完成一个共同的任务的系统。它强调的是系统内部的组织结构和通信方式,以及如何将任务分解并分配给多个计算机或设备来提高系统的性能、可靠性和扩展性。分布式系统可以包括分布式存储系统、分布式计算系统、分布式数据库等。

​ 微服务是一种架构风格,将应用程序构建为一组小型、独立部署的服务,每个服务都围绕着特定的业务功能进行设计和构建,并通过轻量级的通信机制(通常是HTTP API)相互通信。微服务架构的核心理念是将大型单体应用程序拆分为多个小型服务,每个服务都可以独立开发、部署和扩展,从而提高开发速度、灵活性和可维护性。

5.3.1区分点

  1. 范围不同
    • 分布式系统是一种系统架构模式,强调系统内部的组织结构和通信方式
    • 而微服务是一种架构风格,强调将应用程序构建为一组小型、独立部署的服务
  2. 关注点不同
    • 分布式系统关注整个系统的组织和通信方式,以提高系统的性能、可靠性和扩展性;
    • 微服务关注的是如何将应用程序拆分为小型、独立部署的服务,以提高开发速度、灵活性和可维护性。
  3. 实现方式不同
    • 分布式系统可以采用各种架构和技术实现,包括分布式计算、分布式存储、分布式数据库等;
    • 微服务通常使用轻量级的通信机制(如HTTP API) 来实现服务之间的通信,每个服务可以使用不同的技术栈和编程语言。

5.3.2举例

假设你正在建立一个在线电子商务平台:

  1. 分布式系统 在这个电子商务平台中,你可能会使用分布式系统来处理不同方面的需求,比如订单管理、用户认证、商品搜索等。分布式系统将这些不同的功能模块分布在多个节点上,以实现高可用性、扩展性和容错性。例如,你可以有一个节点用于订单管理,另一个节点用于用户认证,而另一个节点用于商品搜索。这些节点可以通过网络通信来进行协作和数据交换。
  2. 微服务架构 在这个电子商务平台中,你可能会使用微服务架构来组织和管理这些不同的功能模块。每个功能模块都可以作为一个独立的微服务,具有自己的数据存储、业务逻辑和用户界面。例如,你可以有一个订单管理微服务、一个用户认证微服务和一个商品搜索微服务。每个微服务都可以独立部署、扩展和更新,从而实现灵活性和敏捷性。

因此,分布式系统强调的是系统的架构和部署方式,即将系统的不同组件分布在多个节点上,而微服务架构则强调的是系统的设计和组织方式,即将系统拆分成多个小型、独立的服务单元。在实践中,微服务架构通常会使用分布式系统来实现。

在这里插入图片描述

相关文章:

【分布式 | 第五篇】何为分布式?分布式锁?和微服务关系?

文章目录 5.何为分布式?分布式锁?和微服务关系?5.1何为分布式?5.1.1定义5.1.2例子5.1.3优缺点(1)优点(2)缺点 5.2何为分布式锁?5.2.1定义5.2.2必要性 5.3区分分布式和微服…...

JavaScript百炼成仙自学笔记——13

函数七重关之六(“new”一个函数) 看个代码: function hello(){console.log(this); } 1、this:也是JavaScript中的一个关键字,永远指向当前函数的调用者 解释一下,有两层意思: ①this要嘛不出现&#…...

【skill】小米10让app永驻后台

小米10(国行), 8128不能让app驻留后台我也忍了,但是12256依然如此,各种尝试,全网检索不杀app的方法,除了在系统设置里调,什么adb、shizuku冰箱冰柜的没一个能用 系统版本试过国行版…...

《架构风清扬-Java面试系列第29讲》聊聊DelayQueue的使用场景

DelayQueue是BlockingQueue接口的一个实现类之一 这个属于基础性问题,老规矩,我们将从使用场景和代码示例来进行讲解 来,思考片刻,给出你的答案 1,使用场景 实现:延迟队列,其中元素只有在其预定…...

说说SpringBoot自动配置原理

Spring Boot的自动配置原理可以概括为:通过读取jar包中的配置信息,并根据项目依赖和条件注解自动配置应用程序所需的bean,从而减少手动配置的工作量。 第一、代码入口 SpringBootApplication 👇 EnableAutoConfiguration &#…...

bash: docker-compose: 未找到命令

bash: docker-compose: 未找到命令 在一台新的服务器上使用 docker-compose 命令时,报错说 docker-compose 命令找不到,在网上试了一些安装方法,良莠不齐,所以在这块整理一下,如何正确快速的安装 docker-compose cd…...

linux 权限和权限的设置

在Linux中,文件和目录的权限是一个重要的安全特性。这些权限决定了哪些用户可以读取、写入或执行某个文件或目录。以下是关于Linux权限和如何设置它们的基本信息。 权限类型 Linux中有三种基本的权限类型: 读取(r):…...

基于Springboot的旅游管理系统(有报告)。Javaee项目,springboot项目。

演示视频: 基于Springboot的旅游管理系统(有报告)。Javaee项目,springboot项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构&…...

springboot3项目练习详细步骤(第一部分:用户业务模块)

目录 环境准备 用户模块 注册 注册接口文档 ​编辑 实现结构 Spring Validation 登录 登录的接口文档 实现登录逻辑 JWT令牌 完善登录认证 拦截器 获取用户详细信息 接口文档 Usercontroller类中编写方法接口 忽略属性返回 优化代码ThreadLocal 更新用户基本信…...

推荐算法顶会论文博客笔记合集

小小挖掘机学习笔记 https://mp.weixin.qq.com/s/rp2xXueEyT8IKvTr2Qss3A 推荐系统学习笔记 https://blog.csdn.net/wuzhongqiang/category_10128687.html SIGIR SIGIR 2022 | 推荐系统相关论文分类整理:8.74 https://mp.weixin.qq.com/s/vH0qJ-jGHL7s5wSn7Oy…...

DRM/RESP无法连接linux上redis的原因

问题一: redis.conf配置文件 进入到自己的redis软件目录 vim redis.conf 将bind 127.0.0.1 : 1 注释掉,改成bind 0.0.0.0,让远程所有ip都可以访问 将daemonize yes 守护进程,修改后可在后台运行 protected-mod…...

vim怎么选中多行后在头部插入#(随手记)

方法1 进入可视行模式: 按下 V(大写 V),选中整行,包括行尾空白字符。使用 v(小写 v),然后移动光标选择从行中间开始的多行。 插入 #: 选中多行后,使用 I&…...

Objective-C的对象复制与拷贝选项

对象复制与拷贝 文章目录 对象复制与拷贝copy与mutablecopycopy与mutablecopy的简介示例:不可变对象的复制可变对象的复制 NSCopying和NSMutableCopying协议深复刻和浅复刻浅拷贝(Shallow Copy):深拷贝(Deep Copy&…...

HTML5 中的离线缓存机制,即应用缓存(Application Cache 或 AppCache)已被废弃并正在被逐步移除

HTML5 中的离线缓存机制,即应用缓存(Application Cache 或 AppCache)已被废弃并正在被逐步移除。这是因为应用缓存存在一些设计上的缺陷和限制,导致它在实际应用中经常出现问题。 取而代之的是一种更强大、更灵活的技术——Servi…...

vue3+ant design实现表格数据导出Excel

提示:实现表格数据导出Excel 文章目录 前言 一、安装ant design? 二、引用ant design 1.搭建框架 2.获取表格数据 三、封装导出表格的代码 四、导出 1.获取导出地址 2.在下载导出事件中添加导出代码 五、全部代码 前言 今天终于有时间来更新文章了,最近公司项目比较紧…...

VBA_NZ系列工具NZ06:VBA创建PDF文件说明

我的教程一共九套及VBA汉英手册一部,分为初级、中级、高级三大部分。是对VBA的系统讲解,从简单的入门,到数据库,到字典,到高级的网抓及类的应用。大家在学习的过程中可能会存在困惑,这么多知识点该如何组织…...

Git === Git概述 Git安装

第1章 Git概述 Git是一个免费的、开源的分布式版本控制系统,可以快速高效地处理从小型到大型的各种项目。 Git易于学习,占地面积小,性能极快。 它具有廉价的本地库,方便的暂存区域和多个工作流分支等特性。其性能优于Subversion…...

Linux diff命令(比较两个文件或目录的内容差异)

文章目录 Linux diff 命令详解教程基本用法比较文件输出解释 递归比较(-r)示例代码 控制输出格式统一格式(-u)上下文格式(-c) 高级选项忽略所有空白差异(-w)仅报告文件是否不同 Linu…...

从传统到现代:水表的远程抄表革命

1.引言:技术驱动的转型 在过去的几十年里,我们的生活方式被科技的快速发展深深影响,其中就包括了公用设施的管理方式。传统水表的远程抄表系统就是这样一个例子,它将老旧的手动抄表模式转变为高效、精确的自动化系统。 2.传统水…...

视频怎么打水印?6个软件教你快速进行视频水印制作

视频怎么打水印?6个软件教你快速进行视频水印制作 添加水印是保护视频版权、提升视频专业性的重要手段之一。以下是六款软件,它们能够帮助你快速进行视频水印制作,让你的视频更具个性和专业性: 1.迅捷视频剪辑软件:…...

UCI心脏病数据集实战:用XGBoost构建预测模型的全流程指南(附特征重要性分析)

UCI心脏病数据集实战:用XGBoost构建预测模型的全流程指南(附特征重要性分析) 医疗数据科学正在重塑现代医学诊断方式。当我在克利夫兰诊所实习期间,亲眼见证了机器学习模型如何辅助医生识别高风险心脏病患者。本文将带您完整复现这…...

MySQL 事务与并发控制:从日志底层到 MVCC 哲学

MySQL 事务与并发控制:从日志底层到 MVCC 哲学 文章目录 MySQL 事务与并发控制:从日志底层到 MVCC 哲学📚 课程大纲规划 📖 第一讲:基础——事务概念与隔离级别1. 🎭 并发带来的三大“幽灵”👻 …...

SEED数据集之外:脑电情感识别还有哪些开源数据集值得一试?

SEED数据集之外:脑电情感识别领域五大开源数据集深度评测 当我在实验室第一次尝试构建情感识别模型时,和大多数初学者一样,首先接触到的就是SEED数据集。但随着研究的深入,我逐渐发现这个领域远比想象中丰富——不同诱发范式、采集…...

SGLang-v0.5.6优化升级:多GPU协同,推理性能大幅提升

SGLang-v0.5.6优化升级:多GPU协同,推理性能大幅提升 1. 引言 在当今大模型应用日益普及的背景下,推理性能优化成为开发者面临的核心挑战之一。SGLang-v0.5.6作为结构化生成语言框架的最新版本,带来了多项关键性改进,…...

Geoserver空间查询全解析:从基础bbox到高级CQL_FILTER的完整指南

Geoserver空间查询全解析:从基础bbox到高级CQL_FILTER的完整指南 当你面对海量地理空间数据时,如何快速准确地提取所需信息?Geoserver作为开源地理信息系统(GIS)的中枢神经,其强大的空间查询能力往往被开发…...

指挥OpenClaw抓取数据折腾了一夜,我终于想到了邪修玩法

这段时间玩小龙虾玩得真上头,突然想起之前一直想要统计公众号的数据。 这工作交给小龙虾妥妥能胜任啊!但是吧……实际上执行出来的结果却不是这样的。 因为小白本地使用的是OpenClawAtomgit的方案,Atomgit主打一个不费一分钱,免…...

Monaco-Editor插件使用小坑

无法通过鼠标进行选中文本<div id"monacoEditor" class"monacoEditor"></div>外层添加了splinter拖拽组件&#xff0c;导致mousemove事件被拦截&#xff0c;给monaco-editor添加css&#xff1a;pointer-events&#xff1a;auto.monacoEditor .…...

告别水印烦恼!3步轻松去水印,新手秒上手。

找到心仪的图片有水印、做设计好不容易找到的素材有水印、下载好看的壁纸有水印&#xff0c;遇到的好图全被水印扫兴&#xff1f;PS去水印&#xff0c;操作复杂&#xff0c;学习成本高&#xff0c;浪费时间&#xff1b;用专业去水印工具&#xff0c;收费昂贵&#xff0c;还有广…...

STM32F407ZGT6最小系统:从原理图到PCB的实战设计解析

1. STM32F407ZGT6最小系统设计入门 第一次接触STM32F407ZGT6最小系统设计时&#xff0c;我也被各种专业术语和复杂的电路图搞得晕头转向。但经过几个项目的实战后&#xff0c;我发现只要掌握几个关键模块&#xff0c;设计一个稳定可靠的最小系统其实并不难。STM32F407ZGT6是STM…...

FRCRN处理长音频文件实战:切片、批处理与结果合并

FRCRN处理长音频文件实战&#xff1a;切片、批处理与结果合并 你是不是遇到过这样的问题&#xff1f;手头有一段长达数小时的会议录音、访谈素材或者播客音频&#xff0c;背景噪音让人头疼&#xff0c;想用FRCRN这样的降噪模型处理一下&#xff0c;结果发现模型一次只能处理几…...