分布式一致性
文章平均质量分 50
快乐的霖霖
一个人默默的奋斗者
展开
-
阿里巴巴2022届应届生招聘 阿里云存储基础技术 研发&测试&算法
学弟学妹们好,我们是阿里云存储基础技术团队,正在进行2022届校招。团队业务核心,团队氛围nice,对于每位实习同学都会配师兄专职辅导。本次招聘为部门直招,简历直接推给Leader,反应更快速,合适不合适都会给反馈,机不可失~关于我们阿里云存储是目前国内规模最大的云存储服务商,拥有全球云计算厂商中最完整的存储产品线,包括块存储、对象存储、文件存储等存储系列产品。我们是存储下的基础技术团队,通过一致性协同服务、高性能网络、内核Tracing设施支持着阿里云存储的各个产品,同时也为阿里巴巴经原创 2021-07-29 18:41:42 · 927 阅读 · 0 评论 -
etcd raft如何实现leadership transfer
etcd raft如何实现leadership transferleadership transfer可以把raft group中的leader身份转给其中一个follower。这个功能可以用来做负载均衡,比如可以把leader放在性能更好的机器或者离客户端更近的机器上。对于一个大规模分布式系统来说,负载均衡非常重要。然而raft本身在选主方面必须要求新主包含所有的意境committed的转载 2017-11-25 22:39:06 · 1001 阅读 · 0 评论 -
微信paxos类库PhxPaxos实现原理与解析
微信自研paxos类库PhxPaxos实现原理 微信最近开源了其paxos类库PhxPaxos,具体参考资料: 1. https://github.com/tencent-wechat/phxpaxos 2. http://mp.weixin.qq.com/s?__biz=MzI4NDMyNTU2Mw==&mid=2247483695&idx=1&s原创 2016-06-28 23:49:35 · 7572 阅读 · 3 评论 -
通过 raft 的 leader lease 来解决集群脑裂时的 stale read 问题
通过 raft 的 leader lease 来解决集群脑裂时的 stale read 问题问题: 当 raft group 发生脑裂的情况下,老的 raft leader 可能在一段时间内并不知道新的 leader 已经被选举出来,这时候客户端在老的 leader 上可能会读取出陈旧的数据(stale read)。 比如,我们假想一个拥有 5 个节点的 raft group:转载 2017-09-04 00:30:51 · 6145 阅读 · 3 评论 -
consistency read的实现方式
consistency read的实现方式 1. Raft log read所谓线性一致性,一个简单的例子就是在 t1 的时间我们写入了一个值,那么在 t1 之后,我们的读一定能读到这个值,不可能读到 t1 之前的值。因为 Raft 本来就是一个为了实现分布式环境下面线性一致性的算法,所以我们可以通过 Raft 非常方便的实现线性 read,也就是将任何的读请求走一次 Raft...原创 2017-11-15 21:23:43 · 805 阅读 · 0 评论 -
raft协议的go语言实现
raft协议的go语言实现 https://github.com/goraft/raft原创 2016-03-04 00:55:21 · 6107 阅读 · 0 评论 -
分布式锁协议在各种场景的实现方式
分布式锁协议实现方式思考 分布式锁协议是分布式协调协调的一部分,通常业界的zookeeper,chubby等都可以实现分布式锁协议。 1. 基于zookeeper提供的ephermal file文件来创建。 每个ephermal file是与创建文件的owner是对应的,一个文件只能被一个owner创建修改。 eph原创 2016-06-19 00:22:29 · 1313 阅读 · 0 评论 -
chubby——用于松耦合分布式系统的锁服务
chubby——用于松耦合分布式系统的锁服务 参考论文>原创 2015-12-03 14:55:50 · 2225 阅读 · 0 评论 -
TiKV架构解析
TiKV架构解析参考资料: 1. TiKV 源码解析系列 - 如何使用 Raft 2. TiKV 源码解析系列 - multi-raft 设计与实现 3. TiKV 源码解析系列 - Placement Driver 4. TiKV 源码浅析 - PD Scheduler 5. TiKV 源原创 2017-11-18 19:45:57 · 11720 阅读 · 0 评论 -
从etcd看Raft协议
从etcd看Raft协议 首先,什么是etcd?看官方的定义:A highly-available key value store for shared configuration and service discovery. 翻译过来就是:用于配置共享和服务发现的K-V存储仓库。特点:简单:基于HTTP+JSON的API让你用curl就可以轻松使用。安全:可选S转载 2016-04-17 14:34:23 · 3732 阅读 · 0 评论 -
phxpaxos结构图
phxpaxos结构图 通过上面的图我们可以知晓整个 phxpaxos 类分布的全貌:每一个节点的信息由 PNode 类统领,PNode类中包含若干个 Group 实例,这个数量是参数化的,多数的 Group 仅仅是为了高并发,和算法本身无关,这些 Group 实例共享一个网络模块和一个存储模块;Group 与 Instance 实例一一对应,但是 Inst原创 2017-05-16 16:36:27 · 2293 阅读 · 0 评论 -
PaxosStore解读
PaxosStore简介 下面给出微信开源的paxosStore架构:原创 2017-08-31 17:39:57 · 5245 阅读 · 0 评论 -
zookeeper session实现机制
zookeeper session实现机制原创 2017-12-23 18:05:55 · 689 阅读 · 0 评论 -
Lamport 逻辑时钟
分布式系统中按是否存在节点交互可分为三类事件,一类发生于节点内部,二是发送事件,三是接收事件。注意: 以下文章中提及的时间戳如无特别说明,都指的是Lamport 逻辑时钟的时间戳,不是物理时钟的时间戳。 如果a在进程Pi中,b在进程Pj中,Ci(a) = Cj(b)且i < j,那么a在b之前。形式化一点,我们可以把系统事件E上的全序关系“=>”定义为: ...原创 2019-02-11 23:07:45 · 4265 阅读 · 1 评论 -
分布式系统核心—日志
分布式系统的核心组件:日志。有时也叫write-ahead logs 、commit logs 或者事物 logs, 通常指在应用所有的修改之前先写入日志,一般会将重放日志、撤销日志都写进去。 NoSQL数据库、KV存储、Hadoop、raft、paxos 以及版本控制等等,这些中间件或者协议本质上都或多或少依赖于日志,可以发现日志一直都在分布式系统中扮演者非常重要的角色。 ...原创 2019-02-17 17:56:54 · 5905 阅读 · 1 评论 -
一致性模型
一致性模型原创 2018-11-08 16:41:40 · 1011 阅读 · 0 评论 -
基于分布式一致性系统实现的分布式锁的生命期问题探究
基于分布式一致性系统实现的分布式锁的生命期问题探究分布式锁的生命期,即占有分布式锁所有权的Client与Quorum Server之间建立连接上耦合的Session的生命期,依赖着Client与Quorum Server之间定期心跳来更新。Client与Quorum Server,如果在本端...原创 2018-11-08 15:25:53 · 380 阅读 · 1 评论 -
Raft的PreVote实现机制
Raft的PreVote实现机制1. 背景在Basic Raft算法中,当一个Follower与其他节点网络隔离,如下图所示:Follower_2在electionTimeout没收到心跳之后,会发起选举,并转...原创 2018-09-19 23:54:43 · 2531 阅读 · 1 评论 -
分布式一致性系统的动态替换实现机制
分布式一致性系统的动态替换实现机制原创 2017-12-23 18:03:25 · 585 阅读 · 0 评论 -
Quorum Journal Manager原理
Quorum Journal Manager原理 在一个典型的HA集群,两个独立的物理节点配置为NameNodes。在任何时间点,其中之一NameNodes是处于Active状态,另一种是在Standby状态。 Active NameNode负责所有的客户端的操作,而Standby NameNode尽用来保存好足够多的状态,以提供快速的故障恢复能力。 为了保原创 2018-03-11 22:21:08 · 1690 阅读 · 0 评论 -
TiDB系统架构
TiKV架构 TiKV 是一个分布式的 KV 系统,目前是pingCAP公司开源的系统。它采用 Raft 协议保证数据的强一致性,同时使用 MVCC + 2PC 的方式实现了分布式事务的支持。 TiKV的整体架构如下: Placement Driver : Placement Driver (PD) 负责整个集群的管理调度。Node :原创 2017-09-05 23:13:19 · 2965 阅读 · 0 评论 -
zookeeper的服务容量和自我保护实现思考
zookeeper的服务容量和自我保护实现思考1)服务自我保护能力,通过基于租户+Throtting机制,能够对访问请求限流,确保核心服务自我恢复能力; 引入租户管理,为后续限流,性能统计等功能提供一个基础的信息;通过Throtting来达到API的限速(常见的有楼桶算法和令牌桶算法)。2)服务容量扩容能力,通过将部分流量迁移至新搭建Quorum,分散集群访问压力; 通过资源...原创 2018-03-10 16:23:14 · 926 阅读 · 0 评论 -
Zookeeper TTL机制
Zookeeper TTL机制原创 2017-12-23 18:09:59 · 4493 阅读 · 3 评论 -
paxos之Multi-Paxos
paxos之Multi-Paxos与Leader paxos是对一个值达成一致,multi-paxos是运行多个paxos instance来对多个值达成一致,每个paxos instance对一个值达成一致。在一个支持多写并且强一致性的系统中,每个节点都可以接收客户端的写请求,生成redo日志然后开始一个paxos instance的prepare和accept过程。这原创 2017-03-28 16:13:46 · 4376 阅读 · 1 评论 -
测试分布式系统的线性一致性
测试分布式系统的线性一致性参考资料: 1. 测试分布式系统的线性一致性:http://www.jianshu.com/p/bddfce1494d6 2. 使用 Porcupine 进行线性一致性测试:http://www.jianshu.com/p/9aedd234ef62 3. 使用 Chaos 测试分布式系统线性一致性:http原创 2017-10-14 17:17:03 · 929 阅读 · 0 评论 -
PBFT(拜占庭容错)
PBFT(拜占庭容错) 基于拜占庭将军问题,一致性的确保主要分为这三个阶段:预准备(pre-prepare)、准备(prepare)和确认(commit)。流程如下图所示:其中C为发送请求端,0123为服务端,3为宕机的服务端,具体步骤如下:1. Request:请求端C发送请求到任意一节点,这里是02. Pre-Prepa转载 2017-10-06 17:30:07 · 6907 阅读 · 0 评论 -
phxpaxos checkpoint详解
phxpaxos checkpoint详解1. 为什么需要checkpoint状态机是通过由PhxPaxos选出的有序Chosen value(PaxosLog)系列进行状态转移得到的,而这些状态本质上也是一堆数据,但是这堆数据是由开发者自己进行维护的,我们不能要求开发者在这份数据上时刻做到极其严格的正确性, 那么这份数据很有可能因为机器的一些异常或者重启导致丢失,从而影响了数原创 2016-11-23 00:02:33 · 2277 阅读 · 0 评论 -
phxpaxos learn模块解析
phxpaxos learn模块解析原创 2016-11-23 01:32:34 · 1596 阅读 · 0 评论 -
从PhxPaxos中再看Paxos协议
从PhxPaxos中再看Paxos协议 Phxpaxos已经开源了,且他们号称开源和内部使用的是同一套代码,那么作为小厂的程序员可有福了,可以一睹研究一下生产环境下大规模分布式系统是怎样练成的。初看代码可能会比较犯晕,果真生产环境的实现跟《Paxos made code》的复杂度不是一个数量级的,可是复杂归复杂,但毕竟代码中没有用到复杂的Moden C++特性、大量的模板转载 2016-11-21 00:59:29 · 4258 阅读 · 0 评论 -
Vector Clock/Version Clock
Vector Clock/Version Clockphysical clock 机器上的物理时钟,不同的机器在同一个时间点取到的physical clock不一样,之间会存在一定的误差,NTP可以用来控制这个误差,同一个机房内的机器之间的时钟误差可以控制在1us以内,跨机房可以控制在几十ms。两个事件a和b,a在机器M1上physical clock为12点5转载 2016-09-24 22:46:32 · 941 阅读 · 0 评论 -
zookeeper Quorum请求的流程图
zookeeper Quorum请求的流程图 Quorum请求是转发给Leader处理,并且需要得一个Follower Quorum确认的请求。这些请求包括: 1)znode的写操作(OpCode.create,OpCode.delete,OpCode.setData,OpCode.setACL) 2)Session的创建和关闭原创 2016-07-23 23:11:01 · 1758 阅读 · 0 评论 -
zookeeper中的线程总结
zookeeper中的线程总结 zookeeper系统中的线程数量众多,特此总结下,如下图所示:原创 2016-07-23 11:56:21 · 2798 阅读 · 0 评论 -
分布式一致性
分布式一致性分布式系统的一致性问题总是伴随数据复制而生, 数据复制技术在提高分布式系统的可用性、可靠性和性能的同时,却带来了不一致问题。 理想情况下, 多个副本应该是应用透明的, 从外界看来多副本如同单副本, 而事实上维护一致性非常困难。试想一下, 写入新数据时, 某副本所在的服务器宕机,或者突然发生了网络错误, 此时该如何处理? 是继续重试等待故障消失呢,还是放弃写入故障转载 2016-06-10 17:41:41 · 1425 阅读 · 0 评论 -
保证分布式系统数据一致性的6种方案
保证分布式系统数据一致性的6种方案转载于: http://chuansong.me/n/286764951149在电商等业务中,系统一般由多个独立的服务组成,如何解决分布式调用时候数据的一致性? 具体业务场景如下,比如一个业务操作,如果同时调用服务 A、B、C,需要满足要么同时成功;要么同时失败。A、B、C 可能是多个不同部门开发、部署在不同服务器上原创 2016-04-20 00:47:36 · 8896 阅读 · 0 评论 -
分布式配置管理系统QConf
分布式配置管理系统QConf 分布式配置管理系统QConf是360公司开源的系统,详见:https://github.com/Qihoo360/QConf 整体架构图如下: 资料:1. https://github.com/Qihoo360/QConf 2. http://mp.weixi原创 2016-01-10 21:33:43 · 2197 阅读 · 0 评论 -
ZooKeeper 典型应用场景一览
ZooKeeper 典型应用场景一览数据发布与订阅(配置中心)发布与订阅模型,即所谓的配置中心,顾名思义就是发布者将数据发布到ZK节点上,供订阅者动态获取数据,实现配置信息的集中式管理和动态更新。例如全局的配置信息,服务式服务框架的服务地址列表等就非常适合使用。1. 应用中用到的一些配置信息放到ZK上进行集中管理。这类场景通常是这样:应用在启动的时候会主动来获取一次配置,同时,在节转载 2015-12-13 21:48:13 · 759 阅读 · 0 评论 -
Raft协议处理各种failover情况
Raft协议处理各种failover情况Raft 协议的易理解性描述虽然 Raft 的论文比 Paxos 简单版论文还容易读了,但论文依然发散的比较多,相对冗长。读完后掩卷沉思觉得还是整理一下才会更牢靠,变成真正属于自己的。这里我就借助前面黑白棋落子里第一种极简思维来描述和概念验证下 Raft 协议的工作方式。在一个由 Raft 协议组织的集群中有三类角色:转载 2017-03-28 21:48:13 · 4595 阅读 · 4 评论 -
PaxosLease:实现租约的无盘Paxos算法
PaxosLease:实现租约的无盘Paxos算法 英文:PaxosLease: Diskless Paxos for Leases 中文:http://dsdoc.net/paxoslease/index.html原创 2017-05-06 20:53:46 · 950 阅读 · 0 评论 -
Raft 的优化
Raft 的优化Simple Request Flow这里首先介绍一下一次简单的 Raft 流程:Leader 收到 client 发送的 request。Leader 将 request append 到自己的 log。Leader 将对应的 log entry 发送给其他的 follower。Leader 等待 follower 的结果,如果大多转载 2017-09-11 22:20:57 · 1487 阅读 · 0 评论 -
Basic Paxos算法
Basic Paxos算法背景Paxos算法是Lamport于1990年提出的一种基于消息传递的一致性算法。由于算法难以理解起初并没有引起人们的重视,使Lamport在八年后重新发表到TOCS上。即便如此paxos算法还是没有得到重视,2001年Lamport用可读性比较强的叙述性语言给出算法描述。可见Lamport对paxos算法情有独钟。近几年paxos算法的普遍使原创 2016-09-25 00:04:24 · 2621 阅读 · 1 评论