推荐:分布式理论系列

分布式系统理论概述 在具体的工程项目中,一个节点往往是一个操作系统上的进程。在本文的模型中,认为节点是一个完整的、不可分的整体,如果某个程序进程实际上由若干相对独立部分构成,则在模型中可以将一个进程划分为多个节点。机器宕机:机器宕机是最常见的异常之一。在大型集群中每日宕机发生的概率为千分之一左右,在实践中,一台宕机的机器恢复的时间通常认为是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

Star CCM+中衍生零部件下的阈值应用与区域内删除目标网格

同样的在绘制网格结束后,有时出现负体积网格或质量差的网格,为了节约时间成本,可能会选择将负体积的网格或质量差的网格删除。弹出相应的窗口,在窗口中选择相应的区域①,选择标量函数②(此处以网格体积变化为例),选择模型③,设置阈值④,选择No Dispalyer,会根据需求选择显示,最后点击Create⑥完成创建。此处以温度为例,若出现温度异常点,首先在①栏中勾选Function,然后在下面点击⑤Select,在弹出的Function窗口中选择温度场函数,再点击④Identify,查找温度异常网格数量。

2201_75375391的博客 2222

利用Arcgis发布wmts服务

使用发布 GIS 服务连接连接到 ArcGIS Server 站点后,可以将各种 GIS 资源(如地图文档、数据库以及服务定义)发布到服务器上。此外,还可以添加、删除、启动和停止服务。使用管理 GIS 服务器连接到 ArcGIS Server 站点后,可以编辑各种服务器属性,例如配置存储位置、集群配置、参与到该站点中的计算机列表以及管理站点的数据存储。通过使用 GIS 服务连接建立连接后,可以查看并使用发布到该站点的服务。但不能编辑服务器或服务属性、发布服务,也不能添加、删除、启动、停止或暂停服务。

ghgfsasxda的博客 2392

一. 分布式技术原理

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

zxc_123_789的博客 1598

实用电路精讲系列---双级运放放大电路(差分放大+跟随缓冲)

本文分析了双极运放放大电路的工作原理及其典型应用。该电路结合差分放大器和跟随缓冲器,实现高精度信号放大与阻抗匹配。差分放大器通过放大差模信号并抑制共模噪声提升信噪比;跟随缓冲器则提供阻抗变换,确保信号稳定传输。两者协同工作可优化输入阻抗、增强噪声抑制并提高设计灵活性。文章还列举了10个典型应用案例,包括医疗设备、工业传感器和新能源系统等,展示了该电路在精密电子系统中的关键作用。最后通过实用电路分析,详细说明了各模块功能及设计注意事项。

weixin_40590799的博客 2953

一、分布式理论

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

莫安逸无风雪 2149

Excel 汉字首字母提取:四种方案对比与选型

本文对比了 Excel 中提取汉字首字母的四种方案:手动转换、VBA 脚本、映射表与 AI 工具。手动方式低效易错;VBA 适合无网环境但识别范围有限;映射表精度提升却无法解决多音字;AI 工具通过语义理解可一句话完成提取,是多数场景下的首选。

u011186532的专栏 394

orangepi香橙派用户名及密码修改和VNC远程登陆

1、修改 /etc/passwd用户信息文件 vim /etc/passwd #admin❌503:501::/home/admin:/bin/bash #把用户名admin改成rest #test❌503:501::/home/test:/bin/bash 2、修改 /etc/shadow用户密码文件 vim /etc/shadow #admin:Dnakfw28zf38w:8764:0:168:7::: #由于密码加密方式存放,只修改用户名即可(密码不变) #test:Dnakfw28zf38w:876

weixin_40227845的博客 5660

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

分布式协议和算法 路线 学习 四大基本理论 在学习 分布式协议和算法 四大基本理论 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

Windows 镜像包大全(附百度云下载链接)

插入U盘,找到下载好的两个驱动软件,并安装,先打开驱动人生万能网卡版,安装好网卡驱动,可以接入wifi或者网线了,然后打开驱动精灵,按照提示,安装所有的驱动(中间要是让你重启,就先选择稍后再说,如果有的驱动安装好之后非要你重启,关不掉的那种,那你就重启吧),等全部安装好了,重启电脑。如果你有显卡,这里以英伟达举例,我是GTX960的,当你的驱动都安装好后,右键桌面,会出现一个英伟达控制面板。安装软碟通,下载之后,一直下一步就ok,啥也不用配置,到了最后一项点击“继续试用”即可。(下载里面的网卡版即可),

悦分享 7349

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

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

qq_41534566的博客 405

基于STM32L4XX、HAL库的GC9307 TFT 液晶驱动IC驱动程序设计

GC9307是一款常用的TFT液晶驱动IC,支持240x320分辨率的RGB接口显示屏。(Master Out Slave In): 连接到STM32L4的SPI数据输出引脚(如PA7)(Serial Clock): 连接到STM32L4的SPI时钟引脚(如PA5)(Data/Command): 连接到STM32L4的GPIO引脚(如PA3)(Chip Select): 连接到STM32L4的GPIO引脚(如PA4)(Reset): 连接到STM32L4的GPIO引脚(如PA2): 分别连接到电源和地。

zhusl6688的博客 1033

如何让 Mac mini 24小时不休眠运行 OpenClaw

如果 OpenClaw 每 5-10 分钟自动退出,launchd 连续 4 次快速重启后会判定为崩溃循环并卸载服务。:方案一(pmset)+ 方案三(launchd)组合使用,既防止系统休眠,又保证 OpenClaw 开机自启和崩溃自动恢复。:caffeinate 只在进程运行期间有效,终端关闭或进程结束后系统恢复正常睡眠策略。这条命令会自动创建 launchd plist 并启用服务,是最推荐的方式。替换为你的实际用户名路径,Node.js 路径也要改成你自己的。确保 plist 中有。

Maynor的博客 2199

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

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

大模型研究中心 165

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

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

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

weixin_39996478的博客 158

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

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

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

dicky_zhang3的博客 5224

廖雪峰Python教程[完整版]

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

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

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

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、付费专栏及课程。

余额充值