推荐:分布式理论系列

分布式系统理论概述 在具体的工程项目中,一个节点往往是一个操作系统上的进程。在本文的模型中,认为节点是一个完整的、不可分的整体,如果某个程序进程实际上由若干相对独立部分构成,则在模型中可以将一个进程划分为多个节点。机器宕机:机器宕机是最常见的异常之一。在大型集群中每日宕机发生的概率为千分之一左右,在实践中,一台宕机的机器恢复的时间通常认为是24 小时,一般需要人工介入重启机器。网络异常:消息丢失,两片节点之间彼此完全无法通信,即出现了“网络分化”;消息乱序,有一定的概率不是按照发送时的顺序依次到达目的节点,考虑使用序列号等机制 阅读详情

序

本文主要讲述分布式系统开发的一些相关理论基础。

一、ACID

事务的四个特征:

1、Atomic原子性

事务必须是一个原子的操作序列单元,事务中包含的各项操作在一次执行过程中,要么全部执行成功,要么全部不执行,任何一项失败,整个事务回滚,只有全部都执行成功,整个事务才算成功。

2、Consistency一致性

事务的执行不能破坏数据库数据的完整性和一致性,事务在执行之前和之后,数据库都必须处于一致性状态。

3、Isolation隔离性

在并发环境中,并发的事务是相互隔离的,一个事务的执行不能被其他事务干扰。即不同的事务并发操纵相同的数据时,每个事务都有各自完整的数据空间,即一个事务内部的操作及使用的数据对其他并发事务是隔离的,并发执行的各个事务之间不能相互干扰。

SQL中的4个事务隔离级别:
(1)读未提交

允许脏读。如果一个事务正在处理某一数据,并对其进行了更新,但同时尚未完成事务,因此事务没有提交,与此同时,允许另一个事务也能够访问该数据。例如A将变量n从0累加到10才提交事务,此时B可能读到n变量从0到10之间的所有中间值。

(2)读已提交

允许不可重复读。只允许读到已经提交的数据。即事务A在将n从0累加到10的过程中,B无法看到n的中间值,之中只能看到10。同时有事务C进行从10到20的累加,此时B在同一个事务内再次读时,读到的是20。

(3)可重复读

"不可重复读" 是指在一个事务内,多次读同一数据。在这个事务还没有结束时,另外一个事务也访问该同一数据。那么,在第一个事务中的两次读数据之间,由于第二个事务的修改,那么第一个事务两次读到的的数据可能是不一样的。这样就发生了在一个事务内两次读到的数据是不一样的,因此称为是不可重复读。例如,一个编辑人员两次读取同一文档,但在两次读取之间,作者重写了该文档。当编辑人员第二次读取文档时,文档已更改。原始读取不可重复。如果只有在作者全部完成编写后编辑人员才可以读取文档,则可以避免该问题.要避免这种情况,通常可以用 set tran isolation level repeatable read 来设置隔离级别,这样事务A 在两次读取表T中的数据时,事务B如果企图更改表T中的数据(细节到事务A读取数据)时,就会被阻塞,知道事务A提交! 这样就保证了,事务A两次读取的数据的一致性。
幻读是指当事务不是独立执行时发生的一种现象,例如第一个事务对一个表中的数据进行了修改,这种修改涉及到表中的全部数据行,同时,第二个事务向表中插入了至少一行新数据,那么,第一个事务的用户再次检索时,就会发现表中还有没有修改的数据行,就好象发生了幻觉一样。

(4)串行化

 最严格的事务,要求所有事务被串行执行,不能并发执行。

如果不对事务进行并发控制,我们看看数据库并发操作是会有那些异常情形

  • (1)一类丢失更新:两个事物读同一数据,一个修改字段1,一个修改字段2,后提交的恢复了先提交修改的字段。

  • (2)二类丢失更新:两个事物读同一数据,都修改同一字段,后提交的覆盖了先提交的修改。

  • (3)脏读:读到了未提交的值,万一该事物回滚,则产生脏读。

  • (4)不可重复读:两个查询之间,被另外一个事务修改了数据的内容,产生内容的不一致。

  • (5)幻读:两个查询之间,被另外一个事务插入或删除了记录,产生结果集的不一致。

4、Durability持久性

一个事务一旦提交,它对数据库中对应数据的状态变更就应该是永久性的,即使发生系统崩溃或机器宕机,只要数据库能够重新启动,那么一定能够将其恢复到事务成功结束时的状态。

二、CAP定理

一个分布式系统不可能同时满足一致性Consistency、可用性Availability、分区容错性Partition tolerance这三个基本需求,最多只能同时满足其中的两项。

