SlideShare ist ein Scribd-Unternehmen logo
1 von 51
Downloaden Sie, um offline zu lesen
2015.03王先明
图解分布式⼀一致性协议
Paxos
1
分布式事务
2
Paxos 算法
3
Zab 应⽤用
分布式事务1
一台服务器提供数据服务
性能不足以提供服务?
服务器宕机?
服务器掉电?
服务器断网? 服务器硬盘坏?
响应时间?
吞吐量?
2. 数据镜像:所有的服务器上都有相同的数据
扩展数据服务常用手段
1. 数据分区:把数据分块分布在不同的服务器上
最经典的Case:“A帐号向B帐号汇钱”
6. 把余额结果写回B帐号中
1. 从A帐号中把余额读出来
2. 对A帐号余额做减法操作
3. 把余额结果写回A帐号中 4. 从B帐号中把余额读出来
5. 对B帐号余额做加法操作
Partition Tolerance
Consistency Availability
?
ACID
BASE
一致性级别
2. 单调一致性(monotonic consistency)
3. 会话一致性(session consistency)
1. 强一致性(strong consistency)
4. 最终一致性(eventual consistency)
5. 弱一致性(weak consistency)
网络延迟/分区恢复/补偿错误
并发更新
一致性为什么难
主从异步复制
Client Slave. 1 Slave. 2Master
1. 写请求
2. 写⼊入磁盘
3. 回应
4.1. 从主库复制到从库
4.2. 从主库复制到从库
5.1. 回应
5.2. 回应
主从同步复制
Client Slave. 1 Slave. 2Master
1. 写请求
2. 写⼊入磁盘
3.1. 从主库复制到从库
3.2. 从主库复制到从库
5. 回应
4.1. 回应
4.2. 回应
主从半同步复制
Client Slave. 1 Slave. 2Master
1. 写请求
2. 写⼊入磁盘
3.1. 从主库复制到从库
3.2. 从主库复制到从库
4. 回应
5.1. 回应
5.2. 回应
多数派写
Client Node. 2 Node. 3Node. 1
1.1. 写请求
2.1. 回应
1.2. 写请求
1.3. 写请求
2.2. 回应
2.3. 回应
多数派写 - 并发更新
X 2..1 nil..02..1 Y
get i
X 3..2 3..22..1
set i+1
3..2 3..22..1 Y
set i+2
X 5..3 5..32..1
get i
i=5?
i=2
i=3
get i
i=2
i=4
更新丢失
Paxos 算法2
两阶段提交
Cohort Cohort
QUERY TO COMMIT
Coordinator
Request
The flow of message with protocol (Two-Phase Commit )
An * next to the record type means that the record is forced to stable storage.
QUERY TO COMMIT
VOTE YES/NOVOTE YES/NO prepare*/abort*
COMMIT/ROLLBACK COMMIT/ROLLBACK
commit*/abort*
ACKNOWLEDGMENT ACKNOWLEDGMENT
prepare*/abort*
commit*/abort* commit*/abort*
三阶段提交
Cohort Cohort
canCommit?
Coordinator
Request
yes
haveCommitted
Uncertain
Timeout cause abort
Committed
Soliciting Votes…
canCommit?
yes Uncertain
Timeout cause abort
preCommit
ack
preCommit
ack
Commit authorized
Timeout cause abort
The flow of message with protocol (Three-Phase Commit )
An * next to the record type means that the record is forced to stable storage.
Prepare to commit
Timeout cause abort
Prepare to commit
Timeout cause abort
doCommitdoCommit
Finalizing commit
Timeout cause abort
Done
Committed
haveCommitted
拜占庭将军(Byzantine Generals)
2. 一般假设整个系统中发生故障的服务器(拜占庭服务器)不超过F台,且每个请求满足两个指标
1.1. 所有非拜占庭服务器使用相同的输入信息,产生一致的结果
1. 拜占庭容错系统是指在一个拥有N台服务器的系统中,整个系统对于每一个请求满足两个条件
1.2. 信息正确输入,那么所有非拜占庭服务器必须接受这个信息,并计算相应的结果
2.1. 安全性:任何已经完成的请求都不会被更改,且可以被之后请求看到
2.2. 活性:可以执行非拜占庭客户端的请求,且不会被任何因素影响导致不能执行
SUCCESSFAILURE
网络服务3种状态之 SUCCESS | FAILURE
TIMEOUT
NO!
NO!
NO!
网络服务3种状态之 噩梦般的TIMEOUT
那么,每个节点最后都能得到一致的状态
在分布式数据库系统中,假设
1. 每个节点的初始状态一致
2. 每个节点都执行相同的操作序列
I WANT YOU
Proposers Acceptors
Phase 1
1) Choose new proposal number n
2) Broadcast Prepare(n) to all servers
3) Respond to Prepare(n):
if n > maxN then
maxN = n
return (acceptedN, acceptedV)

