‘壹’ 为什么去中心化了还能升级
因为中心化是需要一定的更新升级的,
升级是需要社区对此有一致的共识,如果不能达成共识。
则任何人都可以实施硬分叉,另建一个社区、一条链。这就是共识机制的去中心化过程。
架构中心化是指系统能容忍多少节点的崩溃而可以继续运行;治理中心化是指需要多少的个人和组织能最终控制这个系统;逻辑中心化是指系统呈现的接口和数据是否像是一个单一的整体。
区块链是全网统一的账本,因此从逻辑上看是中心化的,这一点无可置疑。从架构上看,区块链是基于对等网络的,因此是架构去中心化的。
从治理上看,区块链通过共识算法使得少数人很难控制整个系统,因此是治理去中心化的。架构和治理上的去中心化为区块链带来三个好处:容错性、抗攻击力和防合谋。
从区块链诞生以来,去中心化一直被业界作为区块链的核心属性之一。但最近一段时间以来,国内一些业界大佬纷纷开始否认这一点。
甚至有人声称去中心化这个词是区块链行业翻译产生的重大误导,呼吁翻译成“点对点”,任何区块链应用的规则制定者就是根本的中心。
这是一种极其错误的倾向,可能会误导很多区块链创业者,使其在探索区块链应用落地的过程中走弯路。
‘贰’ 有没有大佬,知道java分布式怎么实现单列模式。描述一个大概的原理就OK。感谢!
好奇怪的问题,分布式和单例模式没什么关系吧。
或许你想问的是如何实现分布式事务,或者分布式环境下变量的一致性,
如果是这样一个问题,就等价于多进程之间如何共享内存。
两种方法,一种是通过磁盘来共享内存,走的是操作系统层面的技术。
另一种是一致性算法,通常有paxos和raft两种,前者有zookeeper这个分布式组件可用
‘叁’ 开源的容器集群管理系统是什么意思
和Doozer,它使用Go语言编写,并通过Raft一致性算法处理日志复制以保证强一致性。Google的容器集群管理系统Kubernetes、开源PaaS平台CloudFoundry和CoreOS的Fleet都
‘肆’ 分布式共识包含哪三种方法
PoW 、PoS 、DPOW都是什么意思?
说到区块链,我们必然会谈及它的共识机制。不了解区块链的共识机制,就无法理解区块链的真正意义。那么,今日份的区块链的共识机制了解一下?
共识机制是什么?
什么是共识?直取它的字面意思,就是"共同的认识".
人与人是不同的,这种不同不仅体现在身材、长相、能力,更体现在文化、观点、想法、利益诉求等等方面。
共识,简而言之,就是一个群体的成员在某一方面达成的一致意见。
我们了解到,信任是社会运转中的一大痛点,银行有自己的信用体系,过去的金融体系服务于只服务于极少的企业家,因为建立信用体系耗资巨大。后来支付宝有了芝麻信用,信用已经关系到生活的很多方面,信用卡额度、花呗额度,芝麻信用高出国还可以免签。我们正享受着信用给我们带来的便捷。
区块链本质是去中心化,去中心化的核心是共识机制,区块链上的共识机制主要解决由谁来构造区块,以及如何维护区块链统一的问题。
区块链共识机制的目标是使所有的诚实节点保存一致的区块链视图,同时满足两个性质:
1)一致性:所有诚实节点保存的区块链的前缀部分完全相同。
2)有效性:由某诚实节点发布的信息终将被其他所有诚实节点记录在自己的区块链中。
区块链的自信任主要体现于分布于区块链中的用户无须信任交易的另一方,也无须信任一个中心化的机构,只需要信任区块链协议下的软件系统即可实现交易。
共识机制是什么?PoW 、PoS 、DPOW都是什么意思?
共识机制的必要性?
分布式系统中,多个主机通过异步通信方式组成网络集群。在这样的一个异步系统中,需要主机之间进行状态复制,以保证每个主机达成一致的状态共识。错误信息可能出现在异步系统内并不断传播,因此需要在默认不可靠的异步网络中定义容错协议,以确保各主机达成安全可靠的状态共识,这就是共识机制诞生的必要性。
这种自信任的前提是区块链的共识机制(consensus),即在一个互不信任的市场中,要想使各节点达成一致的充分必要条件是每个节点出于对自身利益最大化的考虑,都会自发、诚实地遵守协议中预先设定的规则,判断每一笔记录的真实性,最终将判断为真的记录记入区块链之中。attachments-2018-08-9yY7VRHa5b738e3d96021.jpg
换句话说,如果各节点具有各自独立的利益并互相竞争,则这些节点几乎不可能合谋欺骗你,而当节点们在网络中拥有公共信誉时,这一点体现得尤为明显。区块链技术正是运用一套基于共识的数学算法,在机器之间建立"信任"网络,从而通过技术背书而非中心化信用机构来进行全新的信用创造。
当今区块链的几种共识机制介绍
区块链上的共识机制有多种,但任何一种都不是完美无缺,或者说适用于所有应用场景的。
PoW 工作量证明
整个系统中每个节点为整个系统提供计算能力(简称算力),通过一个竞争机制,让计算工作完成最出色的节点获得系统的奖励,即完成新生成货币的分配,简单理解就是多劳多得,bitcoin、LTC等货币型区块链就应用POW机制。
优点
完全去中心化节点自由进出,算法简单,容易实现破坏系统花费的成本巨大,只要网络破坏者的算力不超过网络总算力的50%,网络的交易状态就能达成一致
缺点
浪费能源,这是最大的缺点区块的确认时间难以缩短,如bitcoin每秒只能做7笔交易,不适合商业应用新的区块链必须找到一种不同的散列算法,否则就会面临bitcoin的算力攻击对节点的性能网络环境要求高容易产生分叉,需要等待多个确认无法达成最终一致性
PoS 权益证明
也称股权证明,类似于你把财产存在银行,这种模式会根据你持有加密货币的数量和时间,分配给你相应的利息。
优点
对节点性能要求低,达成共识时间短
缺点
没有最终一致性,需要检查点机制来弥补最终性
DPOW 委托股权证明
DPOW是 PoS 的进化方案,在常规 PoW和 PoS 中,任何一个新加入的区块,都需要被整个网络所有节点做确认,非常影响效率。
DPoS则类似于现代董事会的投票机制,通过选举代表来进行投票和决策。被选举出的n个记账节点来做新区块的创建、验证、签名和相互监督,这样就极大地减少了区块创建和确认所需要消耗的时间和算力成本。
优点
大幅缩小参与验证和记账节点的数量,可以达到秒级的共识验证
缺点
牺牲了去中心化的概念,不适合公有链
PBFT 实用拜占庭容错
实用拜占庭容错机制是一种采用"许可投票、少数服从多数"来选举领导者并进行记账的共识机制,该共识机制允许拜占庭容错,允许强监督节点参与,具备权限分级能力,性能更高,耗能更低,而且每轮记账都会由全网节点共同选举领导者,允许33%的节点作恶,容错率为33%.实用拜占庭容错特别适合联盟链的应用场景。
优点
会背离中心化,加密货币的存在及奖励机制会产生马太效应,让社区中的穷者更穷,富者更富共识效率高,可实现高频交易
缺点
当系统只剩下33%的节点运行时,系统会停止运行
dBFT 授权拜占庭容错
这种机制是用权益来选出记账人,然后记账人之间通过拜占庭容错算法达成共识。授权拜占庭容错机制最核心的一点,就是最大限度地确保系统的最终性,使区块链能够适用于真正的金融应用场景。
优点
专业化的记账人可以容忍任何类型的错误记账由多人协同完成,每一个区块都有最终性,不会分叉算法的可靠性有严格的数学证明
缺点
当三分之一或以上记账人停止工作后,系统将无法提供服务当三分之一或以上记账人联合作恶,可能会使系统出现分叉
Pool 验证池
基于传统的分布式一致性技术,加上数据验证机制。
优点
不需要加密货币也可以工作,在成熟的分布式一致性算法(Pasox、Raft)基础上,实现秒级共识验证。
缺点
去中心化程度不如bitcoin,更适合多方参与的多中心商业模式。
Paxos
这是一种传统的分布式一致性算法,是一种基于选举领导者的共识机制。领导者节点拥有绝对权限,并允许强监督节点参与,其性能高,资源消耗低。所有节点一般有线下准入机制,但选举过程中不允许有作恶节点,不具备容错性。
Paxos算法中将节点分为三种类型:
proposer:提出一个提案,等待大家批准为结案。往往是客户端担任该角色
acceptor:负责对提案进行投票。往往是服务端担任该角色
learner:被告知结案结果,并与之统一,不参与投票过程。可能为客户端或服务端
Paxos 能保证在超过50%的正常节点存在时,系统能达成共识。
瑞波共识机制
瑞波共识算法使一组节点能够基于特殊节点列表形成共识,初始特殊节点列表就像一个俱乐部,要接纳一个新成员,必须由该俱乐部51%的会员投票通过。共识遵循这些核心成员的"51%权利",外部人员则没有影响力。由于该俱乐部由中心化开始,它将一直是中心化的,而如果它开始腐化,股东们什么也做不了。与bitcoin及Peercoin一样,瑞波系统将股东们与其投票权隔开,因此,它比其他系统更中心化。
Peercoin
Peercoin(点点币,PPC),混合了POW工作量证明及POS权益证明方式,其中POW主要用于发行货币,未来预计随着挖矿难度上升,产量降低,系统安全主要由POS维护。
在区块链网络中,由于应用场景的不同,所设计的目标各异,不同的区块链系统采用了不同的共识算法。每种共识算法都不是完美的,都有其优点和局限性。
区块链解决了在不可信信道上传输可信信息、价值转移的问题,而共识机制解决了区块链如何分布式场景下达成一致性的问题。
虽然区块链目前还处于发展的早期,行业发展还面临着一些阻碍,但社会已经足够多地认识到区块链的价值,区块链发展的脚步绝不会停滞不前,行业发展也定会找到突破阻碍的方法。
‘伍’ 请教个etcd中的raft算法问题
etcd是一个高可用的键值存储系统,主要用于共享配置和服务发现。etcd是由CoreOS开发并维护的,灵感来自于 ZooKeeper 和 Doozer,它使用Go语言编写,并通过Raft一致性算法处理日志复制以保证强一致性。Raft是一个来自Stanford的新的一致性算法,适用于分布式系统的日志复制,Raft通过选举的方式来实现一致性,在Raft中,任何一个节点都可能成为Leader。Google的容器集群管理系统Kubernetes、开源PaaS平台Cloud Foundry和CoreOS的Fleet都广泛使用了etcd。
‘陆’ etcd是什么东西它和ZooKeeper有什么区别
etcd是一个高可用的键值存储系统,主要用于共享配置和服务发现。
etcd是由CoreOS开发并维护的,灵感来自于 Zo好eeper 和 Doozer,它使用Go语言编写,并通过Raft一致性算法处理日志复制以保证强一致性。
Raft是一个来自Stanford的新的一致性算法,适用于分布式系统的日志复制,Raft通过选举的方式来实现一致性,在Raft中,任何一个节点都可能成为Leader。
Google的容器集群管理系统Kubernetes、开源PaaS平台Cloud Foundry和CoreOS的Fleet都广泛使用了etcd。
etcd 集群的工作原理基于 raft 共识算法 (The Raft Consensus Algorithm)。
etcd 在 0.5.0 版本中重新实现了 raft 算法,而非像之前那样依赖于第三方库 go-raft 。
raft 共识算法的优点在于可以在高效的解决分布式系统中各个节点日志内容一致性问题的同时,也使得集群具备一定的容错能力。
即使集群中出现部分节点故障、网络故障等问题,仍可保证其余大多数节点正确的步进。
甚至当更多的节点(一般来说超过集群节点总数的一半)出现故障而导致集群不可用时,依然可以保证节点中的数据不会出现错误的结果。
‘柒’ golang有没有好的开源游戏框架
Go作为近两年迅速流行起来的编程语言始终致力于使事情简单化。它并未引入很多新概念,而是聚焦于打造一门简单的语言,让开发者使用起来感觉异常快速且简单。相信有意向深入学习Go语言的小伙伴都在研究Go的开源项目,今天我就把自己觉得不错的6个Go开源项目推荐给大家,希望大家能获得收获和成长。
推荐一:kubernetes 【Star:44418】
Kubernetes基于Docker,其目的是让用户通过Kubernetes集群来进行云端容器集群的管理,而无需用户进行复杂的设置工作。系统会自动选取合适的工作节点来执行具体的容器集群调度处理工作。
推荐二:etcd 【Star:21408】
etcd是由CoreOS开发并维护键值存储系统,它使用Go语言编写,并通过Raft一致性算法处理日志复制以保证强一致性。目前,Google的容器集群管理系统Kubernetes、开源PaaS平台Cloud Foundry和CoreOS的Fleet都广泛使用了etcd。
推荐三:deis 【Star:6093】
Deis是一个基于Docker和CoreOS的开源PaaS平台,旨在让部属和管理服务器上的应用变得轻松容易。它可以运行在AWS、GCE以及Openstack平台下。
推荐四:flynn 【Star:6936】
Flynn是一个使用Go语言编写的开源PaaS平台,可自动构建部署任何应用到Docker容器集群上运行。Flynn项目受到Y Combinator的支持,目前仍在开发中,被称为是下一代的开源PaaS平台。
推荐五:lime 【Star:13775】
相对上面的几款Go语言在云端和服务器端之外,Lime则显得比较特殊。Lime,则是一款用Go语言写的桌面编辑器程序,被看做是着名编辑器Sublime Text的开源实现。
六:revel 【Star:10508】
Revel是一个高生产力的Go语言Web框架。Revel框架支持热编译,当编辑、保存和刷新源码时,Revel会自动编译代码和模板;全栈特性,支持路由、参数解析、缓存、测试、国际化等功能。
‘捌’ raft算法与paxos算法相比有什么优势,使用场景有什么差异
Paxos算法解决的问题是一个分布式系统如何就某个值(决议)达成一致。一个典型的场景是,在一个分布式数据库系统中,如果各节点的初始状态一致,每个节点都执行相同的操作序列,那么他们最后能得到一个一致的状态。为保证每个节点执行相同的命令序列,需要在每一条指令上执行一个“一致性算法”以保证每个节点看到的指令一致。一个通用的一致性算法可以应用在许多场景中,是分布式计算中的重要问题。因此从20世纪80年代起对于一致性算法的研究就没有停止过。节点通信存在两种模型:共享内存(Sharedmemory)和消息传递(Messagespassing)。Paxos算法就是一种基于消息传递模型的一致性算法。不仅只用在分布式系统,凡是多个过程需要达成某种一致性的都可以用到Paxos算法。一致性方法可以通过共享内存(需要锁)或者消息传递实现,Paxos算法采用的是后者。下面是Paxos算法适用的几种情况:一台机器中多个进程/线程达成数据一致;分布式文件系统或者分布式数据库中多客户端并发读写数据;分布式存储中多个副本响应读写请求的一致性。Lamport最初Paxos算法的论文ThePart-TimeParliament在理解起来比较有挑战性,个人认为部分原因是Lamport通过故事的方式来表述、解释这个问题,所以在阅读文章的时候读者需要透过故事讲的本身看到作者想说明什么。比如文章中会有很多讲到Paxos文明没有被发现和考证的,这些映射到实际系统中往往是简单、大家都心知肚明的基础,但如果读者苦于想知道这些内容是什么时,就上当了。下面章节安排如下:第二节对应原文的1.1-2.1。第三节对应原文2.2-3.2。
‘玖’ OceanBase的一致性协议为什么选择 paxos而不是raft
基于Raft的分布式一致性协议实现的局限及其对数据库的风险普通服务器具有良好的性价比,因此在互联网等行业得到了广泛的应用。但普通服务器也不得不面对2%-4%的年故障率([1]),于是必须高可用的传统数据库只得很悲催地使用性价比低得可怜的高可靠服务器。分布式一致性协议(distributed consensus protocol)是迄今为止最有效的解决服务器不可靠问题的途径,因为它使得一组服务器形成一个相互协同的系统,从而当其中部分服务器故障后,整个系统也能够继续工作。而Paxos协议([2])则几乎成了分布式一致性协议的代名词。然而,Paxos协议的难以理解的名声似乎跟它本身一样出名。为此,Stanford大学的博士生Diego Ongaro甚至把对Paxos协议的研究作为了博士课题。他在2014年秋天正式发表了博士论文:“CONSENSUS: BRIDGING THEORY AND PRACTICE”,在这篇博士论文中,他给出了分布式一致性协议的一个实现算法,即Raft。由于这篇博士论文很长(257页),可能是为了便于别人阅读和理解,他在博士论文正式发表之前,即2014年初,把Raft相关的部分摘了出来,形成了一篇十多页的文章:“In Search of an Understandable Consensus Algorithm”,即人们俗称的Raft论文。Raft算法给出了分布式一致性协议的一个比较简单的实现,到目前为止并没有人挑战这个算法的正确性。然而,OceanBase却没有采用Raft算法,这并非是OceanBase团队同学不懂Raft,而是Raft的一个根本性的局限对数据库的事务有很大的风险。Raft有一个很强的假设是主(leader)和备(follower)都按顺序投票,为了便于阐述,以数据库事务为例:·主库按事务顺序发送事务日志·备库按事务顺序持久化事务和应答主库
‘拾’ 云溪软件怎么复制层板
云溪数据库是分布式数据库,与 OceanBase、CockroachDB、TiDB 一样都是NewSQL 家族的一员。云溪数据库具备强一致、高可用的分布式架构,能够水平扩展,提供企业级的安全特性,完全兼容 PostgreSQL 协议,能够为用户提供完整的分布式数据库解决方案。
云溪数据库各方面的强一致性都通过 Raft 算法实现。首先,Raft 算法保证分布式多副本之间数据强一致性以及外部读写的一致性。简而言之,云溪数据库中数据会有多个副本