1、一致性

分布式环境中,一致性是指多个副本之间能否保持一致的特性。在一致性的需求下,当一个系统在数据一致的状态下执行更新操作后,应该保证系统的数据仍然处理一致的状态。

2、可用性

系统提供的服务必须一直处于可用的状态,对于用户的每一个操作请求总是能够在有限的时间内返回结果。

  • (1)有限时间内
    对于用户的一个操作请求,系统必须能够在指定的时间(响应时间)内返回对应的处理结果,如果超过了这个时间范围,那么系统就被认为是不可用的。即这个响应时间必须在一个合理的值内,不让用户感到失望。

  • (2)返回正常结果
    要求系统在完成对用户请求的处理后,返回一个正常的响应结果。正常的响应结果通常能够明确地反映出对请求的处理结果,即成功或失败,而不是一个让用户感到困惑的返回结果。比如返回一个系统错误如OutOfMemory,则认为系统是不可用的。

3、分区容忍性

当集群中的某些结点无法联系时仍能正常提供服务,除非是整个网络环境都发生了故障。

网络分区,是指分布式系统中,不同的节点分布在不同的子网络(机房/异地网络)中,由于一些特殊的原因导致这些子网络之间出现网络不连通的状态,但各个子网络的内部网络是正常的,从而导致整个系统的网络环境被切分成了若干孤立的区域。组成一个分布式系统的每个节点的加入与退出都可以看做是一个特殊的网络分区。

一个分布式系统里面,节点组成的网络本来应该是连通的。然而可能因为一些故障,使得有些节点之间不连通了,整个网络就分成了几块区域。数据就散布在了这些不连通的区域中。这就叫分区。

当你一个数据项只在一个节点中保存,那么分区出现后,和这个节点不连通的部分就访问不到这个数据了,这时分区就是无法容忍的。提高分区容忍性的办法就是一个数据项复制到多个节点上,那么出现分区之后,这一数据项就可能分布到各个区里。容忍性就提高了。然而,要把数据复制到多个节点,就会带来一致性的问题,就是多个节点上面的数据可能是不一致的。要保证一致,每次写操作就都要等待全部节点写成功,而这等待又会带来可用性的问题。总的来说就是,数据存在的节点越多,分区容忍性越高,但要复制更新的数据就越多,一致性就越难保证。为了保证一致性,更新所有节点数据所需要的时间就越长,可用性就会降低。


三、CAP的应用

1、放弃P

放弃分区容忍性的话,则放弃了分布式,放弃了系统的可扩展性。比如典型的传统的数据库,比如非分布式数据库:如innodb引擎的Mysql。

2、放弃A

放弃可用性的话,则在遇到网络分区或其他故障时,受影响的服务需要等待一定的时间,在此期间无法对外提供正常的服务,即不可用。

比如分布式数据库,如ndb_cluster引擎的Mysql。

3、放弃C

放弃一致性的话(这里指强一致),则系统无法保证数据保持实时的一致性,在数据达到最终一致性时,存在某个时间窗口,在该时间窗口内,数据是不一致的。

注:对于分布式系统来说,P是不能放弃的,因此架构师通常是在可用性和一致性之间权衡:即CP或者AP。

四、BASE定理

Basically Available(基本可用)、Soft state(软状态)、Eventually consistent(最终一致性),基于CAP定理演化而来,核心思想是即使无法做到强一致性,但每个应用都可以根据自身业务特点,采用适当的方式来使系统达到最终一致性。

1、Basically Available(基本可用)

基本可用是指分布式系统在出现不可预知的故障的时候,允许损失部分可用性,但不等于系统不可用。

(1)响应时间上的损失

当出现故障时,响应时间增加

(2)功能上的损失

当流量高峰期时,屏蔽一些功能的使用以保证系统稳定性(服务降级)

2、Soft state(软状态)

与硬状态相对,即是指允许系统中的数据存在中间状态,并认为该中间状态的存在不会影响系统的整体可用性,即允许系统在不同节点的数据副本之间进行数据同步的过程存在延时。

3、Eventually consistent(最终一致性)

强调系统中所有的数据副本,在经过一段时间的同步后,最终能够达到一个一致的状态。其本质是需要系统保证最终数据能够达到一致,而不需要实时保证系统数据的强一致性。

