分布式理论与场景浅谈

栏目: 后端 · 发布时间: 6年前

内容简介:FLP不可能原理在异步模型中,分布式系统中只要有一个进程不可用,就可能无法达成整体的共识.在工程中的分布式系统实现中, 通过解决活锁等问题, 来使系统在一定时间内可以达到一致性.

基本理论

FLP/CAP/BASE/ACID

FLP不可能原理

在异步模型中,分布式系统中只要有一个进程不可用,就可能无法达成整体的共识.

在工程中的分布式系统实现中, 通过解决活锁等问题, 来使系统在一定时间内可以达到一致性.

分布式理论与场景浅谈

上图里CP还少一个常见的: zookeeper

分布式理论与场景浅谈

ACID 对应刚性事务, 追求强一致性, 以 MySql 等RDBMS为代表;

BASE 对应柔性事务, 牺牲强一致性来换取一定的可用性, 过种中会存在中间状态, 但会达到最终一致性, 以Spanner等分布式系统为代表.

分布式理论与场景浅谈

CAP理论

分布式系统中C、A、P三者不能同时满足,最多只能满足其中两个.

通常来说, 使用网络通信的分布式系统,无法舍弃P性质, 会根据选择的不同去达到AP或CP.

不过三者选二的情况很容易发生误解,

  1. 分区很少发生,那么在系统不存在分区的情况下没什么理由牺牲C或A。
  2. A与C的取舍可以在同一系统内反复发生, A与C的程度都有很多的层次, 比如可用性的变化和一致性等级的变化等

所以实际使用中可根据应用场景进行适当取舍

以zookeeper为例, 它的CAP分别为:

  • C : 最终一致性, 一般十几秒内可以Sync到各个节点
  • A : 数据总是可用, 超过一半的节点的数据是最新的, 但想保证读到最新的数据需手动调用Sync函数
  • P : 一是节点多了会导致写数据时同步延时非常大, 二是节点多了Leader选举非常耗时, 可引入 observer节点缓解

zookeeper 是一个CP系统, 因为在任何时刻对它的访问请求能得到一致的数据结果, 但不保证每次服务请求的可用性(比如发生网络分区时), 所以其实它做服务发现并不如AP的 eureka 合适

分布式事务

实现最终一致性有三种模式

  • 可靠事件模式, MQ配合本地或外部事件表
  • 业务补偿模式, 用于业务/技术异常时补偿
  • TCC模式, 应用层的2PC

分布式事务的需求, 主要是因为数据库的水平拆分以及应用SOA化, 服务调用中会使用到跨库事务.

从某种角度来说, 只有拥有复杂业务(如金融), 全球性服务(如谷歌), 和拥有大数据量(分库)的公司才会有这种需求的场景.

常见的一致性协议

  • ZAB
  • Raft
  • Viewstamped Replication
  • Quorum
  • Gossip

本质都是Paxos协议的变种

常见的类Paxos分布式事务实现

  • MySQL的XA
  • TCC, Try-Confirm-Cancel

分布式的实际业务场景

  • 微信 PaxosStore
  • 阿里 AliSQL X-Cluster/TCC等
  • TiDB (multi raft group)
  • 谷歌Spanner等
  • AWS aurora, dynamo

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

The Linux Command Line

The Linux Command Line

William E. Shotts Jr. / No Starch Press, Incorporated / 2012-1-17 / USD 39.95

You've experienced the shiny, point-and-click surface of your Linux computer-now dive below and explore its depths with the power of the command line. The Linux Command Line takes you from your very ......一起来看看 《The Linux Command Line》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

随机密码生成器
随机密码生成器

多种字符组合密码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具