raft共识算法 分布式一致性问题 如果说,服务器只有一个节点,那么,要保证一致性,没有任何问题,因为所有读写都在一个节点上发生.那如果server端有2个.3个甚至更多节点,要怎么达成一致性呢?下面就来介绍其中一种分布式共识算法---raft算法 Raft是什么 1.历史背景 在讲Raft前,有必要提一下Paxos算法,Paxos算法是Leslie Lamport于1990年提出的基于消息传递的一致性算法.然而,由于算法难以理解,刚开始并没有得到很多人的重视.其后,作者在八年后,也就是1998…
Raft共识算法 一.背景 拜占庭将军问题是分布式领域最复杂.最严格的容错模型.但在日常工作中使用的分布式系统面对的问题不会那么复杂,更多的是计算机故障挂掉了,或者网络通信问题而没法传递信息,这种情况不考虑计算机之间互相发送恶意信息,极大简化了系统对容错的要求,最主要的是达到一致性. 所以将拜占庭将军问题根据常见的工作上的问题进行简化:假设将军中没有叛军,信使的信息可靠但有可能被暗杀的情况下,将军们如何达成一致性决定? 对于这个简化后的问题,有许多解决方案,第一个被证明的共识算法是 Paxos,…
转载请注明出处:https://www.cnblogs.com/morningli/p/16770129.html 之前都在集群配置是固定的(参与共识算法的server集合)假设下讨论raft.在实践中,偶尔有需要改变配置,比如说当server故障时替换server,或者改变复制级别.虽然可以通过下线整个集群,更新配置文件,重启集群来实现,但是这样会导致集群在改变的过程中一直不可用.另外,人工操作存在操作错误的风险.为了避免这样的问题,raft通过自动化配置变更并将它包含到raft共识算法中.…
转载请注明出处:https://www.cnblogs.com/morningli/p/16745294.html raft是一种管理复制日志的算法,raft可以分解成三个相对独立的子问题: 选主(Leader election):原有的leader故障后需要选举一个新的leader. 复制(Log replication): leader必须接受client发送的记录(log entries)然后复制到集群中其他节点,并强制要求其他节点的日志和自己保持一致. 安全(Safety):raft安全…
前言 在Hyperledger Fabric无系统通道启动及通道的创建和删除中,我们已经完成了以无系统通道的方式启动 Hyperledger Fabric 网络,并将链码安装到指定通道.但目前为止,实验中的 orderer 服务都是通过单独的排序组织来维护且只有一个,那能不能不要排序组织而使用普通组织来运行维护多个 orderer 服务呢?当然是可以的,本文将在之前的实验基础上,启动一个没有 orderer 组织的 Fabric 网络,网络中包含三个组织且每个组织运行维护着一个 Raft 协议的…
引言 Hyperledger Fabric是当前比较流行的一种联盟链系统,它隶属于Linux基金会在2015年创建的超级账本项目且是这个项目最重要的一个子项目.目前,与Hyperledger的另外几个子项目Hyperledger Iroha,Hyperledger Indy和Hyperledger Sawtooth一样,Hyperledger Fabric正处于生命周期中的活跃(active)阶段,它的架构设计正在不断地完善并持续为开发者和用户提供更强大,更便捷的区块链服务. 与主流的区块链系统…
转自:https://www.cnblogs.com/davidwang456/articles/9001331.html 区块链技术中,共识算法是其中核心的一个组成部分.首先我们来思考一个问题:什么是共识?对于现实世界,共识就是一群人对一件或者多件事情达成一致的看法或者协议.那么在计算机世界当中,共识是什么呢? 我的理解包含两个层面,第一个层面是点的层面,即多个节点对某个数据达成一致共识.第二个层面是线的层面,即多个节点对多个数据的顺序达成一致共识.这里的节点可以是任意的计算机设备,比如pc电…
Raft consensus in swarm mode 在集群模式中的Raft共识 当Docker引擎在集群模式下运行时,manager节点实现Raft 共识算法来管理全局集群状态.Docker swarm模式使用共识算法的原因是为了确保集群中负责管理和调度任务的所有manager节点都存储相同的一致性状态.跨集群具有相同的一致状态意味着在出现故障时,任何管理器节点都可以接收任务并将服务恢复到稳定状态.例如,如果集群中负责调度任务的Leader Manager意外死亡,那么任何其他Manage…
这个测试网络一方面可以用来学习Fabric,另一方面也可以让一些更有经验的开发者来测试他们的智能合约和应用,但是不建议用于生产环境,在2.0版本后,这个测试网络也取代了原来的"first-network". 1.启动测试网络 首先进入clone好项目的目录,执行如下命令进入测试网络所在文件夹 cd fabric-samples/test-network 在这里可以看到一个network.sh文件,执行./network.sh -h可以看到它的使用说明 下面这条命令会移除先前所有运行中的…
在之前讲解了比特币中的共识算法pow(proot of work),我们先来简单的回顾一下. 新的交易将会广播给所有节点. 每个节点将都会讲新的交易收集到一个区块中. 每个节点都在为其区块收集困难的工作量证明. 当节点发现工作量证明时,它会将该区块的情况广播给所有节点. 只有在节点中的所有交易都有效且尚未使用时,节点才接受该区块. 节点通过在链中创建下一个区块来表达他们对之前区块的接受,使用之前所接受区块的散列值作为前一个散列值. 节点始终认为最长的链是正确的,并将继续努力扩展这个链. 这个需要…