SlideShare a Scribd company logo
1 of 83
Download to read offline
Consensus	and


Raft	Algorithm
Huynh	Quang	Thao


Zendesk


Consensus	and	


Raft	Algorithm
Part	1:	Consensus
Introduction	to	consensus
Two	General’s	Problem
Army	1 Army	2 Result
Not	Attack Not	Attack Nothing
Not	Attack Attack Lost
Attack Not	Attack Lost
Attack Attack Win
Two	General’s	Problem
1.	Attack	on	01/01
Two	General’s	Problem
1.	Attack	on	01/01
2.	Accept
Two	General’s	Problem
1.	Attack	on	01/01
2.	Accept
Two	General’s	Problem
1.	Attack	on	01/01
2.	Accept
3.	Accept	the	“Accept”
Two	General’s	Problem
1.	Attack	on	01/01
2.	Accept
3.	Accept	the	“Accept”
Two	General’s	Problem
1.	Attack	on	01/01
2.	Accept
3.	Accept	the	“Accept”
4.	Wait	for	the	reply
2	generals	cannot	have	a	consensus	on	this	problem.
Byzantine	General’s	Problem
Matching	concepts
Message:	hello	world
1.	Attack	on	01/01
Matching	concepts:	2	general	problems
Message:	hello	world
Link	failure	problem
Matching	concepts:	Byzantine	problems
Message:	hello	world
Node	failure	problem
Matching	concepts:	Byzantine	problems
Message:	hello	world
Byzantine
Crash-recovery
Crash-stop
Omission
Byzantine
Crash-recovery
Distributed	System	is	hard
Message:	hello	world
- Messages	can	be	dropped	anytime


- Messages	can	be	delayed	with	any	amount


- Messages	can	be	received	at	any	orders


- Messages	can	be	modi
f
ied	by	any	strangers
Byzantine
Crash-recovery
Crash-stop
Omission
Byzantine
Crash-recovery
Consensus
A	distributed	consensus	ensures	a	consensus	of	data	among	nodes	in	a	distributed	system	or	reaches	an	
agreement	on	a	proposal


https://computersciencewiki.org
FLP	Impossibility
The	FLP	theorem	states	that	in	an	asynchronous	network	where	messages	may	be	delayed	but	not	lost,	there	is	no	
consensus	algorithm	that	is	guaranteed	to	terminate	in	every	execution	for	all	starting	conditions,	if	at	least	one	
node	may	fail-stop.


Michael	[F]ischer,	Nancy	[L]ynch	and	Michael	[P]aterson	-	1985


TL,DR:	We	cannot	develop	consensus	algorithms	that	work	in	all	situations	in	a	very	generic	model


Or


