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

在这里插入图片描述

文章目录

  • 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. 微服务架构 在这个电子商务平台中,你可能会使用微服务架构来组织和管理这些不同的功能模块。每个功能模块都可以作为一个独立的微服务,具有自己的数据存储、业务逻辑和用户界面。例如,你可以有一个订单管理微服务、一个用户认证微服务和一个商品搜索微服务。每个微服务都可以独立部署、扩展和更新,从而实现灵活性和敏捷性。

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

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Unity 性能优化之光照优化(七)

提示:仅供参考,有误之处,麻烦大佬指出,不胜感激! 文章目录 前言一、测试目的一、实时光源是什么?二、开始测试1.场景中只有一个光照的数值情况2.添加4个点光源后4.结果 总结 前言 实时光源数量越多&#x…

C++类细节,面试题02

文章目录 2. 虚函数vs纯虚函数3. 重写vs重载vs隐藏3.1. 为什么C可以重载? 4. 类变量vs实例变量5. 类方法及其特点6. 空类vs空结构体6.1. 八个默认函数:6.2. 为什么空类占用1字节 7. const作用7.1 指针常量vs常量指针vs常量指针常量 8. 接口vs抽象类9. 浅…

CSS选择器、字体文本属性、三大特性、盒子模型等

目录 导入css简介HTML的局限性CSS-网页美化CSS语法规范CSS代码风格 选择器基础选择器复合选择器 CSS字体属性字体系列font-family字体大小font-size字体粗细font-weight文字样式font-style字体复合属性font CSS文本属性文本颜色color对齐文本text-align装饰文本text-decoration…

Hive数据模型

Hive数据模型 1. 表(Table): 表是数据库中的基本组成单位,用于存储数据。它由一系列的行和列组成,每行代表一个记录,每列代表一种属性或字段。创建表时,你需要定义列的数据类型、约束和索引等信…

水电站LCU屏技术参数,应用案例解析

项目咨询请点击:设备自动化技术商务咨询 水电站LCU屏简介: 水电站LCU屏一般布置在水电站设备附近,对电站设备的运行工况进行实时监视和控制,是电站计算机监控系统的较底层控制部分。水电站一般会配置一个公用LCU屏柜,…

linux学习笔记——硬盘原理以及linux中的sector与block

在计算机硬盘中,最小的存储单位叫做扇区sector,0.5kb,多个连续扇区组合在一起形成了块block,最小的块包含8个扇区,4kb 我们可以在linux中印证 创建一个新的文件2.txt,查看文件大小为0k 在文件中添加字符后…

2022——蓝桥杯十三届2022国赛大学B组真题

问题分析 看到这个问题的同学很容易想到用十层循环暴力计算&#xff0c;反正是道填空题&#xff0c;一直算总能算得出来的&#xff0c;还有些同学可能觉得十层循环太恐怖了&#xff0c;写成回溯更简洁一点。像下面这样 #include <bits/stdc.h> using namespace std; in…

大厂Java面试题:MyBatis是如何进行分页的?分页插件的实现原理是什么?

大家好&#xff0c;我是王有志。 今天给大家带来的是一道来自京东的关于 MyBatis 实现分页功能的面试题&#xff1a;MyBatis是如何进行分页的&#xff1f;分页插件的实现原理是什么&#xff1f;通常&#xff0c;分页的方式可以分为两种&#xff1a; 逻辑&#xff08;内存&…

PON网络和HFC网络

目录 1.概念 2.分类 3.重点 1.概念 PON PON是一种典型的无源光纤网络&#xff0c;是一种点到多点的无源光纤接入技术。 是指 (光配线网中) 不含有任何电子器件及电子电源&#xff0c;ODN全部由光分路器 (Splitter) 等无源器件组成&#xff0c;不需要贵重的有源电子设备。一个…

Java | Leetcode Java题解之第73题矩阵置零