Phase 2
4) When responses received from majority:
if any acceptedV returned then
replace v with acceptedV for highest acceptedN
5) Broadcast Accept(n, v) to all servers
6) Respond to Accept(n, v):
if n >= maxN then
maxN = n
acceptedN = n
acceptedV = v
return (maxN)
7) When responses received from majority:
v is chosen
Acceptors must record maxN, acceptedN and acceptedV on stable storage (disk)
maxN=0
Paxos Basic - Phase1
0, nil 0, nil0, nil
N=1
X
acceptedN=0
acceptedV=nil
1, nil 0, nil1, nil
Proposer
X
Acceptor
maxN=1
maxN=0
3) Respond to Prepare(n):
if n > maxN then
maxN = n
return (acceptedN, acceptedV)
1) Choose new proposal number n
2) Broadcast Prepare(n) to all servers
maxN=0
4) When responses received from majority:
if any acceptedV returned then
replace v with acceptedV for highest acceptedN
5) Broadcast Accept(n, v) to all servers
Paxos Basic - Phase2
0, nil 0, nil0, nil
X 1, any 0, nil1, any
Proposer
X
Acceptor
maxN=1
6) Respond to Accept(n, v):
if n >= maxN then
maxN = n
acceptedN = n
acceptedV = v
return (maxN)
7) When responses received from majority:
v is chosen
maxN=0
acceptedN=1
acceptedV=any
maxN=1
acceptedN=1
maxN=1
maxN=0
PaxosBasic-并发更新
2, nil 2, nil1, any1X
maxN=2
acceptedN=1
acceptedV=any1
maxN=1
Y
Proposer
0, nil 0, nil0, nil
N=1
Proposer
X
Acceptor
maxN=0
X
acceptedN=0
acceptedV=nil
1, nil 0, nil1, nil
maxN=1
maxN=0
1, nil 0, nil1, nil
maxN=1
N=2
Y
maxN=2
2, nil 2, nil1, nil
acceptedN=1
acceptedV=nil
acceptedN=2
acceptedV=nil
2, nil 2, nil1, any1
maxN=2maxN=1
maxN=2
2, any2 2, any21, any1
maxN=2maxN=1
Y
Y
acceptedN=2
acceptedN=2
acceptedV=any2
P1 for X
P1 for Y
P2 for X
P2 for Y
3, any3 2, any23, any3
maxN=2maxN=3
Proposer C
Acceptor A
maxN=3
2, any2 2, any23, any3
maxN=2maxN=1
Acceptor C Acceptor E
X
timeout
X
Proposer EProposer A
一条日志在 A/C 上持久化成功,已经形成多数派,然后C宕机
一条日志只在 A 上持久化成功,超时未形成多数派,然后C宕机
最终的状态都是 A 上有这条日志,E 上没有,怎么处理?
最大 Commit 原则
Zab 应⽤用3
Zookeeper 保证
2. 原子性:更新要么成功,要么失败,不会出现部分更新
3. 单一性:无论客户端连接哪个Server,都会看到同一个视图
1. 顺序一致性:按照客户端发送请求的顺序更新数据
4. 可靠性:一旦数据更新成功,将一直保持,直到新的更新
5. 及时性:客户端会在一个确定的时间内得到最新的数据
Zookeeper 服务过程
Zookeeper Services
Follower Leader Follower
Client Client Client Client Client Client
write
read read read read read
Server Server Server
Zookeeper 状态同步
Leader Follower
2. Leader确定同步点,发送同步消息
3. 完成同步点,通知Leader,并修改自己状态
1. Follower连接Leader,发送最大zxid
Zab广播模式
Follower Follower
Propose
Leader
Request
Commit
ACK
Propose
Commit
ACK
The flow of message with protocol
Zab广播模式
Follower
Leader
Follower
Follower
Follower
FollowerClient
Zookeeper Ensemble
Server:
Leader && Follower
1. request
6. response
2. request
5. Commit
4. ack
3. Propose
Zab广播模式
两阶段提交
VS.
(Two-Phrase Commit)
Follower 工作流程
向Leader发送请求
/接收Leader回应
接收Client请求
PING REVALIDATE SYNC/UPTODATE Proposal
Y判断
是否写请求
返回结果给Client
开始
N
Leader 工作流程
开始
请求类型
接收Learner请
求,是否同步
恢复数据(恢
复模式)
N
与Learner同步
Y
PING
REQUEST
ACK
REVALIDATE
加入处理队列
更新session时
间(延长)
发起
Leader
选举
保持与Follower
的心跳
Y
是否有超过半数
的Follower同意
Commit
是否有超过半数
的Follower
N
Y
Zookeeper 谁是Leader?
Zab 协议(Zookeeper Atomic Broadcast Protocol)
当任一Client通过某集群节点向集群发起读写请求时,该集群节点会向Leader节点发出投
票请求,如果投票通过(超过一半节点同意)则该请求被执行,否则该请求被驳回。通过Paxos
算法,Zookeeper的保持了数据模型的一致性,同时保持了任何操作的原子性。
Zab恢复模式
Server1
Server2
X
Server3
C1
P1 P2
P1 P2
C1 P3 C2
P1 P2
P1 P2
Zab恢复模式
Server1
Server2
Server3
X
P10000001 P10000002 C10000001
C1 P3 C2
P1 P2
P1 P2
C1 C2
P10000001 P10000002 C10000001
C1 C2
Paxos一致性
Leader
Server1
Follower
Server2
Follower
Server3
P1 <01, “/zk”>
P2 <02, “/a”>
P3 <03, “/a/b”>
P1
P1
P1 <01, “/zk”>
P1 <01, “/zk”>
< t , v >
Zxid
事务epoch counter
高32位 低32位
X
X
Paxos一致性
Leader
Server1
Follower
Server2
Leader
Server3
P1 <01, “/zk”>
P2 <02, “/a”>
P3 <03, “/a/b”>
P2i
P1 <01, “/zk”>
P2i <02, “/c”>
P1 <01, “/zk”>
P2i <02, “/c”>
< t , v >
Zxid
事务epoch counter
高32位 低32位
X
XX
Paxos一致性
Leader
Server1
Follower
Server2
Leader
Server3
P1 <01, “/zk”>
P2 <02, “/a”>
P3 <03, “/a/b”>
P3
P1 <01, “/zk”>
P2i <02, “/c”>
P3 <03, “/a/b”>
P1 <01, “/zk”>
P2i <02, “/c”>
< t , v >
Zxid
事务epoch counter
高32位 低32位
X
Zab一致性
Leader
Server1
Follower
Server2
Follower
Server3
P1 <01, “/zk”>
P2 <02, “/a”>
P3 <03, “/a/b”>
P1
P1
P1 <01, “/zk”>
P1 <01, “/zk”>
< t , v >
Zxid
事务epoch counter
高32位 低32位
X
X
Zab一致性
Leader
Server1
Follower
Server2
Leader
Server3
P1 <01, “/zk”>
P2 <02, “/a”>
P3 <03, “/a/b”>
P2i
P1 <01, “/zk”>
P2i <10, “/c”>
P1 <01, “/zk”>
P2i <10, “/c”>
< t , v >
Zxid
事务epoch counter
高32位 低32位
X
XX
Zab一致性
Leader
Server1
Follower
Server2
Leader
Server3
P1 <01, “/zk”>
P2 <02, “/a”>
P3 <03, “/a/b”>
P3
P1 <01, “/zk”>
P2i <10, “/c”>
P1 <01, “/zk”>
P2i <10, “/c”>
< t , v >
Zxid
事务epoch counter
高32位 低32位
X
Leader 选举 - Basic Paxos
投票
开始
N
Y
Y
N
投票
结束
向集群(包括自
己)发起询问
Y
N
第一次询问?
将自已(id, zxid)作为
Leader推荐给集群
接收询问,验证
是否自己发起?
获取对方id(myid),存入
已询问列表,获取对方提议的
Leader信息(id,zxid),存
入当前投票记录表,统计选举
结果,获取最大的zxid,并将
zxid所示的Server作为下次推
荐的Leader
zxid是否有超过
半数支持
将zxid所示的Server
作为当前的Leader,
并根据投票结果修改
自己状态
投票
开始
Y判断是否已经
选出Leader
N
将自已epoch+1,推荐
自己(zxid,id)作为
Leader发送给集群
进入下一个周期
投票
结束
N
Y
判断自己当前
epoch是否合法
更新自己epoch为对方推
荐的zxid,epoch,id。
向对方发送ACK
N
Y
一个周期内是否
收到其它节点回复
Leader 选举 - Fast Paxos
To Be Continued…
Thanks