We	cannot	have	any	consensus	algorithms	…	:(
FLP	Impossibility
The	FLP	theorem	states	that	in	an	asynchronous	network	where	messages	may	be	delayed	but	not	lost,	there	is	no	
consensus	algorithm	that	is	guaranteed	to	terminate	in	every	execution	for	all	starting	conditions,	if	at	least	one	
node	may	fail-stop.


Michael	[F]ischer,	Nancy	[L]ynch	and	Michael	[P]aterson	-	1985


We	need	to	
f
ind	a	way	to	relax	the	model


• asynchronous	network	:	no	bound-time	on	receiving	messages.	Solution:	timeout


• guaranteed	to	terminate	in	every	execution:	allow	some	situations,	the	algorithm	cannot	be	terminated	(hash	
function)


• All	staring	conditions:	force	the	system	to	some	de
f
ined	states	before	running
Protocols Applications
Paxos


- Multi	Paxos


- Flexible	Paxos


- Cheap	Paxos


- PigPaxos


- …
• Google	Chubby:		
coarse	grained	lock	service	


• Google	Spanner:	Distributed	Database
ZooKeeper	Atomic	Broadcast
Apache	ZooKeeper:	


• a	centralised	service	for	maintaining	con
f
iguration	
information,	naming	synchronization.


• Application:	Ka
f
ka;	Hadoop;	…


Raft
• etcd:	Distributed	Key-value	datastore	(heart	of	
Kubernetes)


• CockroachDB	(New-SQL	Database)


• TIDB	
Proof	Of	Work Blockchain	such	as	Bitcoin;	Ethereum
Protocols Implementations
Paxos


- Multi	Paxos


- Flexible	Paxos


- Cheap	Paxos


- PigPaxos


- …
• Google	Chubby:		
coarse	grained	lock	service	


• Google	Spanner:	Distributed	Database
ZooKeeper	Atomic	Broadcast
Apache	ZooKeeper:	


• a	centralised	service	for	maintaining	con
f
iguration	
information,	naming	synchronization.


• Application:	Ka
f
ka;	Hadoop;	…


Raft
• etcd:	Distributed	Key-value	datastore	(heart	of	
Kubernetes)


• CockroachDB	(New-SQL	Database)


• TIDB	
Proof	Of	Work Blockchain	such	as	Bitcoin;	Ethereum
Part	2:	Raft	Algorithm
Architecture
Key Value
Raft
Finite	State	Machine
Node
Flow	diagram	when	user	sends	a	request	to	a	follower	node
Log	sequences
Key Value
Raft
Key Value
Raft
Key Value
Raft
Leader
Follower	1
Follower	2
call
denied	


leader:	127.0.0.2
Flow	diagram	when	user	sends	a	request	to	a	follower	node
Key Value
Raft
2.	call
Key Value
Raft
Key Value
Raft
3.	replicate
3.	replicate
4.	return	
to	FSM
1.	Put	K/V
5.	return
Leader
Follower	1
Follower	2
waiting	
quorum
Flow	diagram	when	user	sends	a	request	to	a	leader	node
Raft	Decomposition
Leader	election


- Select	one	server	to	act	as	leader


- Detect	crashes,	choose	new	leader


Log	replication	(normal	operation)


• Leader	accepts	commands	from	clients,	appends	to	its	log


• Leader	replicates	its	log	to	other	servers	(overwrites	inconsistencies)


Safety


• Keep	logs	consistent	


• Only	servers	with	up-to-date	logs	can	become	leader


Source:	https://raft.github.io/slides/uiuc2016.pdf
Raft	State
Follower:	passive,	issue	no	requests	on	their	own	but	simply	respond	to	requests	from	leaders	and	candidates	(except	
redirect	requests	to	leader)


Candidate:		Middle	state.	Try	to	become	a	leader	


Leader:	


• Active	node	in	the	cluster.


• Handle	requests	from	clients	+	Replicate	logs	to	other	nodes


• Possibly	more	than	one	node	think	themselves	leader
Term
• Term	is	the	natural	number;	acted	as	a	logical	timestamp.


• At	most	one	leader	per	term
Log
• Log	Entry:	data	+	index	+	term


• Committed	entry:	When	a	log	entry	is	replicated	on	more	
than	half	of	nodes	(include	itself),	log	entry	will	be	converted	
to	commit	state.


• When	log	entry	is	converted	to	the	commit	state,	we	can	
safely	apply	to	FSM	and	return	to	clients.
Request	Type
Raft	only	has	2	types	of	request


RequestVote:	use	for	leader	election.


AppendEntries:


• Use	of	heartbeat	protocol.


• Log	replication:	similar	as	heartbeat,	and	include	log	entries	need	to	replicate.
Request	Type:	AppendEntries	RPC
Protocol	works	by	round.	a.k.a:	term


Hence,	because	of	network	latency,	some	messages	
come	late	when	other	nodes	see	higher	term	->	The	
request	is	rejected.


At	the	same	time,	node	returns	the	newer	term	for	
candidate	to	update	itself.
Request	Type:	AppendEntries	RPC
Follower	uses	leaderCommit	ID	to	decide	which	log	entry	has	
not	been	committed	->	commit	into	FSM.
Request	Type:	AppendEntries	RPC
2	parameters	to	solve	the	inconsistent	log	problem


	(explain	later)
Request	Type:	RequestVote	RPC
Protocol	works	by	round.	a.k.a:	
term


Hence,	because	of	network	
latency,	some	messages	come	
late	when	other	nodes	see	
higher	term	->	The	request	is	
rejected.


At	the	same	time,	node	returns	
the	newer	term	for	candidate	to	
update	itself.
Request	Type:	RequestVote	RPC
2	important	parameters	to	decide	if	a	
candidate’s	log	is	up-to-date


(Explain	later)
Leader	Election
Leader
Follower
Follower
Follower
1
1
1
1
Heartbeat
Heartbeat
Heartbeat
Leader	will	send	heartbeart	to	every	node


For	starting,	all	nodes	are	followers
Leader
Follower
Follower
Follower
1
1
1
1
Heartbeat
Heartbeat
Where	are	you,	bro?
One	node	doesn’t	receive	the	heartbeat	until	timeout
Leader
Candidate
Follower
Follower
2
1
1
1
Heartbeat
Heartbeat
He	’s	dead.	I	want	to	become	the	leader	
- Increase	term	to	1


- Move	to	the	candidate	state
Candidate
Follower
Follower
2
1
1
1
He	’s	dead.	I	want	to	become	the	leader	
Candidate	will	send	out	the	RequestVote	with	the	new	term
RequestVote.	Term	=	2
RequestVote.	Term	=	2
R
e
q
u
e
s
t
V
o
t
e
.
	
T
e
r
m
	
=
	
2
Leader
Candidate
Follower
Follower
2
2
1
1
He	’s	dead.	I	want	to	become	the	leader	
Because	2	>	1:	Accept.	->	Update	term


Note:	With	an	“up-to-date”	condition	that	we	haven’t	mentioned	yet
R
e
q
u
e
s
t
V
o
t
e
.
	
T
e
r
m
	
=
	
2
Leader
Candidate
Follower
Follower
2
2
2
1
He	’s	dead.	I	want	to	become	the	leader	
Because	2	>	1:	Accept.	->	Update	term.	Also	move	back	to	the	follower	state


Note:	With	an	“up-to-date”	condition	that	we	haven’t	mentioned	yet
RequestVote.	Term	=	2
Follower
Candidate
Follower
Follower
2
2
2
1
He	’s	dead.	I	want	to	become	the	leader	
Some	node	might	not	receive	the	request	….
Follower
RequestVote.	Term	=	2
Candidate
Follower
Follower
2
2
2
1
I	received	total	3/4	votes	(include	myself)
Happy	case:	Candidate	receives	a	majority	of	votes
Follower
Scenario:	Success	voting
Leader
Follower
Follower
2
2
2
1
I	am	a	leader
Follower
Heartbeat.	Term	=	2
Heartbeat.	Term	=	2
h
e
a
r
t
b
e
a
t
.
	
T
e
r
m
	
=
	
2
Scenario:	Success	voting
Candidate
Follower
Follower
2
2
2
1
I	received	only	2/4	votes	(included	myself)
Bad	case:	Candidate	receives	less	than	majority	of	nodes
Follower
Scenario:	Unsuccess	voting
Candidate
Follower
Follower
3
2
2
1
Only	the	weak	give	up
Candidate	will	continue	to	increase	their	term	and	reinitialise	the	voting
Follower
RequestVote.	Term	=	3
RequestVote.	Term	=	3
R
e
q
u
e
s
t
V
o
t
e
.
	
T
e
r
m
	
=
	
3
Scenario:	Unsuccess	voting
Leader
Follower
Follower
2
2
2
2
How	long	did	I	sleep	:(	
Follower
Heartbeat.	Term	=	2
Heartbeat.	Term	=	2
h
e
a
r
t
b
e
a
t
.
	
T
e
r
m
	
=
	
2
0
An	isolated	node	after	some	times,	detect	timeout	and	want	become	a	leader
Where	is	my	leader	???
Follower
Scenario:	Voting	with	smaller	term
Leader
Candidate
Follower
2
2
2
2
Follower
RequestVote.	Term	=	1
Heartbeat.	Term	=	2
h
e
a
r
t
b
e
a
t
.
	
T
e
r
m
	
=
	
2
1
An	isolated	node	after	some	times,	detect	timeout	and	want	become	a	leader
I	want	to	become	a	leader	
Follower
Scenario:	Voting	with	smaller	term
Leader
Candidate
Follower
2
2
2
2
Follower
Heartbeat.	Term	=	2
h
e
a
r
t
b
e
a
t
.
	
T
e
r
m
	
=
	
2
1
Any	request	vote	that	term	is	less	than	the	current	term	will	be	rejected


And	return	back	with	a	newer	term
I	want	to	become	a	leader	
Follower
Rejected.	Term	=	2
Scenario:	Voting	with	smaller	term
Leader
Follower
Follower
2
2
2
2
Follower
Heartbeat.	Term	=	2
h
e
a
r
t
b
e
a
t
.
	
T
e
r
m
	
=
	
2
2
When	receiving	rejected	with	larger	term,	back	to	the	follower	state	with	newer	term.
Other		guy	is	a	leader	:(
Follower
Rejected.	Term	=	2
I	must	wait	for	him
Scenario:	Voting	with	smaller	term
Leader
Follower
Follower
2
2
1
2
Heartbeat
H
e
a
r
t
b
e
a
t
Candiate
OMG.	Look	like	I	just	fall	asleep
Scenario:	2	nodes	think	they’re	leaders
Leader
Follower
Follower
2
2
1
2
Heartbeat
H
e
a
r
t
b
e
a
t
Leader
OMG.	Look	like	I	just	fall	asleep
Back	to	my	work
Term	=	1


Bring	me	some	tea
Scenario:	2	nodes	think	they’re	leaders
Leader
Follower
Follower
2
2
1
2
H
e
a
r
t
b
e
a
t
Leader
OMG.	Look	like	I	just	fall	asleep
Back	to	my	work
Term	=	1


Bring	me	some	tea
WTF.	What	is	this	guy	thinking?
Every	request	has	term	less	than	current	term	will	be	rejected
Scenario:	2	nodes	think	they’re	leaders
Rejected


Term	=	2
Leader
Follower
Follower
2
2
2
2
H
e
a
r
t
b
e
a
t
Follower
I	am	not	the	leader	anymore	:(
Term	=	1


Bring	me	some	tea
Update	new	term	and	back	to	the	follower
Scenario:	2	nodes	think	they’re	leaders
Rejected


Term	=	2
Leader
Follower
Follower
2
2
4
2
Candidate
Heartbeat
h
e
a
r
t
b
e
a
t
Scenario:	Full	picture	of	voting	
4
I	want	to	be	a	leader
Vote	for	me	!!!
Leader
Follower
Follower
2
2
4
2
Candidate
Heartbeat
h
e
a
r
t
b
e
a
t
Scenario:	Full	picture	of	voting	
4
I	want	to	be	a	leader
Vote	for	me	!!!
Voting	conditions:


-	Candidate’s	term	>=	own’s	term


-	Candidate’s	log	must	be	more	“up-to-date”
Let	me	check	carefully
Leader
Follower
Follower
2
2
4
4
Candidate
Heartbeat
h
e
a
r
t
b
e
a
t
Scenario:	Full	picture	of	voting	
4
I	want	to	be	a	leader
Vote	for	me	!!!
Even	rejected,	nodes	always	update	to	the	largest	term	they	have	ever	seen
Bigger	term	doesn’t	imply	


You’re	correct
Rejected
Leader
Follower
Follower
2
2
4
4
Scenario:	Full	picture	of	voting	
4
Leader	sees	a	new	larger	term	while	sending	heartbeat
Heartbeat
Bigger	term.	Time	for	me	to	resign
Follower
Follower
Follower
4
2
4
4
Scenario:	Full	picture	of	voting	
4
Leader	moves	back	to	follower	state.	Even	there	is	no	problem	in	the	network
Follower
Follower
“up-to-date”	condition


candidate's	last	log	entry	term	>		follower's	last	log	entry	term


OR


candidate's	last	log	entry	term	==	follower's	last	log	entry	term	AND	candidate's	log	length	>	follower's	log	length
https://blog.cloud
f
lare.com/a-byzantine-failure-in-the-real-world/
4
Leader	Election
• When	one	node	does	not	receive	heartbeat	requests	from	leader,	that	node	
will	move	from	Follower	->	Candidate	state.


• Candidate	will	increase	its	term	to	1,	then	it	will	send	RequestVote	for	all	
nodes	in	the	system.


• When	receiving	RequestVote	request	that	has	a	larger	term	(with	the	up-to-
date	condition):	accept	and	move	back	to	follower
When	candidate	receives	the	result:


• Exist	one	result	has	larger	term:	convert	back	to	follower	


• Timeout	and	less	than	majority	of	votes:	increase	term	by	one	and	reinitialise	the	leader	election.


• Majority	of	votes:


• Move	from	candidate	to	leader


• Start	to	send	heartbeat	to	other	nodes	to	maintain	the	leader	status


• Start	the	log	replication	phrase
Question	&	Answer
Question:	Are	there	any	scenario	that	the	leader	election	happens	without	the	termination	?


Answer:	Yes


• When	the	leader	is	down,	possibly	all	followers	recognises	at	the	same	time	and	move	to	the	candidate	state.


Leader	election	happens,	but	no	node	has	the	majority.


• After	timeout,	all	candidates	at	the	same	time	reinitialise	the	leader	election	at	the	new	term.


• This	process	happens	again	and	again.	And	no	node	can	become	a	leader.


Solution	Raft	uses	random	timeout.	


When	starting	the	voting,	candidate	will	randomise	a	timeout.


Because	of	random	timeout,	there	will	be	one	node	timeout	
f
irst	and	reinitialise	leader	election	
f
irst	at	the	new	term.	
This	node	will	likely	become	a	leader.
Log	Replication
Node	2
Node	1
M
10
10
Log	Matching	Property
Statement	1:	If	2	entries	have	same	index	and	term,	these	2	entries	have	same	data.	We	can	say	they	are	identical.
Index	4
Node	2
Node	1
M
10
10
Log	Matching	Property
Statement	1:	If	2	entries	have	same	index	and	term,	these	2	entries	have	same	data.	We	can	say	they	are	identical.


Statement	2:	if	2	log	entry	are	identical	at	index	T,	all	log	entries	from	the	beginning	to	T	are	identical.
Index	4
1 3
2
1 3 4 5 6
Leader
Follower
2
M
4 5
1 3
2
1 3 4 5 6
Leader
Follower
2
M
4 5
1 3 4 5 6
Leader
Follower
2
1 3 4 5 6
2
Sending	request
Duplicate	all	logs Brute-force	approach
1 3
2
1 3 4 5 6
Leader
Follower
2
M
4 5
Sending	request
1 3
2
1 3 4 5 6
Leader
Follower
2
M
4 5
Sending	request
Compare		2	log	entries	at	index	5
1 3
2
1 3 4 5 6
Leader
Follower
2
M
4 5
1 3
2
1 3 4 5 6
Leader
Follower
2
4
After	updating	state
Follower	removes	inconsistent	log	


at	the	index	5
Sending	request
1 3
2
1 3 4 5 6
Leader
Follower
2
M
4
Sending	request
1 3
2
1 3 4 5 6
Leader
Follower
2
M
4
1 3
2
1 3 4 5 6
Leader
Follower
2
Sending	request
After	updating	state
Follower	removes	inconsistent	log	


at	the	index	4
1 3
2
1 3 4 5 6
Leader
Follower
2
M
Sending	request
1 3
2
1 3 4 5 6
Leader
Follower
2
M
1 3
2
1 3 4 5 6
Leader
Follower
2
4 5 6
After	updating	state
Sending	request
- Follower	observes	all	logs	are	matched


- Follower	applies	all	logs	from	index	3	->	6	to	the	local	log
1 3
2
1 3 4 5 6
Leader
Follower
2
M
1 3
2
1 3 4 5 6
Leader
Follower
2
4 5 6
4 5 6
7
7
7
After	updating	state
Sending	request
- Follower	observes	all	logs	are	matched


- Follower	applies	log	at	index	7
Other	problems
Log	Compaction


• Growing	log	in
f
inity	is	not	feasible	in	the	real	world.


• We	should	provide	the	mechanism	that	after	updating	log	into	FSM,	we	can	remove	the	old	log.	
Example:	[x	->	1;	x	->	2]


• Challenge:	if	we	accidentally	remove	log	entry	that	has	not	replicated	to	other	nodes	yet,	we	cannot	
recover.


Con
f
iguration	Changes


• Raft	paper	doesn’t	have	a	speci
f
ication	for	this.


Byzantine	Problem


• Every	node	must	trust	other	nodes	in	the	system.


• Scenario:	one	“faulty	node”	wants	to	become	a	leader:	always	reply	“accept”	for	all	RequestVote	
request,	but	at	the	same	time,	never	accept	that	request	at	the	local	and	send	RequestVote	for	other	
node	with	a	larger	term.
References
Paper:	In	Search	of	an	Understandable	Consensus	Algorithm	


Original	paper:	Raft	in	detail	and	how	to	implement.


Paper:		Raft	Re
f
loated:	Do	We	Have	Consensus?	


Based	on	the	above	paper	with	more	explanation.


Paper:		Paxos	vs	Raft:	Have	we	reached	consensus	on	distributed	consensus?	


Explain	again	multi-Paxos	based	on	Raft	style	(more	engineering	focus).	Through	this	paper,	we	observe	that	there	is	not	
much	differences	between	Paxos	and	raft.


MIT	Course	6.824:	Distributed	System


Good	source	to	learn	distributed	system	fundamentals	with	assignments


Raft	user	study:	Raft	lecture


https://www.youtube.com/watch?v=YbZ3zDzDnrw


Raft	user	study:	Paxos	lecture


https://www.youtube.com/watch?v=JEpsBg0AO6o


https://github.com/hashicorp/raft


Production	grade	implementation	for	the	Raft	algorithm.


https://hqt.github.io/2020-10-10-raft-proof/


Raft	proof	in	layman	term	(Vietnamese	version)
Bring	home	…
- Consensus	is	interesting	(don’t?)	and	hard


- There	is	no	“real”	consensus	algorithm,	must	accepted	some	constraints.


- We	should	implement	a	consensus	algorithm	once,	but	must	use	a	production-grade	libraries.


- Raft	is	the	way	to	go	!!!	(Not	actually	true)


- Bitcoin’s	price	is	all-time	high
Q&A	Session

More Related Content

What's hot

Simplify CDC Pipeline with Spark Streaming SQL and Delta Lake
Simplify CDC Pipeline with Spark Streaming SQL and Delta LakeSimplify CDC Pipeline with Spark Streaming SQL and Delta Lake
Simplify CDC Pipeline with Spark Streaming SQL and Delta LakeDatabricks
 
Thrift vs Protocol Buffers vs Avro - Biased Comparison
Thrift vs Protocol Buffers vs Avro - Biased ComparisonThrift vs Protocol Buffers vs Avro - Biased Comparison
Thrift vs Protocol Buffers vs Avro - Biased ComparisonIgor Anishchenko
 
Scaling and Modernizing Data Platform with Databricks
Scaling and Modernizing Data Platform with DatabricksScaling and Modernizing Data Platform with Databricks
Scaling and Modernizing Data Platform with DatabricksDatabricks
 
Two phase commit protocol in dbms
Two phase commit protocol in dbmsTwo phase commit protocol in dbms
Two phase commit protocol in dbmsDilouar Hossain
 
CS9222 ADVANCED OPERATING SYSTEMS
CS9222 ADVANCED OPERATING SYSTEMSCS9222 ADVANCED OPERATING SYSTEMS
CS9222 ADVANCED OPERATING SYSTEMSKathirvel Ayyaswamy
 
Architecture of Big Data Solutions
Architecture of Big Data SolutionsArchitecture of Big Data Solutions
Architecture of Big Data SolutionsGuido Schmutz
 
Client Centric Consistency Model
Client Centric Consistency ModelClient Centric Consistency Model
Client Centric Consistency ModelRajat Kumar
 
Extending the Apache Kafka® Replication Protocol Across Clusters, Sanjana Kau...
Extending the Apache Kafka® Replication Protocol Across Clusters, Sanjana Kau...Extending the Apache Kafka® Replication Protocol Across Clusters, Sanjana Kau...
Extending the Apache Kafka® Replication Protocol Across Clusters, Sanjana Kau...HostedbyConfluent
 
Database , 4 Data Integration
Database , 4 Data IntegrationDatabase , 4 Data Integration
Database , 4 Data IntegrationAli Usman
 
2 PHASE COMMIT PROTOCOL
2 PHASE COMMIT PROTOCOL2 PHASE COMMIT PROTOCOL
2 PHASE COMMIT PROTOCOLKABILESH RAMAR
 
Proposal for nested document support in Lucene
Proposal for nested document support in LuceneProposal for nested document support in Lucene
Proposal for nested document support in LuceneMark Harwood
 
Distributed document based system
Distributed document based systemDistributed document based system
Distributed document based systemChetan Selukar
 
distributed shared memory
 distributed shared memory distributed shared memory
distributed shared memoryAshish Kumar
 
Practical Byzantine Fault Tolernace
Practical Byzantine Fault TolernacePractical Byzantine Fault Tolernace
Practical Byzantine Fault TolernaceYongraeJo
 
Hadoop Distributed File System
Hadoop Distributed File SystemHadoop Distributed File System
Hadoop Distributed File Systemelliando dias
 
Introduction to Apache ZooKeeper
Introduction to Apache ZooKeeperIntroduction to Apache ZooKeeper
Introduction to Apache ZooKeeperSaurav Haloi
 

What's hot (20)

Extensible hashing
Extensible hashingExtensible hashing
Extensible hashing
 
Simplify CDC Pipeline with Spark Streaming SQL and Delta Lake
Simplify CDC Pipeline with Spark Streaming SQL and Delta LakeSimplify CDC Pipeline with Spark Streaming SQL and Delta Lake
Simplify CDC Pipeline with Spark Streaming SQL and Delta Lake
 
Thrift vs Protocol Buffers vs Avro - Biased Comparison
Thrift vs Protocol Buffers vs Avro - Biased ComparisonThrift vs Protocol Buffers vs Avro - Biased Comparison
Thrift vs Protocol Buffers vs Avro - Biased Comparison
 
Scaling and Modernizing Data Platform with Databricks
Scaling and Modernizing Data Platform with DatabricksScaling and Modernizing Data Platform with Databricks
Scaling and Modernizing Data Platform with Databricks
 
Two phase commit protocol in dbms
Two phase commit protocol in dbmsTwo phase commit protocol in dbms
Two phase commit protocol in dbms
 
CS9222 ADVANCED OPERATING SYSTEMS
CS9222 ADVANCED OPERATING SYSTEMSCS9222 ADVANCED OPERATING SYSTEMS
CS9222 ADVANCED OPERATING SYSTEMS
 
Architecture of Big Data Solutions
Architecture of Big Data SolutionsArchitecture of Big Data Solutions
Architecture of Big Data Solutions
 
Client Centric Consistency Model
Client Centric Consistency ModelClient Centric Consistency Model
Client Centric Consistency Model
 
Hive tuning
Hive tuningHive tuning
Hive tuning
 
The CAP Theorem
The CAP Theorem The CAP Theorem
The CAP Theorem
 
Extending the Apache Kafka® Replication Protocol Across Clusters, Sanjana Kau...
Extending the Apache Kafka® Replication Protocol Across Clusters, Sanjana Kau...Extending the Apache Kafka® Replication Protocol Across Clusters, Sanjana Kau...
Extending the Apache Kafka® Replication Protocol Across Clusters, Sanjana Kau...
 
Database , 4 Data Integration
Database , 4 Data IntegrationDatabase , 4 Data Integration
Database , 4 Data Integration
 
2 PHASE COMMIT PROTOCOL
2 PHASE COMMIT PROTOCOL2 PHASE COMMIT PROTOCOL
2 PHASE COMMIT PROTOCOL
 
Distributed Mutual exclusion algorithms
Distributed Mutual exclusion algorithmsDistributed Mutual exclusion algorithms
Distributed Mutual exclusion algorithms
 
Proposal for nested document support in Lucene
Proposal for nested document support in LuceneProposal for nested document support in Lucene
Proposal for nested document support in Lucene
 
Distributed document based system
Distributed document based systemDistributed document based system
Distributed document based system
 
distributed shared memory
 distributed shared memory distributed shared memory
distributed shared memory
 
Practical Byzantine Fault Tolernace
Practical Byzantine Fault TolernacePractical Byzantine Fault Tolernace
Practical Byzantine Fault Tolernace
 
Hadoop Distributed File System
Hadoop Distributed File SystemHadoop Distributed File System
Hadoop Distributed File System
 
Introduction to Apache ZooKeeper
Introduction to Apache ZooKeeperIntroduction to Apache ZooKeeper
Introduction to Apache ZooKeeper
 

More from Thao Huynh Quang

2021-03-08-telegram-vs-signal.pdf
2021-03-08-telegram-vs-signal.pdf2021-03-08-telegram-vs-signal.pdf
2021-03-08-telegram-vs-signal.pdfThao Huynh Quang
 
Consensus and Raft algorithm (Vietnamese version)
Consensus and Raft algorithm (Vietnamese version)Consensus and Raft algorithm (Vietnamese version)
Consensus and Raft algorithm (Vietnamese version)Thao Huynh Quang
 
Kotlin Introduction with Android applications
Kotlin Introduction with Android applicationsKotlin Introduction with Android applications
Kotlin Introduction with Android applicationsThao Huynh Quang
 
Git Introduction with illustrations
Git Introduction with illustrationsGit Introduction with illustrations
Git Introduction with illustrationsThao Huynh Quang
 
Android Jetpack: Room persistence library
Android Jetpack: Room persistence libraryAndroid Jetpack: Room persistence library
Android Jetpack: Room persistence libraryThao Huynh Quang
 
Kubernetes and service mesh application
Kubernetes  and service mesh applicationKubernetes  and service mesh application
Kubernetes and service mesh applicationThao Huynh Quang
 
Kafka: All an engineer needs to know
Kafka: All an engineer needs to knowKafka: All an engineer needs to know
Kafka: All an engineer needs to knowThao Huynh Quang
 
Concurrency pattern in Kotlin
Concurrency pattern in KotlinConcurrency pattern in Kotlin
Concurrency pattern in KotlinThao Huynh Quang
 
Observability and its application
Observability and its applicationObservability and its application
Observability and its applicationThao Huynh Quang
 
Android Reverse Engineering
Android Reverse EngineeringAndroid Reverse Engineering
Android Reverse EngineeringThao Huynh Quang
 

More from Thao Huynh Quang (16)

2021-03-08-telegram-vs-signal.pdf
2021-03-08-telegram-vs-signal.pdf2021-03-08-telegram-vs-signal.pdf
2021-03-08-telegram-vs-signal.pdf
 
Consensus and Raft algorithm (Vietnamese version)
Consensus and Raft algorithm (Vietnamese version)Consensus and Raft algorithm (Vietnamese version)
Consensus and Raft algorithm (Vietnamese version)
 
Kotlin Introduction with Android applications
Kotlin Introduction with Android applicationsKotlin Introduction with Android applications
Kotlin Introduction with Android applications
 
Git Introduction with illustrations
Git Introduction with illustrationsGit Introduction with illustrations
Git Introduction with illustrations
 
Android Jetpack: Room persistence library
Android Jetpack: Room persistence libraryAndroid Jetpack: Room persistence library
Android Jetpack: Room persistence library
 
Android Performance Tips
Android Performance TipsAndroid Performance Tips
Android Performance Tips
 
Kubernetes and service mesh application
Kubernetes  and service mesh applicationKubernetes  and service mesh application
Kubernetes and service mesh application
 
Kafka: All an engineer needs to know
Kafka: All an engineer needs to knowKafka: All an engineer needs to know
Kafka: All an engineer needs to know
 
Blockchain introduction
Blockchain introductionBlockchain introduction
Blockchain introduction
 
Concurrency pattern in Kotlin
Concurrency pattern in KotlinConcurrency pattern in Kotlin
Concurrency pattern in Kotlin
 
Observability and its application
Observability and its applicationObservability and its application
Observability and its application
 
GraphQL in Android
GraphQL in AndroidGraphQL in Android
GraphQL in Android
 
Android GRPC
Android GRPCAndroid GRPC
Android GRPC
 
Android Reverse Engineering
Android Reverse EngineeringAndroid Reverse Engineering
Android Reverse Engineering
 
nosql
nosqlnosql
nosql
 
android deep linking
android deep linkingandroid deep linking
android deep linking
 

Recently uploaded

Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideChristina Lin
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样umasea
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfAlina Yurenko
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureDinusha Kumarasiri
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWave PLM
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesPhilip Schwarz
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxTier1 app
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEEVICTOR MAESTRE RAMIREZ
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Velvetech LLC
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackVICTOR MAESTRE RAMIREZ
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...soniya singh
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Hr365.us smith
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024StefanoLambiase
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsAhmed Mohamed
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odishasmiwainfosol
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityNeo4j
 
How to Track Employee Performance A Comprehensive Guide.pdf
How to Track Employee Performance A Comprehensive Guide.pdfHow to Track Employee Performance A Comprehensive Guide.pdf
How to Track Employee Performance A Comprehensive Guide.pdfLivetecs LLC
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceBrainSell Technologies
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Matt Ray
 

Recently uploaded (20)

Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with Azure
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need It
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a series
 
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort ServiceHot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEE
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStack
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML Diagrams
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered Sustainability
 
How to Track Employee Performance A Comprehensive Guide.pdf
How to Track Employee Performance A Comprehensive Guide.pdfHow to Track Employee Performance A Comprehensive Guide.pdf
How to Track Employee Performance A Comprehensive Guide.pdf
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. Salesforce
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
 

Consensus and Raft Algorithm in Distributed System