题目&#xff1a; 题解&#xff1a; class Solution {public void setZeroes(int[][] matrix) {int m matrix.length, n matrix[0].length;boolean flagCol0 false;for (int i 0; i < m; i) {if (matrix[i][0] 0) {flagCol0 true;}for (int j 1; j < n; j) {if (…

【1小时掌握速通深度学习面试8】生成模型-中

目录 28.DBN与DBM 有什么区别? 29.VAE如何控制生成图像的类别? 30.如何修改VAE的损失函数&#xff0c;使得隐藏层的编码是相互解耦的? 31.自回归方法如何应用在生成模型上? 32.原始 VAE存在哪些问题? 有哪些改进方式? 33.如何将VAE与GAN 进行结合&#xff1f; 34.…

【LeetCode】环形队列实现

目录 前言1. 环形队列概念2. 循环队列实现设计3. 功能实现3.1 定义3.2 初始化3.3 判断队列是否为空3.4 判断队列是否为满3.5 入栈3.6 出栈3.7 获取队头数据3.8 获取队尾数据3.9 销毁 4. 总结5. 完整通过代码 前言 之前我们学习环形链表相关问题&#xff0c;现在我们来看看环形…

抖音爆火的QQ价格评估前端源码

最近抖音很火直播给别人测qq价值多少&#xff0c;这个源码只有前端&#xff0c; 包含激活码验证页&#xff0c;评估页 源码免费下载地址抄笔记 (chaobiji.cn)

流畅的python-学习笔记_符合python风格的对象

对象表示形式 查看对象说明&#xff0c;可以通过__repr__和__str__方法&#xff0c;前者主要用于开发者&#xff0c;后者主要用于用户&#xff0c;这两个方法分别对内置函数repr和str函数提供支持 向量类 备选构造方法 classmethod和staticmethod staticmethod用的不是特别…

力扣每日一练(螺旋矩阵)

54. 螺旋矩阵 - 力扣&#xff08;LeetCode&#xff09; 给你一个 m 行 n 列的矩阵 matrix &#xff0c;请按照 顺时针螺旋顺序 &#xff0c;返回矩阵中的所有元素。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,2,3],[4,5,6],[7,8,9]] 输出&#xff1a;[1,2,3,6,9,8,7,4,…

数据库提权

1.此时实验需要用到的软件&#xff1a; &#xff08;1&#xff09;phpStudy该程序包集成最新的ApachePHPMySQL phpMyAdminZendOptimizer,一次性安装,无须配置即可使用,是非常方便、好用的PHP调试环境.该程序不仅包括PHP调试环境,还包括了开发工具、开发手册等.总之学习PHP只需…

STM32——TIMER(定时器)篇

技术笔记&#xff01; 1. 定时器概述&#xff08;了解&#xff09; 1.1 软件定时器原理 使用纯软件&#xff08;CPU死等&#xff09;的方式实现定时&#xff08;延时&#xff09;功能 缺点&#xff1a;1. 延时不准确 2. CPU死等。 1.2 定时器定时原理 1.…

在Codelab对llama3做Lora Fine tune微调

Unsloth 高效微调大模型的工具&#xff0c;通过Unsloth微调Llama3, Mistral, Gemma 速度提升2-5倍&#xff0c;内存减少70%&#xff01; Codelab 创建一个jupyter notebook 选择 T4 GPU 安装Fine tune 相关的lib %%capture import torch major_version, minor_version torch…

等保测评—Linux-CentOS标准范例截图

密码输入错误无法登录 用户账户情况包含root、guanli、shenji 查看审计用户权限 身份鉴别&#xff1a; cat /etc/passwd&#xff0c;核查用户名和 UID&#xff0c;是否存在同样的用户名和 UID cat /etc/shadow&#xff0c;查看文件中各用户名状态 &#xff0c; 核查密码一栏为…

day1Qt作业

#include "mywidget.h"MyWidget::MyWidget(QWidget *parent): QWidget(parent) {this->resize(540,415);//窗口大小this->setFixedSize(540,415);//固定窗口大小this->setWindowTitle("QQ");//标题this->setWindowIcon(QIcon("E:\\hqyjap…