最终一致性可分为如下几种:
  • (1)因果一致性(Causal consistency)
    即进程A在更新完数据后通知进程B,那么之后进程B对该项数据的范围都是进程A更新后的最新值。

  • (2)读己之所写(Read your writes)
    进程A更新一项数据后,它自己总是能访问到自己更新过的最新值。

  • (3)会话一致性(Session consistency)
    将数据一致性框定在会话当中,在一个会话当中实现读己之所写的一致性。即执行更新后,客户端在同一个会话中始终能读到该项数据的最新值

  • (4)单调读一致性(Monotonic read consistency)
    如果一个进程从系统中读取出一个数据项的某个值后,那么系统对于该进程后续的任何数据访问都不应该返回更旧的值。

  • (5)单调写一致性(Monotoic write consistency)
    一个系统需要保证来自同一个进程的写操作被顺序执行。

BASE定理是提出通过牺牲一致性来获得可用性,并允许数据在一段时间内是不一致的,但最终达到一致状态。

转至 https://segmentfault.com/a/1190000004468442

分布式深度学习系列 分布式深度学习系列探究分布式深度学习系统的研究现状和应用关键点。1 神经网络的分布式训练介绍主要分为模型并行和数据并行,也可以综合使用。建议使用数据并行,具备更丰富的理论研究空间,模型并行显得更苍白。涉及随机梯度下降(SGD),参数服务器等概念。…细节部分容后再续。参考文献 Distributed Deep Learning [1] Kai Chen and Qiang Huo. Scalable 阅读详情

相关推荐

分布式系统架构系列讲解二(分布式一致性 2):BASE理论

在上一篇 CAP理论 中,我提到分布式系统理论上只能取CP或AP,如果要实现强一致性必然会影响可用性。但是,大多数系统实际上不需要那么强的一致性,而是更关注可用性。比如一个3节点的集群,假设每个节点的可用性为 99.9%,那么整个集群的可用性为 99.7%,也就是说,每个月约宕机 129.6 分钟,这对于很多系统是非常严重的问题,所以生产环境,大多数系统都会采用可用性优先的 AP 模型。 在对大规模分布式系统的实践过程中,eBay 的架构师 Dan Pritchett 提出了BASE理论,其核心思想就是:

吃透Java 503

分布式控制算法——第一部分:基础概念与原理

分布式控制是一种先进的控制策略,在这种策略中,多个控制器分布在系统的不同位置,每个控制器独立负责一个子系统的控制。它们通过网络进行通信和协调,共同实现整个系统的控制目标。与传统的集中式控制相比,分布式控制系统在鲁棒性和扩展性方面具有显著优势,可以有效应对复杂和动态的环境。分布式系统由多个独立的计算单元(节点)组成,这些节点通过网络相互连接,共同完成特定任务。每个节点可以独立运行,但需要通过通信和协调来实现全局目标。

qq_51929160的博客 3241

分布式协同控制算法

分布式协同控制算法,从理论到应用。多智能体协同控制的入门教材。

高级分布式系统-第13讲 分布式控制经典理论

模糊控制是以模糊集理论、模糊语言变量和模糊逻辑推理为基础的一种智能控制方法,它是从行为上模仿人的模糊推理和决策过程的一种智能控制方法。 该方法首先将操作人员或专家经验编成模糊规则,然后将来自传感器的实时信号模糊化,将模糊化后的信号作为模糊规则的输入,完成模糊推理,将推理后得到的输出量反模糊化之后加到执行器上。

weixin_50917576的博客 683

树莓派4B系统安装及SSH远程控制(简单易操作)

​自从2022年4月树莓派官网更新了RaspberryPiImager版本v1.7.2后,便不再支持自行建立ssh文件,并用默认用户名pi和密码raspberry的方式进行远程控制(亲测不行,输密码时一直access denied)。但是该版本软件提供了烧录系统前设置ssh用户及密码功能。本文记录了系统安装和SSH远程操作步骤。........................

机械人的代码路 5789

微信公众号数据采集实战:历史文章、互动数据与评论详情全解析

本文提供了一套完整的微信公众号数据采集实战方案,详细解析了如何通过接口调用获取公众号的历史文章列表、单篇文章的互动数据以及详细的用户评论。文章从环境准备、核心参数解析到分页逻辑、批量处理和异常处理,提供了可运行的Python代码示例,旨在帮助开发者高效、稳定地构建自动化采集工具,用于竞品分析、内容研究和舆情监控。

u5v6w7的博客 1594

一. 分布式技术原理

我们熟悉的 ZooKeeper,就是采用了 CP 一致性,ZooKeeper 是一个分布式的服务框架,主要用来解决分布式集群中应用系统的协调和一致性问题。其核心算法是 Zab,所有设计都是为了一致性。在 CAP 模型中,ZooKeeper 是 CP,这意味着面对网络分区时,为了保持一致性,它是不可用的。关于 Zab 协议,将会在后面的 ZooKeeper 课时中介绍。

