Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenDocCN
blockchain_guide
提交
fd14cb02
B
blockchain_guide
项目概览
OpenDocCN
/
blockchain_guide
通知
0
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
B
blockchain_guide
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
fd14cb02
编写于
7月 21, 2016
作者:
Y
yeasy
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Updates content
上级
a7504d01
变更
9
隐藏空白更改
内联
并排
Showing
9 changed file
with
47 addition
and
22 deletion
+47
-22
README.md
README.md
+1
-1
SUMMARY.md
SUMMARY.md
+2
-0
consensus/acid.md
consensus/acid.md
+10
-0
consensus/bft.md
consensus/bft.md
+1
-18
consensus/cap.md
consensus/cap.md
+1
-1
consensus/flp.md
consensus/flp.md
+3
-1
consensus/paxos.md
consensus/paxos.md
+20
-0
consensus/problem.md
consensus/problem.md
+1
-1
intro/tech.md
intro/tech.md
+8
-0
未找到文件。
README.md
浏览文件 @
fd14cb02
# 区块链技术指南
0.
5.
0
0.
5.
1
区块链技术是比特币网络系统的主要支撑技术。
...
...
SUMMARY.md
浏览文件 @
fd14cb02
...
...
@@ -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
)
...
...
consensus/acid.md
0 → 100644
浏览文件 @
fd14cb02
## ACID 原则
即 Atomicity(原子性)、Consistency(一致性)、Isolation(隔离性)、Durability(持久性)。对分布式数据库的一致性,付出可用性的代价。
*
Atomicity
*
Consistency
*
Isolation
*
Durability
一个与之相对的原则是 BASE(Basic Availiability,Soft state,Eventually Consistency),牺牲掉对一致性的约束(最终一致性),来换取一定的可用性。
consensus/bft.md
浏览文件 @
fd14cb02
...
...
@@ -30,26 +30,9 @@ Leslie Lamport 证明,当叛变者不超过 $$\frac{1}{3}$$ 时,存在有效
面向拜占庭问题的算法,解决的是网络通信可靠,但节点可能故障情况下的一致性达成。
最早由 Castro 和 Liskov 在 1999 年提出的 PBFT 是第一个得到广泛应用的 BFT 算法。只要系统中有
2
\/
3
的节点是正常工作的,则可以保证一致性。
最早由 Castro 和 Liskov 在 1999 年提出的 PBFT 是第一个得到广泛应用的 BFT 算法。只要系统中有
$$
\f
rac{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 并非是指日志消息,而是各种事件的发生记录。_
### 新的解决思路
...
...
consensus/cap.md
浏览文件 @
fd14cb02
...
...
@@ -18,7 +18,7 @@ CAP 原理最早由 Eric Brewer 在 2000 年,ACM 组织的一个研讨会上
### 应用
既然 CAP 不可同时满足,则设计系统时候必然要
牺牲掉至少一个特性
。
既然 CAP 不可同时满足,则设计系统时候必然要
弱化对某个特性的支持
。
#### 不保证一致性
对结果一致性不敏感的应用,可以允许在新版本上线后过一段时间才更新成功,期间不保证一致性。例如网站静态页面内容、实时性较弱的查询类数据库等。
...
...
consensus/flp.md
浏览文件 @
fd14cb02
...
...
@@ -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 原理实际上说明对于允许节点失效情况下,纯粹异步系统无法确保一致性在有限时间内完成。
那么,退一步讲,在某些限制情况下,我们能做到多少?
...
...
consensus/paxos.md
0 → 100644
浏览文件 @
fd14cb02
## 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
consensus/problem.md
浏览文件 @
fd14cb02
...
...
@@ -26,7 +26,7 @@
当节点之间的通信网络自身不可靠情况下,很显然,无法确保实现一致性。但好在,一个设计得当的网络可以在大概率上实现可靠的通信。
然而,
**即便在网络通信可靠情况下,一个可扩展的分布式系统的一致性问题无解。**
然而,
**即便在网络通信可靠情况下,一个可扩展的分布式系统的一致性问题
的下限是
无解。**
这个结论,被称为
`FLP 不可能性`
原理。
...
...
intro/tech.md
浏览文件 @
fd14cb02
...
...
@@ -88,6 +88,14 @@ levelDB、RocksDB 等键值数据库,具备很高的随机写和顺序读\/写
笔者认为,未来将可能出现更具针对性的“块数据库(BlockDB)”,专门服务类似区块链这样的新型数据业务,其中每条记录将包括一个完整的区块信息,并天然的跟历史信息进行关联。所有操作的最小单位将是区块。
### 集成性
在相当长的一段时间内,基于区块链的系统将于已有的中心化系统共存。
两种系统如何共存,如何分工,彼此的业务交易如何进行传递?
这些都是很迫切的问题。
### 其它
区块链的应用也带来了对很多问题的新思考和新需求。
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录