
分布式
文章平均质量分 83
鸭梨山大哎
life hard take it easy
展开
-
Spanner如何实现事务?
Spanner 最早来自 Google 的一篇论文,并最终成为 Google Cloud 的一个服务。Spanner 简单来讲是一种两阶段提交的实现.Spanner 的整体架构很复杂,包含的内容非常多。但核心主要是两个部分,分别是 TrueTime 和 Paxos Group。TrueTime分布式系统获取时间有两种方式:物理时间与逻辑时间。而由于物理时间不靠谱,分布式系统大部分使用逻辑时间。逻辑时间往往由一个节点生成时间戳,虽然已经很高效,但是如果要构建全球系统,这种设计就捉襟见肘了。而 True原创 2021-08-10 20:16:51 · 324 阅读 · 0 评论 -
两阶段提交与三阶段提交
两阶段提交是什么?两阶段提交非常有名,其原因主要有两点:一个是历史很悠久;二是其定义是很模糊的,它首先不是一个协议,更不是一个规范,而仅仅是作为一个概念存在,故从传统的关系统数据库一致的最新的 DistributedSQL 中,我们都可以看到它的身影。两阶段提交包含哪些角色?两阶段提交包含协调器与参与者两个角色。在第一个阶段,协调器将需要提交的数据发送给参与者,同时询问参与者是否能够提交该数据,而后参与者返回投票结果。在第二阶段,协调器根据参与者的投票结果,决定是提交还是取消这次事务,而后将结原创 2021-08-10 09:19:59 · 321 阅读 · 0 评论 -
Raft算法入门
Raft 可以看成是 Multi-Paxos 的改进算法,因为其作者曾在斯坦福大学做过关于 Raft 与 Multi-Paxos 的比较演讲,因此我们可以将它们看作一类算法。Raft 算法可以说是目前最成功的分布式共识算法,包括 TiDB、FaunaDB、Redis 等都使用了这种技术。原因是 Multi-Paxos 没有具体的实现细节,虽然它给了开发者想象空间,但共识算法一般居于核心位置,一旦存在潜在问题必然带给系统灾难性的后果。而 Raft 算法给出了大量的实现细节,且处理方式相比于 Multi-Pa原创 2021-08-09 08:55:00 · 213 阅读 · 0 评论 -
Paxos 算法
所谓的 Paxos 算法,是为了解决来自客户端的值被发送到集群中的任意一点,而后集群中的所有节点为该值达成共识的一种协调算法。同时这个值伴随一个版本号,可以保证消息是有顺序的,该顺序在集群中任何一点都是一致的。基本的 Paxos 算法非常简单,它由三个角色组成。Proposer:Proposer 可以有多个,Proposer 提出议案(value)。所谓 value,可以是任何操作,比如“设置某个变量的值为 value”。不同的 Proposer 可以提出不同的 value。但对同一轮 Paxos 过程原创 2021-08-09 08:43:29 · 271 阅读 · 0 评论 -
ZAB协议(ZooKeeper Atomic Broadcast)入门
什么是 ZAB(Zookeeper 原子广播协议)?ZAB 协议确保 Zookeeper 复制按顺序完成,并且还负责领导节点的选举和任何失败节点的恢复。 在 Zookeeper 生态系统中,leader 节点是一切的核心; 每个集群都有一个leader节点,其余的节点是follower。 所有传入的客户端请求和状态更改首先由领导者接收,负责将其复制到所有追随者(及其本身)。 所有传入的读取请求也由其自身内的领导者及其追随者进行负载平衡。ZAB有哪些职责?顺序维护:如果在 X 的发送者提交事务 Y 之原创 2021-08-08 18:08:50 · 275 阅读 · 0 评论 -
原子广播与 ZAB
广播协议是一类将数据从一个节点同步到多个节点的协议。最终一致性系统通过各种反熵手段来保证数据的一致性传播,特别是其中的 Gossip 协议可以保障大规模的数据同步,而 Gossip 在正常情况下就是采用广播模式传播数据的。以上的广播过程产生了一个问题,那就是这个协调节点是明显的单点,它的可靠性至关重要。要保障其可靠,首先要解决的问题是需要检查这个节点的健康状态。我们可以通过各种健康检查方式去发现其健康情况。如果它失败了,会造成消息传播到一部分节点中,而另外一部分节点却没有这一份消息,这就违背了“一致性”原创 2021-08-08 17:55:38 · 192 阅读 · 0 评论 -
我们该用什么分布式数据库?
电商:从中间件到 NewSQL分布式数据库,特别是分布式中间这一概念就是从电商,尤其是阿里巴巴集团催生出来的。阿里集团也是最早涉及该领域的企业。这里我们以其 B2B 平台部产生的 Cobar 为例介绍。2008 年,阿里巴巴 B2B 成立了平台技术部,为各个业务部门的产品提供底层的基础平台。这些平台涵盖 Web 框架、消息通信、分布式服务、数据库中间件等多个领域的产品。它们有的源于各个产品线在长期开发过程中沉淀出来的公共框架和系统,有的源于对现有产品和运维过程中新需求的发现。数据库相关的平台就是其中之原创 2021-08-08 17:40:00 · 182 阅读 · 0 评论 -
分布式数据库的最新发展情况
首先我试着去定义 NewSQL,它是一类现代的关系型数据库,同时它又具备 NoSQL 的扩展能力。其擅长在 OLTP 场景下提供高性能的读写服务,同时可以保障事务隔离性和数据一致性。我们可以简单理解为,NewSQL 要将 2000 年左右发展而来的 NoSQL 所代表的扩展性与 20 世纪 70 年代发展的关系模型 SQL 和 ACID 事务进行结合,从而获得一个高并发关系型的分布式数据库。如果我们使用 NewSQL 数据库,可以使用熟悉的 SQL 来与数据库进行交互。使用 SQL 使得原有基于 SQL原创 2021-08-10 08:58:09 · 399 阅读 · 0 评论 -
传统数据库向分布式数据库的过渡
传统数据库构造为分布式数据库的帮手,同时也是分布式数据库演化的重要一环:数据库中间件。这里说的中间件一般是具有分片功能的数据库中间层。关系型数据库本身比较容易成为系统性能瓶颈,单机存储容量、连接数、处理能力等都很有限,数据库本身的“有状态性”导致了它并不像 Web 和应用服务器那么容易扩展。在互联网行业海量数据和高并发访问的考验下,应用服务技术人员提出了分片技术(或称为 Sharding、分库分表)。同时,流行的分布式系统数据库,特别是我们上一讲介绍的从传统数据库过渡而来的分布式数据库,本身都友好地支持原创 2021-08-07 14:04:12 · 418 阅读 · 0 评论 -
传统数据库在分布式领域的探索
传统数据库分布式化业务应用系统可以按照交易类型分为 OLTP 场景和 OLAP 场景两大类。OLTP 是面向交易的处理过程,单笔交易的数据量小,但是要在很短的时间内给出结果,典型场景包括购物、转账等;而 OLAP 场景通常是基于大数据集的运算,典型场景包括生成各种报表等。OLTP 与 OLAP 两种场景有很大的差异,虽然传统数据库在其早期是将两者融合在一起的。但是随着它们向分布式,特别是 Sharding(分片)领域转型,OLAP 类型的数据逐步被抛弃,它们将所有的精力集中在了 OLTP 上。OLTP原创 2021-08-07 13:51:43 · 220 阅读 · 0 评论