Zookeeper 与 Kafka (1) : 分布式一致性原理与实践

  1. 多线程的最大副作用: 并发.
  • 如果多个逻辑控制流在时间上发生了重叠, 就会产生并发.
  • 逻辑控制流是指一次程序操作.
    • 如读取或者更新内存变量的值.
    • 更新的并发性: 多线程同时更新内存值而产生的并发.
  • 分布式一致性
    • 目标:
      • 增加系统可用性, 防止因单点故障引起的系统不可用.
      • 提高系统的整体性能, 通过负载均衡, 让分布在不同地方的数据副本都能为用户提供服务.
    • 缺陷:
      • 为了解决复制延迟, 阻塞写入动作直到所有的复制完成, 会严重影响写入的性能.
      • 在不影响系统运行性能前提下,保证数据一致性是不可能的.
      • 一致性的级别:
        • 强一致性. 最好的用户体验, 但是会影响性能.
        • 弱一致性. 尽可能快地但不保证数据一致状态.
          • 分为会话一致性和用户一致性.
        • 最终一致性. 保证一定时间内,达到数据一致状态.
          • 属于弱一致性的特例. 是目前最被广泛接收的.
  • 分布式架构
    • 常见问题
      • 通信异常,节点故障.
      • 网络分区:
        • 部分节点的网络延迟过大, 导致只有部分节点间能够正常通信的现象.
      • 请求与响应的三态: 成功,失败,超时.
    • ACID.
      • Atomicity: 事务中的所有操作只能全部执行或者全部不执行.
      • Consistency: 事务的执行不能破坏�数据库中数据的完整性和一致性.
        • 当�数据库在一些事务尚未完成时发生故障, 会导致部分修改写入, 而处于不一致状态.
      • Isolation: 并发环境中,事物相互隔离.
        • Read Uncommitted.允许脏读.
        • Read Committed. 允许不可重复读(一次事物多次读取相同值时, 原始读取不可重复).
        • Repeatable Read(锁定�行). 事务过程中多次读取同一数据,其值和开始时是一致的. 可能有幻影数据(锁定�行范围).
        • Serializable. 所有事务串行执行,不�支持并发.
      • Durability: 事务成功结束后,其对�数据库的更新要被永久保存下来.
    • 分布式事务
      • 由多个分布式的操作(子事务)序列组成, 嵌套型的事务. 需要兼顾可用性和一致性.
      • CAP. 最多只能同时满足其中的两项. 分区容错性是必须的,平衡的是Consistency和Availability.
        • Consistency. 数据在多个�副本间的一致性.
        • Availability. 用户的每个请求总能在有限的时间内返回结果.
        • Partition tolerance. 遇到任何网络分区(子网络)故障时,对外提供满足一致性和可用性的服务.除非整个网络故障.
      • BASE 理论. 既然无法达到�强一致性, 那么采用适当的方式来达到最终一致性.
        • Basically Available. 出现不可预知的故障时, 允许损失部分可用性.
          • 造成响应时间上的损失, 功能上的损失.
        • Soft state. 允许系统中的数据存在中间状态.
          • 即数据副本间的同步存在延迟.
        • Eventually Consistent. 它包含五种变种:
          • Causal consistency. 更新进程完成后通知进程B,进程B拿到的是更新后的数据.
          • Read your writes. 进程更新数据后,自己总是能读取到更新过的新值.
          • Session consistency. 在同一会话中实现read your writes的一致性.
          • Monotonic read consistency. 进程读取某数据项后,后续的数据访问不能返回旧值.
          • Monotonic write consistency. 保证来自同一进程的写操作顺序地执行.
        • 核心: 牺牲强一致性来获得可用性.
  • 一致性协议
    • 跨越多个分布式节点的事务操作,需引入协调器(Coordinator)来调度,节点称为参与者(Participant).
      • Coordinator 调度Participan t的行为, 并最终决定是否要把事务真正进行�提交.
    • 两阶段提交协议(2PC, Two-Phase Commit).
      • 关系型�数据库的通用做法, 属于强一致性算法.
      • 阶段:
        • 提交事务请求(投票); 要么返回失败,要么本地执行事务,写本地的redo/undo日志,但不提交.
        • 执行事务提交(执行).
        • 采用先尝试后提交的方式.
      • 缺点:
        1. 同步阻塞(participant 会一直等待它人的响应/ 或participant 占用公共资源时);
        • 单点问题(coordinator);
        • 数据不一致性(阶段二如果有节点没有收到提交消息时, coordinator 就宕机时);
        • 太过保守(coordinate 只能依靠超时来处理长时间无响应的participant).
        • 当coordinator 发送了commit 后宕机, 且唯一接收到commit 消息的participant 也宕机后, 重新选举的coordinator 也无法知晓是否应该commit.
    • 三阶段提交协议(3PC)
      • 阶段:
        • CanCommit, PreCommit, Do Commit.
        • participant 在PreCommit 阶段执行事务操作,并将Undo 和Redo 信息记录到事务log 中.
      • 改动点:
        • 在协调者和参与者之间引入超时机制.
        • 新插入的准备阶段, 保证了在最后提交阶段之前, 各参与节点的状态是一致的.
      • 缺点:
        • 进入Do commit阶段,参与者在等待(协调者的提交/中断指令)超时后,会继续进行事务提交. 可能导致数据的不一致性.
      • 优势:
        • 降低了参与者的阻塞范围, 且在单点故障后继续达成一致性.
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容

  • 本文欢迎转载,转载请注明原文链接,并附作者个人信息李艳鹏。 1 背景 一致性是一个抽象的、具有多重含义的计算机术语...
    581f548ef0ec阅读 43,451评论 28 294
  • 分布式系统面临的第一个问题就是数据分布,即将数据均匀地分布到多个存储节点。另外,为了保证可靠性和可用性,需要将数据...
    olostin阅读 4,547评论 2 26
  • 本文由厦门大学计算机系教师林子雨翻译,翻译质量很高,本人只对极少数翻译得不太恰当的地方进行了修改。 【摘要】:Sp...
    Jeffbond阅读 3,918评论 1 42
  • 我是一名普通的大学毕业生,现在算起来刚好整毕业三个月,因为学的是土木专业,理所当然的进入了施工这一伟大而又苦逼的行...
    爱吃肉的和尚阅读 241评论 0 0
  • 最近S小姐失恋了,然而我却不知道该怎么办 S小姐是我最好的朋友,她陪我度过了我的青葱岁月,可对于S小姐的前任,我只...
    白菜沫君阅读 360评论 0 1