Weitere ähnliche Inhalte

Was ist angesagt?

Concurrency model for mysql data processing@rubyconf.tw 2012
Concurrency model for mysql data processing@rubyconf.tw 2012Concurrency model for mysql data processing@rubyconf.tw 2012
Concurrency model for mysql data processing@rubyconf.tw 2012Mu-Fan Teng
 
使用Rpm&yum进行基础软件管理
使用Rpm&yum进行基础软件管理使用Rpm&yum进行基础软件管理
使用Rpm&yum进行基础软件管理haiyuan ning
 
【Maclean liu技术分享】深入理解oracle中mutex的内部原理
【Maclean liu技术分享】深入理解oracle中mutex的内部原理【Maclean liu技术分享】深入理解oracle中mutex的内部原理
【Maclean liu技术分享】深入理解oracle中mutex的内部原理maclean liu
 
Squid安装配置
Squid安装配置Squid安装配置
Squid安装配置Yiwei Ma
 
Effective linux.3.(diagnosis)
Effective linux.3.(diagnosis)Effective linux.3.(diagnosis)
Effective linux.3.(diagnosis)wang hongjiang
 
PostgreSQL 9 Standby
PostgreSQL 9 StandbyPostgreSQL 9 Standby
PostgreSQL 9 StandbyMarch Liu
 