zxc_123_789的博客 1598

Halcon —— 图像像素类型与转换

图像类型 就目前工业领域主流的图像处理工具halcon来讲,有以下几张图像类型:‘byte’, ‘complex’, ‘cyclic’, ‘direction’, ‘int1’, ‘int2’, ‘int4’, ‘int8’, ‘real’, ‘uint2’,具体含义如下图所示。相互间的转换可通过convert_image_type算子完成,但盲目转换会导致图像像素值异常。 ‘byte’ 每像素1字节,无符号 值范围: (0到255) ‘int1’ 每像素1字节,有符号 值范围: (-128到127) ‘

baidu_35536188的博客 1万+

一、分布式理论

一、分布式理论 1.分布式架构系统回顾 1.1. 分布式系统概念 分布式系统是一个硬件与软件组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统。 分布式与集群的区别: 集群:多个人在一起做同样的事情。 分布式:多个人在一起做不同的事情。 分布式系统的特点: 分布性 对等性:无主从关系 并发性 缺乏全局时钟 故障总是会发生 1.2. 分布式系统的发展 阿里巴巴发起的"去 IOE"运动 (IOE 指的是 IBM 小型机、Oracle 数据库、EMC 的高端存储)。阿里巴巴

莫安逸无风雪 2149

TASK02【datawhale组队学习】视觉感知与手眼协调,计算机视觉在机器人中应用,手眼标定算法实现,深度估计与3D重建

参考教程AI硬件与机器人技术教程:https://github.com/datawhalechina/ai-hardware-robotics视觉感知与手眼协调,计算机视觉在机器人中应用,手眼标定算法实现,深度估计与3D重建单目深度估计 (Monocular Depth Estimation)DPT 的全称是 Dense Prediction Transformer。

m0_52024881的博客 1191

【华为OD机试真题E卷】514、学生方阵 | 机试真题+思路参考+代码分析(E卷复用)(C++、Java、Py)

【华为OD机试真题E卷】514、学生方阵 | 机试真题+思路参考+代码分析(E卷复用)(C++、Java、Py) 题目描述 学校组织活动,将学生排成一个矩形方阵 请在矩形方阵中找到最大的位置相连的男生数量 这个相连位置在一个直线上,方向可以是水平的,垂直的,成对角线的或者呈反对角线的 注:学生个数不会超过10000

KJ.JK 2492

分布式基本算法和理论(写了部分,后续再补充)

分布式协议和算法 路线 学习 四大基本理论 在学习 分布式协议和算法 四大基本理论 1 拜占庭将军问题 2 CAP 理论 3 ACID 理论 4 BASE 理论 八大分布式协议和算法 1 Paxos 算法 2 Raft 算法 3 一致性 Hash 算法 4 Gossip 协议算法 5 Quorum NWR 算法 6 FBFT 算法 7 POW 算法 8 ZAB 协议 拜占庭将军问题 大家可能听过拜占庭将军问题。它是由莱斯利·兰伯特提出的点对点通信中的基本问题 拜占庭解法1 具体问题和结果推到参见 文章

其实我也没有太多期盼,毕竟一生太短,少有圆满 2647

【数据结构】期末考试复习(考点+例题)

