分布式技术原理与算法解析
聂鹏程
智载云帆CTO,前华为分布式Lab资深技术专家
立即订阅
5969 人已学习
课程目录
已更新 36 讲 / 共 34 讲
0/4登录后,你可以任选4讲全文学习。
课前必读 (3讲)
开篇词 | 四纵四横,带你透彻理解分布式技术
免费
01 | 分布式缘何而起:从单兵,到游击队,到集团军
02 | 分布式系统的指标:啥是分布式的三围
第一站:分布式协调与同步 (6讲)
03 | 分布式互斥:有你没我,有我没你
04 | 分布式选举:国不可一日无君
05 | 分布式共识:存异求同
06 | 分布式事务:All or nothing
07 | 分布式锁:关键重地,非请勿入
08 | 分布式技术是如何引爆人工智能的?
第二站:分布式资源管理与负载调度 (6讲)
09 | 分布式体系结构之集中式结构:一人在上,万人在下
10 | 分布式体系结构之非集中式结构:众生平等
11 | 分布式调度架构之单体调度:物质文明、精神文明一手抓
12 | 分布式调度架构之两层调度:物质文明、精神文明两手抓
13 | 分布式调度架构之共享状态调度:物质文明、精神文明多手协商抓
14 | 答疑篇:分布式事务与分布式锁相关问题
第三站:分布式计算技术 (4讲)
15 | 分布式计算模式之MR:一门同流合污的艺术
16 | 分布式计算模式之Stream:一门背锅的艺术
17 | 分布式计算模式之Actor:一门甩锅的艺术
18 | 分布式计算模式之流水线:你方唱罢我登场
第四站:分布式通信技术 (4讲)
19 | 分布式通信之远程调用:我是你的千里眼
20 | 分布式通信之发布订阅:送货上门
21 | 分布式通信之消息队列:货物自取
22 | 答疑篇:分布式体系架构与分布式计算相关问题
第五站:分布式数据存储 (5讲)
23 | CAP理论:这顶帽子我不想要
24 | 分布式数据存储系统之三要素:顾客、导购与货架
25 | 数据分布方式之哈希与一致性哈希:“掐指一算”与“掐指两算”的事
26 | 分布式数据复制技术:分身有术
27 | 分布式数据之缓存技术:“身手钥钱”随身带
特别放送 (3讲)
特别放送 | 分布式下的一致性杂谈
特别放送 | 徐志强:学习这件事儿,不到长城非好汉
特别放送 | 那些你不能错过的分布式系统论文
第六站:分布式高可靠 (5讲)
28 | 分布式高可靠之负载均衡:不患寡,而患不均
29 | 分布式高可靠之流量控制:大禹治水,在疏不在堵
30 | 分布式高可用之故障隔离:当断不断,反受其乱
31 | 分布式高可用之故障恢复:知错能改,善莫大焉
32 | 答疑篇:如何判断并解决网络分区问题?
分布式技术原理与算法解析
登录|注册

03 | 分布式互斥:有你没我,有我没你

聂鹏程 2019-09-27
你好!我是聂鹏程。今天,我来继续带你打卡分布式核心技术。
通过前面的两篇文章,相信你已经对此次的分布式世界之行有了一个初步了解,想必对此次旅行也是充满期待。今天,我就带你正式踏上第一站:分布式协调与同步。在这一站,我将带你学习如何让分布在不同计算机上的程序具有“团队精神”,换句话说就是如何让程序通过协作共同去达成一个业务目标。
在本站,我将带你打卡的第一个景点是分布式互斥。那,什么是分布式互斥呢?

什么是分布式互斥?

