本文旨在讲述如何使用 Java 语言实现基于 Raft 算法的,分布式的,KV 结构的存储项目。该项目的背景是为了深入理解 Raft 算法,从而深刻理解分布式环境下数据强一致性该如何实现;该项目的目标是:在复杂的分布式环境中,多个存储节点能够保证数据强一致性。 ...
分类:
编程语言 时间:
2019-01-12 14:18:52
阅读次数:
187
一、etcd介绍: ETCD 是一个高可用的分布式键值数据库,可用于服务发现。ETCD 采用 raft 一致性算法,基于 Go 语言实现。etcd作为一个高可用键值存储系统,天生就是为集群化而设计的。由于Raft算法在做决策时需要多数节点的投票,所以etcd一般部署集群推荐奇数个节点,推荐的数量为3 ...
分类:
其他好文 时间:
2019-01-08 12:29:32
阅读次数:
245
raft共识算法 分布式一致性问题 如果说,服务器只有一个节点,那么,要保证一致性,没有任何问题,因为所有读写都在一个节点上发生。那如果server端有2个、3个甚至更多节点,要怎么达成一致性呢?下面就来介绍其中一种分布式共识算法 raft算法 Raft是什么 1.历史背景 在讲Raft前,有必要提 ...
分类:
编程语言 时间:
2018-12-18 17:23:38
阅读次数:
299
简单介绍下集群数据同步,集群监控用到的两种常见算法。 Raft算法 raft 集群中的每个节点都可以根据集群运行的情况在三种状态间切换:follower, candidate 与 leader。leader 向 follower 同步日志,follower 只从 leader 处获取日志。在节点初始 ...
分类:
编程语言 时间:
2018-10-10 12:04:24
阅读次数:
299
一、前言 五、参考资料 1.分布式理论(六)—— Raft 算法 2.分布式理论(六) - 一致性协议Raft ...
分类:
编程语言 时间:
2018-09-17 11:34:14
阅读次数:
147
参考文章:《InSearchofanUnderstandableConsensusAlgorithm》https://raft.github.io/http://thesecretlivesofdata.com/raft/这里有一个非常适合理解raft协议的小动画。1.1.1简介概念:raft是一种用于管理log复制的一致性协议,它和paxos有同样功能,但是比它简单容易理解。功能:leader选
分类:
编程语言 时间:
2018-08-10 17:03:59
阅读次数:
184
一、ETCD 概述 是一个分布式一致性k v存储系统,可用于服务注册发现与共享配置。具有一下优点: 简单: 相比于晦涩难懂的paxos算法,etcd基于相对简单且易实现的raft算法实现一致性,并通过gRPC提供接口调用 安全:支持TLS通信,并可以针对不同的用户进行对key的读写控制 高性能:10 ...
分类:
其他好文 时间:
2018-08-02 00:09:24
阅读次数:
220
接触到RAFT是在学习KUDU的时候,KUDU的官方文档中一个连接指向了RAFT;只是觉得这个算法一定有其特点,要知道KUDU可以是一帮HBASE的大神写的。原始开始了解。 RAFT是一致性算法,说到一致性算法很多都会想到zookeeper,是的,这是我们接触比较多的内部包含一致性算法的应用产品了。... ...
分类:
编程语言 时间:
2018-07-10 13:41:48
阅读次数:
292
zookeeper基于paxos的化简版zab,etcd基于raft算法、consul也是基于raft算法。etcd和consul作为后起之秀,并没有因为已经有了zookeeper而放弃自己,而是采用更为直接的raft算法。 原文 http://luyiisme.github.io/2017/04/ ...
分类:
其他好文 时间:
2018-07-04 10:38:04
阅读次数:
176
前言 之前的两篇文章更多的是在描述Raft算法的正常流程,没有过多的去讨论异常场景。 而实际在分布式系统中,我们更多的都是在应对网络不可用、机器故障等异常场景,所以本篇来讨论一下Raft协议的安全性,即在异常场景下是否会导致数据丢失、数据不一致等情况。 选举限制 在Raft协议中,所有的日志条目都只 ...
分类:
其他好文 时间:
2018-05-02 11:10:10
阅读次数:
136