提交 fd14cb02 编写于 作者: Y yeasy

Updates content

上级 a7504d01
# 区块链技术指南
0.5.0
0.5.1
区块链技术是比特币网络系统的主要支撑技术。
......
......@@ -20,9 +20,11 @@
* [问题定义](consensus/problem.md)
* [FLP 不可能性原理](consensus/flp.md)
* [CAP 原理](consensus/cap.md)
* [ACID 原则](consensus/acid.md)
* [拜占庭相关问题与算法](consensus/bft.md)
* [可靠性指标](consensus/availability.md)
* [小结](consensus/summary.md)
* [Paxos 与 Raft](consensus/paxos.md)
* [密码学相关知识](crypto/README.md)
* [hash 算法](crypto/hash.md)
* [数字摘要](crypto/digest.md)
......
## ACID 原则
即 Atomicity(原子性)、Consistency(一致性)、Isolation(隔离性)、Durability(持久性)。对分布式数据库的一致性,付出可用性的代价。
* Atomicity
* Consistency
* Isolation
* Durability
一个与之相对的原则是 BASE(Basic Availiability,Soft state,Eventually Consistency),牺牲掉对一致性的约束(最终一致性),来换取一定的可用性。
......@@ -30,26 +30,9 @@ Leslie Lamport 证明,当叛变者不超过 $$\frac{1}{3}$$ 时,存在有效
面向拜占庭问题的算法,解决的是网络通信可靠,但节点可能故障情况下的一致性达成。
最早由 Castro 和 Liskov 在 1999 年提出的 PBFT 是第一个得到广泛应用的 BFT 算法。只要系统中有 2\/3 的节点是正常工作的,则可以保证一致性。
最早由 Castro 和 Liskov 在 1999 年提出的 PBFT 是第一个得到广泛应用的 BFT 算法。只要系统中有 $$\frac{2}{3}$$ 的节点是正常工作的,则可以保证一致性。
### Paxos
1990 年由 Leslie Lamport 提出的 [Paxos](http://research.microsoft.com/users/lamport/pubs/lamport-paxos.pdf) 一致性算法,在工程角度实现了一种最大化保障一致性(极小的概率无法实现一致性)的机制。
Paxos 是第一个被证明的一致性算法,其原理是现在一致性算法设计的鼻祖,然而以复杂难懂出名。
Paxos 被应用在 Chubby、ZooKeeper 这样的系统中。
### Raft
[Raft](https://ramcloud.atlassian.net/wiki/download/attachments/6586375/raft.pdf) 算法是Paxos 算法的一种简化实现。
包括三种角色:leader、candiate 和 follower,其基本过程为:
* Leader 选举:每个 candidate 随机经过一定时间都会提出选举方案,最近阶段中得票最多者被选为 leader;
* 同步 log:leader 会找到系统中 log 最新的记录,并强制所有的 follower 来刷新到这个记录;
_注:此处 log 并非是指日志消息,而是各种事件的发生记录。_
### 新的解决思路
......
......@@ -18,7 +18,7 @@ CAP 原理最早由 Eric Brewer 在 2000 年,ACM 组织的一个研讨会上
### 应用
既然 CAP 不可同时满足,则设计系统时候必然要牺牲掉至少一个特性
既然 CAP 不可同时满足,则设计系统时候必然要弱化对某个特性的支持
#### 不保证一致性
对结果一致性不敏感的应用,可以允许在新版本上线后过一段时间才更新成功,期间不保证一致性。例如网站静态页面内容、实时性较弱的查询类数据库等。
......
......@@ -6,7 +6,9 @@
理解这一原理的一个不严谨的例子是:
三个人在不同房间,进行投票(投票结果是 0 或者 1)。三个人彼此可以通过电话进行沟通,但经常会有人时不时地睡着。比如某个时候,A 投票 0,B 投票 1,C 收到了两人的投票,然后 C 睡着了。A 和 B 则永远无法获知最终的结果。
三个人在不同房间,进行投票(投票结果是 0 或者 1)。三个人彼此可以通过电话进行沟通,但经常会有人时不时地睡着。比如某个时候,A 投票 0,B 投票 1,C 收到了两人的投票,然后 C 睡着了。A 和 B 则永远无法在有限时间内获知最终的结果。
FLP 原理实际上说明对于允许节点失效情况下,纯粹异步系统无法确保一致性在有限时间内完成。
那么,退一步讲,在某些限制情况下,我们能做到多少?
......
## Paxos 与 Raft
### Paxos
1990 年由 Leslie Lamport 提出的 [Paxos](http://research.microsoft.com/users/lamport/pubs/lamport-paxos.pdf) 一致性算法,在工程角度实现了一种最大化保障一致性(极小的概率无法实现一致性)的机制。
Paxos 是第一个被证明的一致性算法,其原理是现在一致性算法设计的鼻祖,然而以复杂难懂出名。
Paxos 被应用在 Chubby、ZooKeeper 这样的系统中。
### Raft
[Raft](https://ramcloud.atlassian.net/wiki/download/attachments/6586375/raft.pdf) 算法是Paxos 算法的一种简化实现。
包括三种角色:leader、candiate 和 follower,其基本过程为:
* Leader 选举:每个 candidate 随机经过一定时间都会提出选举方案,最近阶段中得票最多者被选为 leader;
* 同步 log:leader 会找到系统中 log 最新的记录,并强制所有的 follower 来刷新到这个记录;
*注:此处 log 并非是指日志消息,而是各种事件的发生记录。*
\ No newline at end of file
......@@ -26,7 +26,7 @@
当节点之间的通信网络自身不可靠情况下,很显然,无法确保实现一致性。但好在,一个设计得当的网络可以在大概率上实现可靠的通信。
然而,**即便在网络通信可靠情况下,一个可扩展的分布式系统的一致性问题无解。**
然而,**即便在网络通信可靠情况下,一个可扩展的分布式系统的一致性问题的下限是无解。**
这个结论,被称为 `FLP 不可能性` 原理。
......
......@@ -88,6 +88,14 @@ levelDB、RocksDB 等键值数据库,具备很高的随机写和顺序读\/写
笔者认为,未来将可能出现更具针对性的“块数据库(BlockDB)”,专门服务类似区块链这样的新型数据业务,其中每条记录将包括一个完整的区块信息,并天然的跟历史信息进行关联。所有操作的最小单位将是区块。
### 集成性
在相当长的一段时间内,基于区块链的系统将于已有的中心化系统共存。
两种系统如何共存,如何分工,彼此的业务交易如何进行传递?
这些都是很迫切的问题。
### 其它
区块链的应用也带来了对很多问题的新思考和新需求。
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册