分布式算法
文章平均质量分 73
dxktt
这个作者很懒,什么都没留下…
展开
-
2021-06-01
十、分布式数据库之自增主键1、自增主键的理想特征首先是唯一性,这是必须保证的,否则还能叫主键吗? 其次是单调递增,也就是后插入记录的自增主键值一定比先插入记录要大。 最后就是连续递增,自增主键每次加 1。有些应用系统甚至会基于自增主键的“连续递增”特性来设计业务逻辑。但很多情况下,这些特性无法同时满足。2、单体数据库的自增主键只能真正的满足唯一性的约束,单调和连续性无法得到满足。2.1、无法连续递增在多数情况下,自增主键确实表现为连续递...原创 2021-06-01 00:44:22 · 262 阅读 · 0 评论 -
2021-06-01
九、分布式数据库之隔离性1、读写冲突的处理图中事务 T1、T2 先后启动,分别对数据库执行写操作和读操作。写操作是一个过程,在过程中任意一点,数据的变更都是不完整的,所以 T2 必须在数据写入完成后才能读取,也就形成了读写阻塞(通过锁机制)。反之,如果 T2 先启动,T1 也要等待 T2 将数据完全读取后,才能执行写入。先执行写事务时,阻塞时间除了磁盘写入时间,还包括主备同步网络通讯的开销; 先执行读事务时,虽然不用考虑主备之间的数据复制,但是一方面读操作往往涉及多...原创 2021-06-01 00:43:36 · 664 阅读 · 0 评论 -
2021-06-01
八、分布式数据库之原子性1、定义关于事务的原子性,图灵奖得主、事务处理大师詹姆斯·格雷(Jim Gray)给出了一个更权威的定义:Atomicity: Either all the changes from the transaction occur (writes, and messages sent), or none occur.原子性就是要求事务只有两个状态:一是成功,也就是所有操作全部成功; 二是失败,任何操作都没有被执行,即使过程中已经执行了部...原创 2021-06-01 00:40:26 · 341 阅读 · 0 评论 -
2021-06-01
七、分布式数据库之基础和架构1、定义从外部特性上看,分布式数据库是服务于写多读少、低延时、海量并发 OLTP 场景的,具备海量数据存储能力和高可靠性的关系型数据库。 传统上,银行通过两种方法配合来实现高可靠。 第一种还是采购小型机和大型机,因为它们的稳定性优于 x86 服务器。 第二种是引入专业存储方案,例如 EMC 的 Symmetrix 远程镜像软件(Symmetrix Remote Data Facility, SRDF)。数据库采用主...原创 2021-06-01 00:36:39 · 434 阅读 · 0 评论 -
2021-06-01
六、一致性模型1、概念在“分布式系统”和“数据库”这两个学科中,一致性(Consistency)都是重要概念,但它表达的内容却并不相同。对于分布式系统而言,一致性是在探讨当系统内的一份逻辑数据存在多个物理的数据副本时,对其执行读写操作会产生什么样的结果,这也符合 CAP 理论对一致性的表述。 而在数据库领域,“一致性”与事务密切相关,又进一步细化到 ACID 四个方面。其中,I 所代表的隔离性(Isolation),是“一致性”的核心内容,研究的就是如何协调事务之间的冲突。...原创 2021-06-01 00:33:59 · 691 阅读 · 0 评论 -
2021-06-01
五、有人作恶怎么办?在第2章中,所有的节点都是好人,会不打折扣的执行领导者的指令。如果集群中出现了坏人,就需要其他办法了。是最复杂的一种分布式故障场景,除了存在故障行为,还存在恶意行为的一个场景。在存在恶意节点行为的场景中(比如在数字货币的区块链技术中),必须使用拜占庭容错算法(Byzantine Fault Tolerance,BFT)。常用的拜占庭容错算法有:PBFT 算法,PoW 算法。1、PBFT 算法PBFT 算法非常实用,是一种能在实际场景中落地的拜占庭容...原创 2021-06-01 00:30:57 · 105 阅读 · 0 评论 -
2021-06-01
四、在一致性和可用性之间平滑过渡在 AP 型分布式系统中(比如 Dynamo、Cassandra、InfluxDB 企业版的 DATA 节点集群),Quorum NWR 是通常都会实现的一个功能,很常用。对你来说,掌握 Quorum NWR,不仅是掌握一种常用的实现一致性的方法,更重要的是,后续用户可以根据业务的特点,灵活地指定一致性级别。实现自定义一致性级别,是通过组合Quorum NWR 中的三个要素,N、W、R来实现的。1、Quorum NWR 的三要素N 表示...原创 2021-06-01 00:29:50 · 63 阅读 · 0 评论 -
2021-06-01
三、突破单点——从集中式到非集中式网络1、数据分片前面的Raft算法,是一个实现了强一致性的主从结构,逻辑上相当于是一个单点(当然,是一个高可用的单点),而单点的性能就会有上限,此时就需要使用数据分片等技术,将这些逻辑上的高可用单点再组成一个集群来提升性能。分片与分片存储的数据是不一致的,但为了高可靠,每个分片不能只存一份,需要若干个位于不同节点上的副本,此时分片与副本并存,如下是一个三节点三副本的集群(节点数可以不等于副本数,参见第四章笔记的Quorum NWR算法):...原创 2021-06-01 00:26:32 · 90 阅读 · 0 评论 -
2021-06-01
二、Raft算法在paxos算法笔记中说过,Multi-Paxos 算法是一个统称,它是指基于 Multi-Paxos 思想,通过多个 Basic Paxos 实例实现一系列值的共识的算法。Raft算法就是其中的一种。Raft 算法是现在分布式系统开发首选的共识算法。全新的系统大多选择了 Raft 算法(比如 Etcd、Consul、CockroachDB——《分布式数据库一》的4.1.3节却说由于节点数较多,CockroachDB采用了Gossip协议)。从本质上说,Raft...原创 2021-06-01 00:25:28 · 143 阅读 · 0 评论 -
2021-06-01
一、paxos算法1、Basic Paxos 算法描述的是多节点之间如何就某个值(提案 Value)达成共识。采用两阶段提交的分布式事物。在 Basic Paxos 中,有提议者(Proposer)、接受者(Acceptor)、学习者(Learner)三种角色提议者(Proposer)提议一个值,用于投票表决。粗略的,可以把访问集群的客户端也当做提议者。但在绝大多数场景中,集群中收到客户端请求的节点,才是提议者。二阶段提交的发起者。 接受者(Acceptor):...原创 2021-06-01 00:23:53 · 126 阅读 · 0 评论