1.线性表定义及其存储实现:顺序表和链接表,优缺点分析(顺序存储可随 机访问,链式存储可灵活利用空间),相关操作的时间复杂度。 2.链表的插入删除操作 3.两种特殊的线性表及其应用:栈、队列 4.栈、队列上的(插入/删除)操作及其特点 5.循环队列满和空的条件 6.能够定义线性表、栈、队列的数据存储结构,能够实现相关操作的算法并 分析时间复杂度(例如插入、删除及其它应用等) 7.理解线性结构的应用( 如根据要求能灵活定义线性表结构,能根据线性表 的插入、删除操作解决实际问题) 二叉树基本概念与性质(高

Molly 的博客 9366

如何构建一个分布式爬虫:理论篇

前言 本系列文章计划分三个章节进行讲述,分别是理论篇、基础篇和实战篇。理论篇主要为构建分布式爬虫而储备的理论知识,基础篇会基于理论篇的知识写一个简易的分布式爬虫,实战篇则会以微博为例,教大家做一个比较完整且足够健壮的分布式微博爬虫。通过这三篇文章,希望大家能掌握如何构建一个分布式爬虫的方法;能举一反三,将celery用于除爬虫外的其它场景。目前基本上的博客都是教大家使用scrapyd或者scra...

qq_41534566的博客 405

代谢组数据分析(二十一):通过MetaboAnalystR标准化构建sPLSDA预测模型

本文介绍了如何使用R语言中的MetaboAnalystR包和mixOmics包进行代谢组学数据的标准化和sPLSDA分析。MetaboAnalystR包用于数据预处理,包括数据初始化、清洗、补足、过滤和标准化等步骤,以确保数据质量。mixOmics包则用于sPLSDA分析,通过Lasso惩罚进行变量选择,并建立分类模型。文章详细说明了安装和加载相关R包的步骤,并提供了数据导入和预处理的代码示例。最后,强调了数据预处理的重要性,以确保后续分析的准确性和可靠性。

专注生信领域 2426

计算机网络实验报告实验七可靠传输TCP协议分析

计算机网络实验报告实验七可靠传输TCP协议分析

m0_56638814的博客 966

如何构建一个分布式爬虫(理论篇)

如果你想学习Python帮助你实现自动化办公,或者准备学习Python或者正在学习,下面这些你应该能用得上,有需要可以领取。① Python所有方向的学习路线图,清楚各个方向要学什么东西② 100 多节Python课程视频,涵盖必备基础、爬虫和数据分析③ 100 多个Python实战案例,学习不再是只会理论④ 华为出品独家Python漫画教程,手机也能学习⑤历年互联网企业Python面试真题 , 复习时非常方便文末有领取方式哦。

大模型研究中心 165

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

python分布式爬虫系统_如何构建一个分布式爬虫:理论篇

前言本系列文章计划分三个章节进行讲述,分别是理论篇、基础篇和实战篇。理论篇主要为构建分布式爬虫而储备的理论知识,基础篇会基于理论篇的知识写一个简易的分布式爬虫,实战篇则会以微博为例,教大家做一个比较完整且足够健壮的分布式微博爬虫。通过这三篇文章,希望大家能掌握如何构建一个分布式爬虫的方法;能举一反三,将celery用于除爬虫外的其它场景。目前基本上的博客都是教大家使用scrapyd或者scrapy...

weixin_39996478的博客 158

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

分布式系统设计的7月回顾:从CAP理论到实际落地的工程权衡经验

不存在完美的分布式方案,只存在适合当前约束的方案。关键不是记住CAP理论的定义,而是能迅速判断自己面对的场景属于哪一类,然后准确选择方案。实战决策口诀钱相关的(支付/转账/清结算)→ CP,用Seata AT + 半同步复制看的内容(Feed/推荐/搜索)→ AP,用缓存 + 异步 + 最终一致库存类的(电商/票务)→ 混合,扣减走CP,展示走AP协调类的(分布式锁/选主)→ CP,Redis红锁或ZK。

dicky_zhang3的博客 5224

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

大话分布式理论之二——共识算法与一致性的区别

在我们认知分布式理论时,有两个东西常常混在一起,在我的角度看来,他们应该是两个东西——共识算法与一致性协议。

D的博客 2261

【技术驿站】分布式基础与常见面试问题

接口幂等性是指无论调用接口的次数是一次还是多次,对系统的影响都是相同的。换句话说,无论接口被调用多少次,最终的结果应该是一致的。这个概念通常在分布式系统、Web 服务、API 设计等领域中讨论,旨在确保系统的稳定性、一致性和可靠性。幂等性的一个常见用例是在进行写操作时,如创建、更新或删除数据。在这些情况下,如果多次请求接口,结果都应该是相同的,不会产生意外的重复操作或错误。举个例子,考虑一个银行转账的接口。无论你调用这个接口一次还是多次,最终账户的余额变化应该是一样的。

优快云站内信: https://i.youkuaiyun.com/#/msg/chat/qyj19920704 3万+

网易云音乐:基于分布式图学习的推荐系统优化之路

在“精准推荐者得民心”的今天,推荐系统已成为各大互联网公司的标配。但由于现实中很多数据是非欧氏空间生成的(例如,社交网络、信息网络等),一些复杂场景下的业务需求很难通过协同过滤等基于历史行...

tongtongjing1765的博客 1499

大模型书籍推荐丨大规模语言模型:从理论到实践(第2版)pdf电子书

如果你正在学习大语言模型(LLM),复旦大学张奇教授团队的《大规模语言模型:从理论到实践(第2版)》绝对是你的必读书目!

pythonhy的博客 1372
上一篇: 推荐:分布式系统理论基础 - CAP
下一篇: 一个压长定式衍生出的一个角部攻防
大树叶
博客等级 码龄12年 1171粉丝 664原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值