想象一下,你正在一家餐厅使用自助咖啡机泡制咖啡,突然有个人过来挪走了你的杯子,开始泡制他自己的咖啡。你耐着性子等他操作完,继续泡制自己的咖啡。结果你开始没多久,他又回来中断了你泡制咖啡的过程。相信要不了几个回合,你和他就会上演一场“有你没我,有我没你”的格斗了。
这样现实的问题也同样存在于分布式世界。就像我们使用自助咖啡机时不希望被打扰一样,对于同一共享资源,一个程序正在使用的时候也不希望被其他程序打扰。这,就要求同一时刻只能有一个程序能够访问这种资源。
在分布式系统里,这种排他性的资源访问方式,叫作分布式互斥(Distributed Mutual Exclusion),而这种被互斥访问的共享资源就叫作临界资源(Critical Resource)。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《分布式技术原理与算法解析》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(41)

  • xingoo
    集中式没啥想法,分布式可以采用大多数投票而不是全部投票,令牌环可以为每个节点增加轮值权重,比如不常访问的两轮才轮一次。

    传统的单机互斥靠加锁或者信号量,其实跟集中式差不多
    2019-09-27
    6
    34
  • 青莲
    集中式算法:可参照redis集群通信模式,通过hash key将大量的请求分散到不同的master,以处理大量请求,每个master由小集群主从节点来保障单点故障
    分布式算法:分布式算法可在集群中过半数同意就识为其同意,降低通信数,如分布式选举场景
    令牌环算法:可根据参与者使用频率列出权重,结合平滑加权轮询算法选出下一个参与者

    传统单机上的互斥只能针对单台机器上的程序相互间通信,而分布式环境往往是多台服务器上的程序相互通信

    作者回复:

    从你的回复,可以看出你很爱学习和思考,对开源软件进行了学习和总结👍

    2019-09-28
    3
    26
  • 汉超
    精通不但要有理论还要有丰富的实践,仅34节课怎么才能做到精通?

    作者回复: 首先,不积跬步无以至千里,不积小流无以成江海!

    另外,教是为了不教,本专栏的一个目的也是希望通过划重点、寻路线、建体系帮助大家培养学习及运用知识的能力。

    我们要解决的问题无穷无尽,唯有学习及运用的能力才是以不变应万变的不二法门。

    2019-09-29
    1
    5
  • aoe
    令牌环如果应用于生产环境,需要解决下面的问题:
    1. 服务1、2、3、4组成一个令牌环
    2. 令牌环开始传递,顺序为1 -> 2 -> 3 -> 4 -> 1(循环)
     ☹异常情景:
    3. 当令牌传递到2时,2宕机了,此时令牌无法继续传递下去
    4. 当令牌传递到2时,2、3之间的网络中断了,但3和其他服务的网络都正常,此时令牌无法继续传递下去
    2019-10-07
    2
    3
  • 丁乐洪
    老师,能举些例子或开源实现吗?很想了解一下现有的实现的例子,多谢了
    集中式算法:
    分布式算法:
    令牌环算法:
    2019-10-11
    2
  • 青铜5 周群力
    ……则会同时产生 2n(n-1) 条消息。总结来说,在大型系统中使用分布式算法,消息数量会随着需要访问临界资源的程序数量呈指数级增加
    ——————
    这里应该是平方级增长吧 消息复杂度O(N^2)
    2019-09-29
    2
  • 啦啦啦
    不错不错

    作者回复: 谢谢!宝剑赠英雄,红粉增佳人!

    2019-09-27
    2
  • 2018
    对于集中式算法,协调者容易引发单点故障的问题,想请问下老师,协调者程序如果用集群的方式话,可以规避这种问题嘛?

    作者回复: 协调者采用集群方式相当于做了备份,提升了系统可靠性,但在正常工作时,只有一个master节点提供服务,无法避免瓶颈问题。

    2019-11-21
    1
  • Hy
    令牌算法早就被用在操作系统中了,才不是什么华为独创。。思路都一样
    2019-10-30
    1
    1
  • Eternal
    老师今天讲了三种算法,集中式,民主协商,令牌环。前面两种熟悉一点,令牌环这种第一次听说,学到了。

    老师的第一个问题:集中式的缺点是单点,那我们可以解决单点,所以把单点变成多点,节点之间通过民主协商的方式来通信,节点之间互相备份来化解单点,zk是这样,euraka类似,
    2019-10-21
    1
  • 格非
    “Hadoop 是我们非常熟悉的分布式系统,分布式文件系统 HDFS 的文件修改就是一个典型的应用分布式算法的场景”,这句话不够准确哦,HDFS上的文件支持追加写,但是不支持修改的,遵循的是”一次写入多次读取“的数据访问模式
    2019-10-17
    1
  • 阿卡牛
    CAP的相关内容会在哪一课中讲

    作者回复: CAP的相关内容会在分布式数据存储“CAP理论:这顶帽子我不想要”中介绍,请继续学习哟

    2019-10-12
    1
    1
  • 静水流深
    老师,您好!看到开篇,想到一个问题,请您解惑。
    既然是分布式互斥,是不是就意味着有分布式锁。但是在分布式环境下,对于共享资源的修改,是否可以用CAS机制来更新?就意味着不需要分布式锁了吧?如果没有更新某个数据的场景,只是为了同步或者互斥不同服务器上的线程,此时才会用到分布式的一些算法吧?
    还有就是,对于区块链的去中心化的技术,也会用到这些分布式算法吗?
    谢谢老师!
    2019-10-11
    1
  • 北冥有鱼
    老师总结的很好,言简意赅,很精彩。
    期待更新

    作者回复: 谢谢!宝剑赠英雄,红粉赠佳人!

    2019-09-29
    1
  • Damon
    讲的挺好的,形象生动

    作者回复: 谢谢!宝剑赠英雄,红粉赠佳人!

    2019-09-27
    1
  • ashen
    集中式算法可以考虑把协调节点做成集群,参与者通过资源做一致性hash找对应的协调节点,这样可以一定程度解决单点问题。
    2019-09-27
    1
  • 石维康
    传统单机上的互斥方法,为什么不能用于分布式环境呢?
    因为在分布式场景下,很难保证操作的原子性
    2019-09-27
    1
  • Geek_04d7ba
    为啥现在流行的分布式锁的实现比如zookeeper,redis都是用的集中式方法?是不是就是因为实现难度低?
    2019-09-27
    2
    1
  • 科科
    令牌环算法让我想起了之前写的一个CAN总线设备的算法,令牌比较适合硬件设备之间的通信,交换机的令牌算法等等内容
    2019-12-01
  • 布小丫学编程
    从有无状态角度分析一下这个问题:有状态指的是谁需要使用资源,谁先申请资源;无状态是不需要保存以上信息的。
    集中式算法的状态信息是集中存放的。可以使用主从部署多个存放状态的地方。
    分布式算法的状态是分布式存放在各个节点的。大多数节点有状态信息即可,不需要全部。
    令牌环算法相当于是无状态。
    不知道这样的理解对不对?
    2019-11-16
收起评论
41
返回
顶部