Mysql proxy+mysql-mmm
Mysql proxy+mysql-mmmMysql proxy+mysql-mmm
Mysql proxy+mysql-mmmYiwei Ma
 
Web性能测试指标参考v0.2
Web性能测试指标参考v0.2Web性能测试指标参考v0.2
Web性能测试指标参考v0.2beiyu95
 
Node cluster
Node clusterNode cluster
Node clusteraleafs
 
Mysql展示功能与源码对应
Mysql展示功能与源码对应Mysql展示功能与源码对应
Mysql展示功能与源码对应zhaolinjnu
 
Analysis of Adobe's RTMFP Protocol
Analysis of Adobe's RTMFP ProtocolAnalysis of Adobe's RTMFP Protocol
Analysis of Adobe's RTMFP ProtocolChangming Sun
 
Infiniflash benchmark
Infiniflash benchmarkInfiniflash benchmark
Infiniflash benchmarkLouis liu
 
再生龍於雲端環境之應用
再生龍於雲端環境之應用再生龍於雲端環境之應用
再生龍於雲端環境之應用Chenkai Sun
 
为10g rac cluster添加节点
为10g rac cluster添加节点为10g rac cluster添加节点
为10g rac cluster添加节点maclean liu
 
receiving packets faster
receiving packets fasterreceiving packets faster
receiving packets fasteryang peng
 

Was ist angesagt? (20)

Concurrency model for mysql data processing@rubyconf.tw 2012
Concurrency model for mysql data processing@rubyconf.tw 2012Concurrency model for mysql data processing@rubyconf.tw 2012
Concurrency model for mysql data processing@rubyconf.tw 2012
 
使用Rpm&yum进行基础软件管理
使用Rpm&yum进行基础软件管理使用Rpm&yum进行基础软件管理
使用Rpm&yum进行基础软件管理
 
【Maclean liu技术分享】深入理解oracle中mutex的内部原理
【Maclean liu技术分享】深入理解oracle中mutex的内部原理【Maclean liu技术分享】深入理解oracle中mutex的内部原理
【Maclean liu技术分享】深入理解oracle中mutex的内部原理
 
Squid安装配置
Squid安装配置Squid安装配置
Squid安装配置
 
Aswan&hump
Aswan&humpAswan&hump
Aswan&hump
 
Effective linux.3.(diagnosis)
Effective linux.3.(diagnosis)Effective linux.3.(diagnosis)
Effective linux.3.(diagnosis)
 
PostgreSQL 9 Standby
PostgreSQL 9 StandbyPostgreSQL 9 Standby
PostgreSQL 9 Standby
 
Mysql proxy+mysql-mmm
Mysql proxy+mysql-mmmMysql proxy+mysql-mmm
Mysql proxy+mysql-mmm
 
Web性能测试指标参考v0.2
Web性能测试指标参考v0.2Web性能测试指标参考v0.2
Web性能测试指标参考v0.2
 
