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

文章目录
- 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定义
- 分布式系统是由多台计算机或设备共同工作,通过网络进行通信和协作,以实现一个统一的目标或完成一个共同的任务。
- 想象一下,如果把一个任务分解成多个小任务,然后由不同的人分工合作完成,这就像是分布式系统的工作方式。
- 分布式系统就是将一个大任务分解成多个小任务,由多台设备共同协作完成,以提高系统的性能和可靠性,这就好像是一个由多个人组成的团队一起完成一项任务一样。
5.1.2例子
- 组织一个大型派对。如果你自己负责所有准备工作,比如购买食物、装饰场地、发送邀请等,可能会非常辛苦而且效率低下。但如果你将任务分配给一些朋友,比如让其中一人负责食物购买、另一人负责场地布置、再另一人负责发送邀请,那么整个派对的准备工作就会变得更加高效和顺利。这就好像是一个分布式系统,各个部分(人)通过协作完成了一个共同的目标(派对)。
- 在计算机领域,分布式系统也是类似的道理。它将任务分配给多台计算机或设备,每台设备完成一部分工作,然后将结果汇总或交换信息,最终完成整个任务。这种分工合作的方式能够提高系统的性能、可靠性和扩展性,使得系统能够应对更大的负载和更复杂的任务。
5.1.3优缺点
(1)优点
-
高可用性: 分布式系统通过将数据和计算分布在多个节点上,可以提高系统的可用性。即使某个节点或部分节点发生故障,系统仍然可以继续运行,从而保证了系统的可靠性和持续可用性。
-
扩展性: 随着业务的增长和用户规模的扩大,单一节点往往无法满足系统的需求。分布式系统可以通过增加节点或者扩展集群规模来实现水平扩展,从而满足系统的性能需求。
-
容错性: 在分布式系统中,由于存在多个节点,即使部分节点发生故障,系统仍然可以继续运行。通过数据的冗余备份和故障转移等机制,分布式系统能够提高容错性,减少单点故障对系统造成的影响。
-
地理分布: 分布式系统允许将数据和计算分布在不同地理位置的节点上,从而实现数据的就近访问和处理,提高数据传输的效率和响应速度。
(2)缺点
凡事具有两面性,分布式服务带来很多好处的同时肯定还会带来麻烦,主要从 3 方面考虑。
- 分布式服务依赖网络
服务器间通讯依赖网络,不可靠网络包括网络延时,丢包、中断、异步,一个完整的服务请求依赖一连串服务调用,任意一个服务节点网络出现问题,都可能造成本次请求失败。 - 维护成本高
传统单体式服务只需要维护一个站点就可以。
分布式服务系统被拆分成若干个小服务,服务从 1 变为几十个上百个服务后,增加运维成本。 - 一致性,可用性,分区容错性无法同时满足
这个是最主要的,这三种特性就是平时说的 CAP 定理,在分布式系统中,这三种特性最多只能满足两种,无法同时满足,需要根据实际情况去调整牺牲掉其中哪个。
5.2何为分布式锁?
5.2.1定义
- 分布式锁是一种用于在分布式系统中实现互斥访问的机制。
- 它允许多个进程或线程在不同的节点上同步访问共享资源,确保在任何时刻只有一个进程或线程可以持有锁,并且能够安全地释放锁,以避免资源竞争和数据不一致的问题。
5.2.2必要性
- 数据一致性:在分布式系统中,多个节点可能同时访问共享资源,如果不加控制地进行访问,可能会导致数据不一致的问题,例如脏数据或冲突写入。使用分布式锁可以确保在任何时刻只有一个节点可以修改共享资源,从而保证数据的一致性。
- 避免竞态条件:在并发访问的情况下,如果没有适当的锁机制,可能会出现竞态条件,导致不确定的执行结果或错误的行为。分布式锁可以有效地避免这种情况的发生,确保对共享资源的安全访问。
- 防止资源过度消耗:在高并发环境下,如果没有锁机制限制对某些资源的访问,可能会导致资源过度消耗或系统崩溃。通过分布式锁可以对资源的访问进行合理的限制和调度,从而保护系统的稳定性和可靠性。
5.3区分分布式和微服务
分布式系统是由多台计算机或设备共同工作,通过网络进行通信和协作,以实现一个统一的目标或完成一个共同的任务的系统。它强调的是系统内部的组织结构和通信方式,以及如何将任务分解并分配给多个计算机或设备来提高系统的性能、可靠性和扩展性。分布式系统可以包括分布式存储系统、分布式计算系统、分布式数据库等。
微服务是一种架构风格,将应用程序构建为一组小型、独立部署的服务,每个服务都围绕着特定的业务功能进行设计和构建,并通过轻量级的通信机制(通常是HTTP API)相互通信。微服务架构的核心理念是将大型单体应用程序拆分为多个小型服务,每个服务都可以独立开发、部署和扩展,从而提高开发速度、灵活性和可维护性。
5.3.1区分点
- 范围不同:
- 分布式系统是一种系统架构模式,强调系统内部的组织结构和通信方式;
- 而微服务是一种架构风格,强调将应用程序构建为一组小型、独立部署的服务。
- 关注点不同:
- 分布式系统关注整个系统的组织和通信方式,以提高系统的性能、可靠性和扩展性;
- 微服务关注的是如何将应用程序拆分为小型、独立部署的服务,以提高开发速度、灵活性和可维护性。
- 实现方式不同:
- 分布式系统可以采用各种架构和技术实现,包括分布式计算、分布式存储、分布式数据库等;
- 微服务通常使用轻量级的通信机制(如HTTP API) 来实现服务之间的通信,每个服务可以使用不同的技术栈和编程语言。
5.3.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.迅捷视频剪辑软件:…...
XML Group端口详解
在XML数据映射过程中,经常需要对数据进行分组聚合操作。例如,当处理包含多个物料明细的XML文件时,可能需要将相同物料号的明细归为一组,或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码,增加了开…...
Objective-C常用命名规范总结
【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名(Class Name)2.协议名(Protocol Name)3.方法名(Method Name)4.属性名(Property Name)5.局部变量/实例变量(Local / Instance Variables&…...
最新SpringBoot+SpringCloud+Nacos微服务框架分享
文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的,根据Excel列的需求预估的工时直接打骨折,不要问我为什么,主要…...
DBAPI如何优雅的获取单条数据
API如何优雅的获取单条数据 案例一 对于查询类API,查询的是单条数据,比如根据主键ID查询用户信息,sql如下: select id, name, age from user where id #{id}API默认返回的数据格式是多条的,如下: {&qu…...
《基于Apache Flink的流处理》笔记
思维导图 1-3 章 4-7章 8-11 章 参考资料 源码: https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...
Yolov8 目标检测蒸馏学习记录
yolov8系列模型蒸馏基本流程,代码下载:这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中,**知识蒸馏(Knowledge Distillation)**被广泛应用,作为提升模型…...
GitHub 趋势日报 (2025年06月06日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 590 cognee 551 onlook 399 project-based-learning 348 build-your-own-x 320 ne…...
宇树科技,改名了!
提到国内具身智能和机器人领域的代表企业,那宇树科技(Unitree)必须名列其榜。 最近,宇树科技的一项新变动消息在业界引发了不少关注和讨论,即: 宇树向其合作伙伴发布了一封公司名称变更函称,因…...
jmeter聚合报告中参数详解
sample、average、min、max、90%line、95%line,99%line、Error错误率、吞吐量Thoughput、KB/sec每秒传输的数据量 sample(样本数) 表示测试中发送的请求数量,即测试执行了多少次请求。 单位,以个或者次数表示。 示例:…...
AI语音助手的Python实现
引言 语音助手(如小爱同学、Siri)通过语音识别、自然语言处理(NLP)和语音合成技术,为用户提供直观、高效的交互体验。随着人工智能的普及,Python开发者可以利用开源库和AI模型,快速构建自定义语音助手。本文由浅入深,详细介绍如何使用Python开发AI语音助手,涵盖基础功…...
