分布式理论

news2024/12/27 21:29:07

目录

1.定义

2.关键技术

3.关键问题

4.基本定理

4.1.CAP定理

4.2.BASE定理


1.定义

分布式的本质是一系列计算机集群通过网络共同完成一串连贯的任务。

2.关键技术

分布式主要关注的几个关键点技术是:

  1. 性能
  2. 容错
  3. 通信

性能:

可扩展性,可扩展性指的是当资源扩展时,整个系统能对应得到计算性能和吞吐量的提升。比如使用了负载均衡,1个结点扩展为了3个结点,那么对应的整个系统的计算能力和吞吐量就应该提升为原来的3倍,当然性能堆叠是会有损失的,比如负载均衡扩展后相应的还需要引入一个负载均衡计算的中间层,负载均衡计算以及这个中间层和业务结点的网络通信中损耗掉一部分性能。

所以整个系统应该是向提升为原来性能的3倍这个理想标准靠近,如果远远低于这个理想标准,那么就要排查一下哪里造成了性能的大量损耗,是否出现了问题。

容错:

分布式集群会将一个不常见的问题变得常见,比如1台电脑1年会有3次卡死,那么1个1000台电脑的集群,1天会卡死3台。因此分布式系统的容错能力是很重要的,容错的核心是保证

  • 可用性

    可用性是容错必须保证的核心点,当系统出现异常时要尽量保证系统能继续使用。

  • 可恢复性

    可用性是容错尽量要保证的点,当分布式集群出现了问题,是否还能进行恢复?比如单节点故障,那么这个结点的历史数据是否有保存等这些点都是要考虑的。

    保存数据有两种实现方法:

    • 非易失性存储

      将数据存储在磁盘上,这样即使结点故障,后期修复的时候直接从磁盘上恢复数据即可。使用非易失性的存储是最简单的保存数据的方法。

    • 复制

      让数据在所有结点上进行复制、共享,这样即使是单节点故障,全局仍然是记录有数据的,后期修复的时候去其他节点同步数据即可。复制会存在一个问题,即不同结点间很容易因为一些问题造成状态的不同步。这个问题可以解决,但是解决的难度很大,成本很高。

通信:

目前来说分布式系统中结点的通信都是使用RPC,但是如何实现RPC很多地方是值得考虑的。

通信协议之间各自性能均不相同,应用层是选用速度快但是安全性不高的HTTP、还是选用安全性高但是速度不快的HTTPS;传输层是选用可靠但速度慢的TCP,还是选用速度快但是不可靠的UDP,等等......

3.关键问题

一致性问题:

一致性其实是容错带来的一个问题,为了容错一个数据往往存在多份,放在不同的结点,一个更新操作后面往往伴随着多个同步操作,来达到数据的一致性。这也就意味着分布式系统中有很多时间节点间各自的数据很可能往往处于不同版本,不具有一致性。如何保证数据的一致性也是分布式系统经常考虑的问题。

一致性分为两种:

  1. 强一致性
  2. 弱一致性

强一致性:

系统对外提供服务时要时时刻刻对外呈现出一致性,也就是说当系统内部在进行同步操作时系统要拒绝对外提供服务,直到系统内部各结点间的数据达到一致性。

弱一致性:

弱一致性,也叫最终一致性,系统对外提供服务时不要求时时刻刻对外呈现出一致性,反正只要最后提供的结果是准确的就行。

4.基本定理

4.1.CAP定理

CAP,是高可用性、强一致性、分区容错性这三种特性的缩写。。

高可用性:

不管访问的服务是否成功都要给出响应,

强一致性:

系统中数据必须是一致的,不能出现脏数据,比如已经修改了一个值,再去访问系统的时候拿到的是修改以前的值。

分区容错性:

分布式系统一般会划分成多个子网,子网之间可能由于网络故障等原因造成通信中断,因此必须保证系统在任意情况下分区能单独且正常的工作。这就意味着每个分区必须有自己的数据,每份数据都需要在每个分区单独存放。

三者不可兼得,只能同时满足其中两种。

 

满足高可用性、分区容错性就满足不了强一致性,因为分区容错要求每个分区内部都存一份数据,高可用性要求立即响应,而强一致性在各个分区之间进行数据同步这段时间内会对外拒绝服务。