Node cluster
Node clusterNode cluster
Node cluster
 
Mysql展示功能与源码对应
Mysql展示功能与源码对应Mysql展示功能与源码对应
Mysql展示功能与源码对应
 
Analysis of Adobe's RTMFP Protocol
Analysis of Adobe's RTMFP ProtocolAnalysis of Adobe's RTMFP Protocol
Analysis of Adobe's RTMFP Protocol
 
Infiniflash benchmark
Infiniflash benchmarkInfiniflash benchmark
Infiniflash benchmark
 
再生龍於雲端環境之應用
再生龍於雲端環境之應用再生龍於雲端環境之應用
再生龍於雲端環境之應用
 
为10g rac cluster添加节点
为10g rac cluster添加节点为10g rac cluster添加节点
为10g rac cluster添加节点
 
Sun jdk 1.6 gc
Sun jdk 1.6 gcSun jdk 1.6 gc
Sun jdk 1.6 gc
 
Exodus2 大局观
Exodus2 大局观Exodus2 大局观
Exodus2 大局观
 
Mysql集群
Mysql集群Mysql集群
Mysql集群
 
receiving packets faster
receiving packets fasterreceiving packets faster
receiving packets faster
 
Jvm内存管理基础
Jvm内存管理基础Jvm内存管理基础
Jvm内存管理基础
 

Andere mochten auch

Paxos building-reliable-system
Paxos building-reliable-systemPaxos building-reliable-system
Paxos building-reliable-systemYanpo Zhang
 
Screenless Browsing - Audio Sword
Screenless Browsing - Audio SwordScreenless Browsing - Audio Sword
Screenless Browsing - Audio SwordJoe Abhishek
 
the Paxos Commit algorithm
the Paxos Commit algorithmthe Paxos Commit algorithm
the Paxos Commit algorithmpaolos84
 
Paxos and Raft Distributed Consensus Algorithm
Paxos and Raft Distributed Consensus AlgorithmPaxos and Raft Distributed Consensus Algorithm
Paxos and Raft Distributed Consensus Algorithm宇 傅
 
Paxos introduction
Paxos introductionPaxos introduction
Paxos introduction宗志 陈
 

Andere mochten auch (6)

Paxos building-reliable-system
Paxos building-reliable-systemPaxos building-reliable-system
Paxos building-reliable-system
 
Paxos
PaxosPaxos
Paxos
 
Screenless Browsing - Audio Sword
Screenless Browsing - Audio SwordScreenless Browsing - Audio Sword
Screenless Browsing - Audio Sword
 
the Paxos Commit algorithm
the Paxos Commit algorithmthe Paxos Commit algorithm
the Paxos Commit algorithm
 
Paxos and Raft Distributed Consensus Algorithm
Paxos and Raft Distributed Consensus AlgorithmPaxos and Raft Distributed Consensus Algorithm
Paxos and Raft Distributed Consensus Algorithm
 
Paxos introduction
Paxos introductionPaxos introduction
Paxos introduction
 

Ähnlich wie 图解分布式一致性协议Paxos 20150311

Web请求异步处理和海量数据即时分析在淘宝开放平台的实践
Web请求异步处理和海量数据即时分析在淘宝开放平台的实践Web请求异步处理和海量数据即时分析在淘宝开放平台的实践
Web请求异步处理和海量数据即时分析在淘宝开放平台的实践mysqlops
 
阿里云技术实践
阿里云技术实践阿里云技术实践
阿里云技术实践drewz lin
 
Pm 04 华胜天成openstack实践汇报-20120808
Pm 04 华胜天成openstack实践汇报-20120808Pm 04 华胜天成openstack实践汇报-20120808
Pm 04 华胜天成openstack实践汇报-20120808OpenCity Community
 
深入研究 Windows 系統服務 效能調校與故障排除
深入研究 Windows 系統服務    效能調校與故障排除深入研究 Windows 系統服務    效能調校與故障排除
深入研究 Windows 系統服務 效能調校與故障排除5045033
 
基于Lucene的站内搜索 Beta
基于Lucene的站内搜索 Beta基于Lucene的站内搜索 Beta
基于Lucene的站内搜索 Betazwxgo
 
OceanBase-破解数据库高可用难题
OceanBase-破解数据库高可用难题OceanBase-破解数据库高可用难题
OceanBase-破解数据库高可用难题everestsun
 
