/***
* 《操作系统原理》 记录(35)
* @分布式协调
* @事件排序
* 在分布式系统中,事前(happened-before)关系
* 只是排序判断发生关系的一部分。
* 决定整体排序能力在所有系统中的重要性
* 需要设计一种能够满足所有事件发生的一个整体排序
* 通过事前关系能够进行有规则的串行执行和事务机制的形成。
*
* @事前关系
* #根据操作系统原理的知识可以得到。内存屏障的技术也是基于此关系形成和执行的。
* 一个事件不能再自己之前发生?
* 如果A和B没有事前关系则称之为A和B是并行执行。
* 此时A和B之间不能通过任何因果关系对其进行影响。
*
* @实现
* 事前关系重要性——基于【时间原则——>】的方式
* 1、将一个系统事件和时间戳进行相关联可以定义全局排序的要求。
* A和B的时间戳决定事前关系
* 2、通过LC(A)逻辑时钟进行全局排序处理
* 如果LC(A) > LC(B) = B 发生在 A 之前 ———— 通过进程的唯一标识进行逻辑时钟的处理
* 小结:跨进程的时钟时间需要处理的要求从而影响了实现要求。
*
* @互斥
* @集中式算法
* 系统中会有一个进程被定义为临界区协调者。
* 所有调用者想要进行临界区需要请求临界区协调者进行准入。
* 如果没有其他进程在临界区运行则可以准入。
* 如果有其他运行则请求者进入排队等待状态
* 当协调者收到了释放临界区的信号后开始选择队列中的进程进行运行。此处的选择就是调度算法
*
* 如果一个协调者出现错误则需要新的选举新的进程担任此任务。选举算法。HA
* 进行系统的重新配置。然后运行。当进程恢复之后则又需要进行配置然后运行。
*
* @完全分布式的算法
* 进入和退出临界区广播所有进程得到应答消息。
* 多大概率能够实现这个算法。
*
* 因为一个环节出处可能导致整个算法崩溃算法环节脆弱。
*
*
* @令牌传递算法
* 系统中的所有进程会被组成环形结构。
* 环中不断传递一个令牌。只有持有令牌的进程可以进入临界区运行。——令牌和协调者类似?
*
* @原子性
* #分布式系统中的事务协调者保证分布式系统中执行事务的原子性。
* 启动事务的执行
* 将任务进行分而治之处理
* 协调事务的结束。提交或者回滚。
*
* @两阶段提交协议
* 站点能够保证整体提交结果一致性。
* 假设A1站点开启一个事务X1,并且事务协调者为C1,
* 当X1执行完毕后。即当X1在所有站点执行完毕之后开始C1的2PC——第二阶段提交协议
*
* #第一阶段
* C1将记录X1加入到日志中并且将日志转移到稳定存储器。
* 然后发送一条prepare(X1)通知所有执行X1的站点,X1执行完成。
* 站点上的事务管理者决定是否提交此站点上关于X1的部分
* Y 日志中添加一条No_X1 然后发送 C1 一条消息abort(X1)
*
* N 日志中添加一条ready(X1)到日志 然后将所有符合X1的记录日志转移到稳定
* 然后发送一条ready(X1) 给C1报告。
*
* #第二阶段
* C1收集所有站点对于prepare(X1)请求的响应
* 或者在发出消息一段时间之后事务C1必须对此事务进行判决。是提交还是终止。
* #如果C1从所有站点收集信息全部是ready(X1),此事务可以提交。
* 否则此次事务必须进行终止。
* --
* 根据此决策我们我们可以记录commit或者abort数据记录到存储器
* 随后协调者发送commit或abort信息个所有参与站点。
* 当一个站点接受到到消息后将消息记录到日志中。
*
* 执行X1的站点在发送消息给C1之前可以随时进行X1事务的终止。
*
* 当所有站点承诺发送ok信息给协调者之后。协调者可以将完成情况追加到日志
* 此时事务的判决已经可以根据日志输出结果。
*
* @针对任务错误处理
* #一个参与站点出现错误
* #协调者出错
* #网络出错
*/
《操作系统原理》 记录(35)
本文探讨了分布式系统中的事件排序和协调机制,重点关注事前关系、互斥和原子性。事前关系是确定事件全局顺序的基础,通过时间戳和逻辑时钟可以实现。互斥通过集中式和分布式算法解决,如令牌传递,确保资源的安全访问。原子性在分布式事务中至关重要,两阶段提交协议保证了事务的一致性。文章深入解析了这些概念及其在系统中的应用。
摘要由CSDN通过智能技术生成