满足高可用性、强一致性分就满足不了分区容错性,因为高可用性要求立即响应,强一致性要求系统实时数据正确,就不可能在各个分区内部存一份数据,只能是全局唯一一份数据,这样才能保证数据实时的准确。

满足分区容错性、强一致性就满足不了高可用性,因为分区容错要求每个分区内都存有一份数据,强一致性要求系统对外提供服务时必须数据是准确的,也就意味着在进行全局数据交换、进行同步的时间段对外是拒绝服务的。

4.2.BASE定理

BASE是三个单词的缩写:

  • basically available(基本可用)

  • Soft state(软状态)

  • Eventually consistent(最终一致性)

BASE 理论是对 CAP 中的一致性和可用性进行一个权衡的结果,理论的核心思想就是:我们无法做到强一致,但每个应用都可以根据自身的业务特点,采用适当的方式来使系统达到最终一致性。

也就是说分布式系统还是在努力的往三者兼顾上靠拢,具备基本的分区容错性后还是希望一致性和高可用性都具备一些,也就是保证最终一致性的情况下系统基本可用。达到这个目的就需要系统具有多种状态,进行数据同步保证最终一致性的时候对外的可用性不高,不用进行数据同步的时候对外呈现出高可用性。

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

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

相关文章

深度学习入门基础CNN系列——池化(Pooling)和Sigmoid、ReLU激活函数