Track2 -刘继伟--openstack in gamewave
Track2 -刘继伟--openstack in gamewaveTrack2 -刘继伟--openstack in gamewave
Track2 -刘继伟--openstack in gamewaveOpenCity Community
 
mnesia脑裂问题综述
mnesia脑裂问题综述mnesia脑裂问题综述
mnesia脑裂问题综述Feng Yu
 
Kafka介绍
Kafka介绍Kafka介绍
Kafka介绍lurga
 
基于Lucene的站内搜索 Beta
基于Lucene的站内搜索 Beta基于Lucene的站内搜索 Beta
基于Lucene的站内搜索 Betazhu02
 
基于Lucene的站内搜索 Beta
基于Lucene的站内搜索 Beta基于Lucene的站内搜索 Beta
基于Lucene的站内搜索 Betafulin tang
 
Defeat Public DNS
Defeat Public DNSDefeat Public DNS
Defeat Public DNSguanxixi
 
分布式索引系统调研
分布式索引系统调研分布式索引系统调研
分布式索引系统调研zijingyeshao
 
Kafka的设计与实现
Kafka的设计与实现Kafka的设计与实现
Kafka的设计与实现wang xing
 
Varnish简介
Varnish简介Varnish简介
Varnish简介fangdeng
 
眾至資訊分散式郵件系統
眾至資訊分散式郵件系統眾至資訊分散式郵件系統
眾至資訊分散式郵件系統sharetech
 

Ähnlich wie 图解分布式一致性协议Paxos 20150311 (20)

Web请求异步处理和海量数据即时分析在淘宝开放平台的实践
Web请求异步处理和海量数据即时分析在淘宝开放平台的实践Web请求异步处理和海量数据即时分析在淘宝开放平台的实践
Web请求异步处理和海量数据即时分析在淘宝开放平台的实践
 
阿里云技术实践
阿里云技术实践阿里云技术实践
阿里云技术实践
 
Pm 04 华胜天成openstack实践汇报-20120808
Pm 04 华胜天成openstack实践汇报-20120808Pm 04 华胜天成openstack实践汇报-20120808
Pm 04 华胜天成openstack实践汇报-20120808
 
Kafka in Depth
Kafka in DepthKafka in Depth
Kafka in Depth
 
深入研究 Windows 系統服務 效能調校與故障排除
深入研究 Windows 系統服務    效能調校與故障排除深入研究 Windows 系統服務    效能調校與故障排除
深入研究 Windows 系統服務 效能調校與故障排除
 
基于Lucene的站内搜索 Beta
基于Lucene的站内搜索 Beta基于Lucene的站内搜索 Beta
基于Lucene的站内搜索 Beta
 
OceanBase-破解数据库高可用难题
OceanBase-破解数据库高可用难题OceanBase-破解数据库高可用难题
OceanBase-破解数据库高可用难题
 
Zabbix in PPTV
Zabbix in PPTVZabbix in PPTV
Zabbix in PPTV
 
Track2 -刘继伟--openstack in gamewave
Track2 -刘继伟--openstack in gamewaveTrack2 -刘继伟--openstack in gamewave
Track2 -刘继伟--openstack in gamewave
 
mnesia脑裂问题综述
mnesia脑裂问题综述mnesia脑裂问题综述
mnesia脑裂问题综述
 
Kafka介绍
Kafka介绍Kafka介绍
Kafka介绍
 
基于Lucene的站内搜索 Beta
基于Lucene的站内搜索 Beta基于Lucene的站内搜索 Beta
基于Lucene的站内搜索 Beta
 
基于Lucene的站内搜索 Beta
基于Lucene的站内搜索 Beta基于Lucene的站内搜索 Beta
基于Lucene的站内搜索 Beta
 
Defeat Public DNS
Defeat Public DNSDefeat Public DNS
Defeat Public DNS
 
分布式索引系统调研
分布式索引系统调研分布式索引系统调研
分布式索引系统调研
 
Kafka的设计与实现
Kafka的设计与实现Kafka的设计与实现
Kafka的设计与实现
 
Varnish简介
Varnish简介Varnish简介
Varnish简介
 
Zoo keeper
Zoo keeperZoo keeper
Zoo keeper
 
眾至資訊分散式郵件系統
眾至資訊分散式郵件系統眾至資訊分散式郵件系統
眾至資訊分散式郵件系統
 
Cdc@ganji.com
Cdc@ganji.comCdc@ganji.com
Cdc@ganji.com
 

图解分布式一致性协议Paxos 20150311