想要入门深度学习的小伙伴们,可以了解下本博主的其它基础内容: 🏠我的个人主页 🚀深度学习入门基础CNN系列——卷积计算 🌟深度学习入门基础CNN系列——填充(padding)与步幅(stride&…

Acwing - 算法基础课 - 笔记(数学知识 · 三)(补)

数学知识(三) 这一小节讲的是高斯消元,组合数。 高斯消元 高斯消元是用来解方程的,通常来说可以在 O(n3)O(n^3)O(n3) 的时间复杂度内,求出包含 n 个未知数的,n个方程的多元线性方程组的解。如下的方程组…

人机界面石油行业应用:一个设备构建石油罐区状态监测系统

一、应用背景 石油罐区是石油石化企业重要的生产设施,负责存储和输送各类油品,而石油罐区状态参数的监控是生产管理的重要部分,不仅可以及时准确地获取现场设备数据,保证罐区的正常运行,还可以防止安全事故的发生。 …

Python如何解决“快手滑块验证码”(4)

前言 本文是该专栏的第32篇,后面会持续分享python的干货知识,记得关注。 很多时候,我们打开一个页面还没开始进行浏览,就跳出一个滑块验证的图片,需要拖到滑块至缺口处,才可以正常浏览。这对于我们正常人浏览页面来说,几乎没什么难度,但是当我们需要用到脚本去实现的时…

本地服务器如何让外网远程桌面连接?

远程访问是远程办公和服务器管理常用的网络应用场景。那么,当我们需要面对远程目标主机是内网服务器电脑时,在不是同个局域网的跨网环境下,内网可以远程控制电脑吗?答案是可以,使用快解析内网映射方案就能实现将本地服…

MyBatis一级缓存 二级缓存

MyBatis一级缓存 二级缓存什么是缓存?一级缓存一级缓存失效的四种情况二级缓存怎样开启二级缓存使二级缓存失效的情况二级缓存相关配置缓存查询的数据顺序整合第三方缓存EHCache(代替二级缓存)什么是缓存? 这是一个地图软件上的根据城市查询模块,对于那…

Freemarker页面静态化开发

4.5 页面静态化 4.5.1 什么是页面静态化 根据课程发布的操作流程,执行课程发布后要将课程详情信息页面静态化,生成html页面上传至文件系统。 什么是页面静态化? 课程预览功能通过模板引擎技术在页面模板中填充数据,生成html页…

Mybatis Plus轻松上手

Mybatis Plus 今日目标: 了解mybatisplus的特点能够掌握mybatisplus快速入门能够掌握mybatisplus常用注解能够掌握mybatisplus常用的增删改查能够掌握mybatisplus自动代码生成 Mybatis: ✔需要程序员编写sql语句程序员可以干预sql对sql进行调优(优化) MybatisPlu…

强化学习笔记:基于价值的学习方法之价值估计(python实现)

目录 1. 前言 2. 数学原理 3. 代码实现 3.1 游戏设定 3.2 class State 3.3 class Action 3.4 Class Agent 3.5 Class Environment 4. 仿真结果及其分析 4.1 play() 4.2 value_evaluation_all_states(grid, max_steps) 4.3 value_evaluation_one_state(grid, s) 4.4…

ZYNQ FPGA嵌入式开发 - 小梅哥(二)

创建工程打开Xilinx SDK创建工程Next 创建Empty Application添加文件编写代码参考文档 UG585 Zynq 7000 Technical Reference Manual寄存器说明 Appx.B: Registe Detial查看帮助文档Import Examples跨平台使用:头文件:unistd.h 每个平台都会提供sleep() …

论文阅读笔记:Attention is All You Need

论文标题:Attention is All You Need 目录 论文标题:Attention is All You Need 1.摘要 2.前言 3.模型结构 自注意力机制 多头自注意力机制 注意力机制在Transformer中的应用 1.摘要 过去最优的模型是带有attention连接的encoder-decoder模型&…

string的应用和模拟实现(上)

目录 string的应用 insert插入元素 erase删除元素 assign赋值: replace代替函数的一部分 find:从string对象中找元素 c_str:得到c类型的字符串的指针 substr:取部分元素构建成新的string对象 rfind find_first_of:从string查找元素 stri…

JVM【类的加载过程(类的生命周期)详解】

概述 在 Java 中数据类型分为基本数据类型和引用数据类型。基本数据类型由虚拟机预先定义,引用数据类型则需要进行类的加载。 按照 Java 虚拟机规范,从 class 文件到加载到内存中的类,到类卸载出内存为止,它的整个生命周期包括如…

软件测试之python学习

1、pycharm的常用配置 1.1修改主题配置 1、点击菜单file,选择settings选项2、选择editor,点击color scheme配色方案3、在右侧选择对应的主题配置1.2修改背景颜色 1、点击菜单file,选择settings选项2、选择appearance,点击Theme 1.3调整字体大小 1、点…

基于K8S+eureka的java应用快速上下线的WEB平台

刚进公司时,由于历史原因,应用发布通过:发布新版(新老并存)->下线老版->删除老版的方式,每次通过手工处理,蛋疼(不方便且高风险)。于是马上写了比较直观的脚本方案…

关于java移位运算的一点讨论

框架乱飞的年代,时常还得往框架源码里看,对内在原理没点理解,人家就会认为你不太行。平时开发你可能没咋用过位移运算,但往源码里一看,就时常能看到它。我也是看着看着,突然仔细一琢磨,又不由得…

C++缺省参数与函数重载

目录 一.缺省参数 1. 基本概念 2.多参函数中使用缺省参数的情形分类 二.函数重载 (1)形参类型不同构成的重载 (2)形参个数不同构成的重载 (3)形参类型顺序不同构成的重载 函数重载的注意事项: 三.C支持函数重载的底层原理--函数名修饰 编译器生成可执行程序…

选购自主可控全国产交换机时, IP防护等级多少比较合适?

本期武汉海翎光电的小编要为大家介绍的是《选购自主可控全国产交换机时IP防护等级多少比较合适?》首先我们要了解自主可控全国产交换机的工作场景,加固交换机会比工业交换机的IP等级更高一些,而工业交换机又会比普通交换机的IP等级要求高一些…

Unity 工具 之 Jenkins 打包自动化工具的下载/安装/基本操作/任务创建执行/Unity打包自动化简单搭建的相关整理

Unity 工具 之 Jenkins 打包自动化工具的下载/安装/基本操作/任务创建执行/Unity打包自动化简单搭建的相关整理 目录 Unity 工具 之 Jenkins 打包自动化工具的下载/安装/基本操作/任务创建执行/Unity打包自动化简单搭建的相关整理 一、简单介绍 二、Jenkins 的下载 三、Jenk…

代码随想录--链表相关题目整理

代码随想录–链表相关题目整理 1. LeetCode203 移除链表中指定元素 给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val val 的节点,并返回 新的头节点 。 示例 1: 输入:head [1,2,6,3,4,5,6], val…