SlideShare une entreprise Scribd logo
1  sur  129
Télécharger pour lire hors ligne
Building a Distributed
Message Log from
Scratch
Tyler Treat · Iowa Code Camp · 11/04/17
- Messaging Nerd @ Apcera

- Working on nats.io 

- Distributed systems

- bravenewgeek.com
Tyler Treat
- The Log

-> What?

-> Why?

- Implementation

-> Storage mechanics

-> Data-replication techniques

-> Scaling message delivery

-> Trade-offs and lessons learned
Outline
The Log
The Log
A totally-ordered,
append-only data
structure.
The Log
0
0 1
The Log
0 1 2
The Log
0 1 2 3
The Log
0 1 2 3 4
The Log
0 1 2 3 4 5
The Log
0 1 2 3 4 5
newest recordoldest record
The Log
newest recordoldest record
The Log
Logs record what
happened and when.
caches
databases
indexes
writes
Examples in the wild:
-> Apache Kafka

-> Amazon Kinesis
-> NATS Streaming

-> Tank
Key Goals:
-> Performance
-> High Availability
-> Scalability
The purpose of this talk is to learn…

-> a bit about the internals of a log abstraction.
-> how it can achieve these goals.
-> some applied distributed systems theory.
You will probably never need to
build something like this yourself,
but it helps to know how it works.
Implemen-
tation
Implemen-
tation
Don’t try this at
home.
Some first principles…
Storage Mechanics
• The log is an ordered, immutable sequence of messages
• Messages are atomic (meaning they can’t be broken up)
• The log has a notion of message retention based on some policies
(time, number of messages, bytes, etc.)
• The log can be played back from any arbitrary position
• The log is stored on disk
• Sequential disk access is fast*
• OS page cache means sequential access often avoids disk
http://queue.acm.org/detail.cfm?id=1563874
avg-cpu: %user %nice %system %iowait %steal %idle
13.53 0.00 11.28 0.00 0.00 75.19
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
xvda 0.00 0.00 0.00 0 0
iostat
Storage Mechanics
log file
0
Storage Mechanics
log file
0 1
Storage Mechanics
log file
0 1 2
Storage Mechanics
log file
0 1 2 3
Storage Mechanics
log file
0 1 2 3 4
Storage Mechanics
log file
0 1 2 3 4 5
Storage Mechanics
log file
…
0 1 2 3 4 5
Storage Mechanics
log segment 3 filelog segment 0 file
0 1 2 3 4 5
Storage Mechanics
log segment 3 filelog segment 0 file
0 1 2 3 4 5
0 1 2 0 1 2
index segment 0 file index segment 3 file
Zero-copy Reads
user space
kernel space
page cache
disk
socket
NIC
application
read send
Zero-copy Reads
user space
kernel space
page cache
disk NIC
sendfile
Left as an exercise for the listener…

-> Batching

-> Compression
caches
databases
indexes
writes
caches
databases
indexes
writes
caches
databases
indexes
writes
How do we achieve high availability
and fault tolerance?
Questions:

-> How do we ensure continuity of reads/writes?
-> How do we replicate data?
-> How do we ensure replicas are consistent?
-> How do we keep things fast?
-> How do we ensure data is durable?
Questions:

-> How do we ensure continuity of reads/writes?
-> How do we replicate data?
-> How do we ensure replicas are consistent?
-> How do we keep things fast?
-> How do we ensure data is durable?
caches
databases
indexes
writes
Questions:

-> How do we ensure continuity of reads/writes?
-> How do we replicate data?
-> How do we ensure replicas are consistent?
-> How do we keep things fast?
-> How do we ensure data is durable?
Data-Replication Techniques
1. Gossip/multicast protocols
Epidemic broadcast trees, bimodal multicast, SWIM, HyParView, NeEM

2. Consensus protocols
2PC/3PC, Paxos, Raft, Zab, chain replication
Questions:

-> How do we ensure continuity of reads/writes?
-> How do we replicate data?
-> How do we ensure replicas are consistent?
-> How do we keep things fast?
-> How do we ensure data is durable?
Data-Replication Techniques
1. Gossip/multicast protocols
Epidemic broadcast trees, bimodal multicast, SWIM, HyParView, NeEM

2. Consensus protocols
2PC/3PC, Paxos, Raft, Zab, chain replication
Consensus-Based Replication
1. Designate a leader
2. Replicate by either:

a) waiting for all replicas

—or—
b) waiting for a quorum of replicas
Pros Cons
All Replicas
Tolerates f failures with
f+1 replicas
Latency pegged to
slowest replica
Quorum
Hides delay from a slow
replica
Tolerates f failures with
2f+1 replicas
Consensus-Based Replication
Replication in Kafka
1. Select a leader
2. Maintain in-sync replica set (ISR) (initially every replica)
3. Leader writes messages to write-ahead log (WAL)
4. Leader commits messages when all replicas in ISR ack
5. Leader maintains high-water mark (HW) of last
committed message
6. Piggyback HW on replica fetch responses which
replicas periodically checkpoint to disk
0 1 2 3 4 5
b1 (leader)
0 1 2 3 4HW: 3
0 1 2 3
HW: 3
HW: 3
b2 (follower)
b3 (follower)ISR: {b1, b2, b3}
writes
Replication in Kafka
Failure Modes
1. Leader fails
0 1 2 3 4 5
b1 (leader)
0 1 2 3 4HW: 3
0 1 2 3
HW: 3
HW: 3
b2 (follower)
b3 (follower)ISR: {b1, b2, b3}
writes
Leader fails
0 1 2 3 4 5
b1 (leader)
0 1 2 3 4HW: 3
0 1 2 3
HW: 3
HW: 3
b2 (follower)
b3 (follower)ISR: {b1, b2, b3}
writes
Leader fails
0 1 2 3 4 5
b1 (leader)
0 1 2 3 4HW: 3
0 1 2 3
HW: 3
HW: 3
b2 (follower)
b3 (follower)ISR: {b1, b2, b3}
writes
Leader fails
0 1 2 3
HW: 3
0 1 2 3
HW: 3
b2 (leader)
b3 (follower)ISR: {b2, b3}
writes
Leader fails
Failure Modes
1. Leader fails

2. Follower fails
0 1 2 3 4 5
b1 (leader)
0 1 2 3 4HW: 3
0 1 2 3
HW: 3
HW: 3
b2 (follower)
b3 (follower)ISR: {b1, b2, b3}
writes
Follower fails
0 1 2 3 4 5
b1 (leader)
0 1 2 3 4HW: 3
0 1 2 3
HW: 3
HW: 3
b2 (follower)
b3 (follower)ISR: {b1, b2, b3}
writes
Follower fails
0 1 2 3 4 5
b1 (leader)
0 1 2 3 4HW: 3
0 1 2 3
HW: 3
HW: 3
b2 (follower)
b3 (follower)ISR: {b1, b2, b3}
writes
Follower fails
replica.lag.time.max.ms
0 1 2 3 4 5
b1 (leader)
HW: 3
0 1 2 3
HW: 3
b3 (follower)ISR: {b1, b3}
writes
Follower fails
replica.lag.time.max.ms
Failure Modes
1. Leader fails

2. Follower fails

3. Follower temporarily partitioned
0 1 2 3 4 5
b1 (leader)
0 1 2 3 4HW: 3
0 1 2 3
HW: 3
HW: 3
b2 (follower)
b3 (follower)ISR: {b1, b2, b3}
writes
Follower temporarily

partitioned
Follower temporarily

partitioned
0 1 2 3 4 5
b1 (leader)
0 1 2 3 4HW: 3
0 1 2 3
HW: 3
HW: 3
b2 (follower)
b3 (follower)ISR: {b1, b2, b3}
writes
Follower temporarily

partitioned
0 1 2 3 4 5
b1 (leader)
0 1 2 3 4HW: 3
0 1 2 3
HW: 3
HW: 3
b2 (follower)
b3 (follower)ISR: {b1, b2, b3}
writes
replica.lag.time.max.ms
Follower temporarily

partitioned
0 1 2 3 4 5
b1 (leader)
0 1 2 3 4HW: 3
0 1 2 3
HW: 3
HW: 3
b2 (follower)
b3 (follower)ISR: {b1, b2}
writes
replica.lag.time.max.ms
Follower temporarily

partitioned
0 1 2 3 4 5
b1 (leader)
0 1 2 3 4HW: 5
0 1 2 3
HW: 5
HW: 3
b2 (follower)
b3 (follower)ISR: {b1, b2}
writes
5
Follower temporarily

partitioned
0 1 2 3 4 5
b1 (leader)
0 1 2 3 4HW: 5
0 1 2 3
HW: 5
HW: 3
b2 (follower)
b3 (follower)ISR: {b1, b2}
writes
5
Follower temporarily

partitioned
0 1 2 3 4 5
b1 (leader)
0 1 2 3 4HW: 5
0 1 2 3
HW: 5
HW: 4
b2 (follower)
b3 (follower)ISR: {b1, b2}
writes
5
4
Follower temporarily

partitioned
0 1 2 3 4 5
b1 (leader)
0 1 2 3 4HW: 5
0 1 2 3
HW: 5
HW: 5
b2 (follower)
b3 (follower)ISR: {b1, b2}
writes
5
4 5
Follower temporarily

partitioned
0 1 2 3 4 5
b1 (leader)
0 1 2 3 4HW: 5
0 1 2 3
HW: 5
HW: 5
b2 (follower)
b3 (follower)ISR: {b1, b2, b3}
writes
5
4 5
Replication in NATS Streaming
1. Metadata Raft group replicates client state

2. Separate Raft group per topic replicates messages
and subscriptions

3. Conceptually, two logs: Raft log and message log
http://thesecretlivesofdata.com/raft
Challenges
1. Scaling Raft
Scaling Raft
With a single topic, one node is elected leader and it
heartbeats messages to followers
Scaling Raft
As the number of topics increases unbounded, so do the
number of Raft groups.
Scaling Raft
Technique 1: run a fixed number of Raft groups and use
a consistent hash to map a topic to a group.
Scaling Raft
Technique 2: run an entire node’s worth of topics as a
single group using a layer on top of Raft.
https://www.cockroachlabs.com/blog/scaling-raft
Challenges
1. Scaling Raft
2. Dual writes
Dual Writes
Raft
Store
committed
Dual Writes
msg 1Raft
Store
committed
Dual Writes
msg 1 msg 2Raft
Store
committed
Dual Writes
msg 1 msg 2Raft
msg 1 msg 2Store
committed
Dual Writes
msg 1 msg 2 subRaft
msg 1 msg 2Store
committed
Dual Writes
msg 1 msg 2 sub msg 3Raft
msg 1 msg 2Store
committed
Dual Writes
msg 1 msg 2 sub msg 3
add
peer
msg 4Raft
msg 1 msg 2 msg 3Store
committed
Dual Writes
msg 1 msg 2 sub msg 3
add
peer
msg 4Raft
msg 1 msg 2 msg 3Store
committed
Dual Writes
msg 1 msg 2 sub msg 3
add
peer
msg 4Raft
msg 1 msg 2 msg 3 msg 4Store
commit
Dual Writes
msg 1 msg 2 sub msg 3
add
peer
msg 4Raft
msg 1 msg 2 msg 3 msg 4Store
0 1 2 3 4 5
0 1 2 3
physical offset
logical offset
Dual Writes
msg 1 msg 2 sub msg 3
add
peer
msg 4Raft
msg 1 msg 2Index
0 1 2 3 4 5
0 1 2 3
physical offset
logical offset
msg 3 msg 4
Treat the Raft log as our message
write-ahead log.
Questions:

-> How do we ensure continuity of reads/writes?
-> How do we replicate data?
-> How do we ensure replicas are consistent?
-> How do we keep things fast?
-> How do we ensure data is durable?
Performance
1. Publisher acks 

-> broker acks on commit (slow but safe)

-> broker acks on local log append (fast but unsafe)

-> publisher doesn’t wait for ack (fast but unsafe) 

2. Don’t fsync, rely on replication for durability

3. Keep disk access sequential and maximize zero-copy reads

4. Batch aggressively
Questions:

-> How do we ensure continuity of reads/writes?
-> How do we replicate data?
-> How do we ensure replicas are consistent?
-> How do we keep things fast?
-> How do we ensure data is durable?
Durability
1. Quorum guarantees durability

-> Comes for free with Raft

-> In Kafka, need to configure min.insync.replicas and acks, e.g.

topic with replication factor 3, min.insync.replicas=2, and

acks=all

2. Disable unclean leader elections

3. At odds with availability,

i.e. no quorum == no reads/writes
Scaling Message Delivery
1. Partitioning
Partitioning is how we scale linearly.
caches
databases
indexes
writes
HELLA WRITES
caches
databases
indexes
caches
databases
indexes
HELLA WRITES
caches
databases
indexes
writes
writes
writes
writes
Topic: purchases
Topic: inventory
caches
databases
indexes
writes
writes
writes
writes
Topic: purchases
Topic: inventory
Accounts A-M
Accounts N-Z
SKUs A-M
SKUs N-Z
Scaling Message Delivery
1. Partitioning
2. High fan-out
High Fan-out
1. Observation: with an immutable log, there are no
stale/phantom reads

2. This should make it “easy” (in theory) to scale to a
large number of consumers (e.g. hundreds of
thousands of IoT/edge devices)

3. With Raft, we can use “non-voters” to act as read
replicas and load balance consumers
Scaling Message Delivery
1. Partitioning
2. High fan-out
3. Push vs. pull
Push vs. Pull
• In Kafka, consumers pull data from brokers
• In NATS Streaming, brokers push data to consumers
• Pros/cons to both:

-> With push we need flow control; implicit in pull

-> Need to make decisions about optimizing for

latency vs. throughput

-> Thick vs. thin client and API ergonomics
Scaling Message Delivery
1. Partitioning
2. High fan-out
3. Push vs. pull
4. Bookkeeping
Bookkeeping
• Two ways to track position in the log:

-> Have the server track it for consumers

-> Have consumers track it

• Trade-off between API simplicity and performance/server
complexity

• Also, consumers might not have stable storage (e.g. IoT device,
ephemeral container, etc.)

• Can we split the difference?
Offset Storage
• Can store offsets themselves in the log (in Kafka,
originally had to store them in ZooKeeper)

• Clients periodically checkpoint offset to log

• Use log compaction to retain only latest offsets

• On recovery, fetch latest offset from log
Offset Storage
bob-foo-0

11
alice-foo-0

15Offsets
0 1 2 3
bob-foo-1

20
bob-foo-0

18
4
bob-foo-0

21
Offset Storage
bob-foo-0

11
alice-foo-0

15Offsets
0 1 2 3
bob-foo-1

20
bob-foo-0

18
4
bob-foo-0

21
Offset Storage
alice-foo-0

15
bob-foo-1

20Offsets
1 2 4
bob-foo-0

21
Offset Storage
Advantages:

-> Fault-tolerant

-> Consistent reads

-> High write throughput (unlike ZooKeeper)

-> Reuses existing structures, so less server

complexity
Trade-offs and Lessons Learned
1. Competing goals
Competing Goals
1. Performance

-> Easy to make something fast that’s not fault-tolerant or scalable

-> Simplicity of mechanism makes this easier

-> Simplicity of “UX” makes this harder
2. Scalability (and fault-tolerance)

-> Scalability and FT are at odds with simplicity

-> Cannot be an afterthought—needs to be designed from day 1
3. Simplicity (“UX”)

-> Simplicity of mechanism shifts complexity elsewhere (e.g. client)

-> Easy to let server handle complexity; hard when that needs to be

distributed and consistent while still being fast
Trade-offs and Lessons Learned
1. Competing goals
2. Availability vs. Consistency
Availability vs. Consistency
• CAP theorem
• Consistency requires quorum which hinders
availability and performance
• Minimize what you need to replicate
Trade-offs and Lessons Learned
1. Competing goals
2. Availability vs. Consistency
3. Aim for simplicity
Distributed systems are complex enough.

Simple is usually better (and faster).
Trade-offs and Lessons Learned
1. Competing goals
2. Availability vs. Consistency
3. Aim for simplicity
4. Lean on existing work
Don’t roll your own coordination protocol,

use Raft, ZooKeeper, etc.
Trade-offs and Lessons Learned
1. Competing goals
2. Availability vs. Consistency
3. Aim for simplicity
4. Lean on existing work
5. There are probably edge cases for which you
haven’t written tests
There are many failure modes, and you can
only write so many tests.



Formal methods and property-based/
generative testing can help.
Trade-offs and Lessons Learned
1. Competing goals
2. Availability vs. Consistency
3. Aim for simplicity
4. Lean on existing work
5. There are probably edge cases for which you
haven’t written tests
6. Be honest with your users
Don’t try to be everything to everyone. Be
explicit about design decisions, trade-
offs, guarantees, defaults, etc.
Thanks!
@tyler_treat

bravenewgeek.com

Contenu connexe

Tendances

nftables - the evolution of Linux Firewall
nftables - the evolution of Linux Firewallnftables - the evolution of Linux Firewall
nftables - the evolution of Linux FirewallMarian Marinov
 
Tickling CGI Problems (Tcl Web Server Scripting Vulnerability Research)
Tickling CGI Problems (Tcl Web Server Scripting Vulnerability Research)Tickling CGI Problems (Tcl Web Server Scripting Vulnerability Research)
Tickling CGI Problems (Tcl Web Server Scripting Vulnerability Research)Derek Callaway
 
RxNetty vs Tomcat Performance Results
RxNetty vs Tomcat Performance ResultsRxNetty vs Tomcat Performance Results
RxNetty vs Tomcat Performance ResultsBrendan Gregg
 
High Performance Erlang - Pitfalls and Solutions
High Performance Erlang - Pitfalls and SolutionsHigh Performance Erlang - Pitfalls and Solutions
High Performance Erlang - Pitfalls and SolutionsYinghai Lu
 
CETH for XDP [Linux Meetup Santa Clara | July 2016]
CETH for XDP [Linux Meetup Santa Clara | July 2016] CETH for XDP [Linux Meetup Santa Clara | July 2016]
CETH for XDP [Linux Meetup Santa Clara | July 2016] IO Visor Project
 
为11.2.0.2 grid infrastructure添加节点
为11.2.0.2 grid infrastructure添加节点为11.2.0.2 grid infrastructure添加节点
为11.2.0.2 grid infrastructure添加节点maclean liu
 
Plmce2k15 15 tips galera cluster
Plmce2k15   15 tips galera clusterPlmce2k15   15 tips galera cluster
Plmce2k15 15 tips galera clusterFrederic Descamps
 
Tips and Tricks for Operating Apache Kafka
Tips and Tricks for Operating Apache KafkaTips and Tricks for Operating Apache Kafka
Tips and Tricks for Operating Apache KafkaAll Things Open
 
Uncloaking IP Addresses on IRC
Uncloaking IP Addresses on IRCUncloaking IP Addresses on IRC
Uncloaking IP Addresses on IRCDerek Callaway
 
Tuning TCP and NGINX on EC2
Tuning TCP and NGINX on EC2Tuning TCP and NGINX on EC2
Tuning TCP and NGINX on EC2Chartbeat
 
Stupid iptables tricks
Stupid iptables tricksStupid iptables tricks
Stupid iptables tricksJim MacLeod
 
Linux Profiling at Netflix
Linux Profiling at NetflixLinux Profiling at Netflix
Linux Profiling at NetflixBrendan Gregg
 
Troubleshooting common oslo.messaging and RabbitMQ issues
Troubleshooting common oslo.messaging and RabbitMQ issuesTroubleshooting common oslo.messaging and RabbitMQ issues
Troubleshooting common oslo.messaging and RabbitMQ issuesMichael Klishin
 
Presentation iv implementasi 802x eap tls peap mscha pv2
Presentation iv implementasi  802x eap tls peap mscha pv2Presentation iv implementasi  802x eap tls peap mscha pv2
Presentation iv implementasi 802x eap tls peap mscha pv2Hell19
 
Linux HTTPS/TCP/IP Stack for the Fast and Secure Web
Linux HTTPS/TCP/IP Stack for the Fast and Secure WebLinux HTTPS/TCP/IP Stack for the Fast and Secure Web
Linux HTTPS/TCP/IP Stack for the Fast and Secure WebAll Things Open
 
Troubleshooting Tips from a Docker Support Engineer
Troubleshooting Tips from a Docker Support EngineerTroubleshooting Tips from a Docker Support Engineer
Troubleshooting Tips from a Docker Support EngineerJeff Anderson
 
Advanced percona xtra db cluster in a nutshell... la suite plsc2016
Advanced percona xtra db cluster in a nutshell... la suite plsc2016Advanced percona xtra db cluster in a nutshell... la suite plsc2016
Advanced percona xtra db cluster in a nutshell... la suite plsc2016Frederic Descamps
 
Kernel Recipes 2019 - Kernel documentation: past, present, and future
Kernel Recipes 2019 - Kernel documentation: past, present, and futureKernel Recipes 2019 - Kernel documentation: past, present, and future
Kernel Recipes 2019 - Kernel documentation: past, present, and futureAnne Nicolas
 

Tendances (20)

Dns rebinding
Dns rebindingDns rebinding
Dns rebinding
 
nftables - the evolution of Linux Firewall
nftables - the evolution of Linux Firewallnftables - the evolution of Linux Firewall
nftables - the evolution of Linux Firewall
 
Tickling CGI Problems (Tcl Web Server Scripting Vulnerability Research)
Tickling CGI Problems (Tcl Web Server Scripting Vulnerability Research)Tickling CGI Problems (Tcl Web Server Scripting Vulnerability Research)
Tickling CGI Problems (Tcl Web Server Scripting Vulnerability Research)
 
RxNetty vs Tomcat Performance Results
RxNetty vs Tomcat Performance ResultsRxNetty vs Tomcat Performance Results
RxNetty vs Tomcat Performance Results
 
High Performance Erlang - Pitfalls and Solutions
High Performance Erlang - Pitfalls and SolutionsHigh Performance Erlang - Pitfalls and Solutions
High Performance Erlang - Pitfalls and Solutions
 
CETH for XDP [Linux Meetup Santa Clara | July 2016]
CETH for XDP [Linux Meetup Santa Clara | July 2016] CETH for XDP [Linux Meetup Santa Clara | July 2016]
CETH for XDP [Linux Meetup Santa Clara | July 2016]
 
为11.2.0.2 grid infrastructure添加节点
为11.2.0.2 grid infrastructure添加节点为11.2.0.2 grid infrastructure添加节点
为11.2.0.2 grid infrastructure添加节点
 
Linux Network Stack
Linux Network StackLinux Network Stack
Linux Network Stack
 
Plmce2k15 15 tips galera cluster
Plmce2k15   15 tips galera clusterPlmce2k15   15 tips galera cluster
Plmce2k15 15 tips galera cluster
 
Tips and Tricks for Operating Apache Kafka
Tips and Tricks for Operating Apache KafkaTips and Tricks for Operating Apache Kafka
Tips and Tricks for Operating Apache Kafka
 
Uncloaking IP Addresses on IRC
Uncloaking IP Addresses on IRCUncloaking IP Addresses on IRC
Uncloaking IP Addresses on IRC
 
Tuning TCP and NGINX on EC2
Tuning TCP and NGINX on EC2Tuning TCP and NGINX on EC2
Tuning TCP and NGINX on EC2
 
Stupid iptables tricks
Stupid iptables tricksStupid iptables tricks
Stupid iptables tricks
 
Linux Profiling at Netflix
Linux Profiling at NetflixLinux Profiling at Netflix
Linux Profiling at Netflix
 
Troubleshooting common oslo.messaging and RabbitMQ issues
Troubleshooting common oslo.messaging and RabbitMQ issuesTroubleshooting common oslo.messaging and RabbitMQ issues
Troubleshooting common oslo.messaging and RabbitMQ issues
 
Presentation iv implementasi 802x eap tls peap mscha pv2
Presentation iv implementasi  802x eap tls peap mscha pv2Presentation iv implementasi  802x eap tls peap mscha pv2
Presentation iv implementasi 802x eap tls peap mscha pv2
 
Linux HTTPS/TCP/IP Stack for the Fast and Secure Web
Linux HTTPS/TCP/IP Stack for the Fast and Secure WebLinux HTTPS/TCP/IP Stack for the Fast and Secure Web
Linux HTTPS/TCP/IP Stack for the Fast and Secure Web
 
Troubleshooting Tips from a Docker Support Engineer
Troubleshooting Tips from a Docker Support EngineerTroubleshooting Tips from a Docker Support Engineer
Troubleshooting Tips from a Docker Support Engineer
 
Advanced percona xtra db cluster in a nutshell... la suite plsc2016
Advanced percona xtra db cluster in a nutshell... la suite plsc2016Advanced percona xtra db cluster in a nutshell... la suite plsc2016
Advanced percona xtra db cluster in a nutshell... la suite plsc2016
 
Kernel Recipes 2019 - Kernel documentation: past, present, and future
Kernel Recipes 2019 - Kernel documentation: past, present, and futureKernel Recipes 2019 - Kernel documentation: past, present, and future
Kernel Recipes 2019 - Kernel documentation: past, present, and future
 

Similaire à Building a Distributed Message Log from Scratch

Introduction to Apache Kafka
Introduction to Apache KafkaIntroduction to Apache Kafka
Introduction to Apache KafkaShiao-An Yuan
 
Building a Replicated Logging System with Apache Kafka
Building a Replicated Logging System with Apache KafkaBuilding a Replicated Logging System with Apache Kafka
Building a Replicated Logging System with Apache KafkaGuozhang Wang
 
JDD2015: Make your world event driven - Krzysztof Dębski
JDD2015: Make your world event driven - Krzysztof DębskiJDD2015: Make your world event driven - Krzysztof Dębski
JDD2015: Make your world event driven - Krzysztof DębskiPROIDEA
 
Dmytro Okhonko "LogDevice: durable and highly available sequential distribute...
Dmytro Okhonko "LogDevice: durable and highly available sequential distribute...Dmytro Okhonko "LogDevice: durable and highly available sequential distribute...
Dmytro Okhonko "LogDevice: durable and highly available sequential distribute...Fwdays
 
Технологии работы с дисковыми хранилищами и файловыми системами Windows Serve...
Технологии работы с дисковыми хранилищами и файловыми системами Windows Serve...Технологии работы с дисковыми хранилищами и файловыми системами Windows Serve...
Технологии работы с дисковыми хранилищами и файловыми системами Windows Serve...Виталий Стародубцев
 
Performance and predictability (1)
Performance and predictability (1)Performance and predictability (1)
Performance and predictability (1)RichardWarburton
 
Performance and Predictability - Richard Warburton
Performance and Predictability - Richard WarburtonPerformance and Predictability - Richard Warburton
Performance and Predictability - Richard WarburtonJAXLondon2014
 
MySQL HA with PaceMaker
MySQL HA with  PaceMakerMySQL HA with  PaceMaker
MySQL HA with PaceMakerKris Buytaert
 
Network Programming: Data Plane Development Kit (DPDK)
Network Programming: Data Plane Development Kit (DPDK)Network Programming: Data Plane Development Kit (DPDK)
Network Programming: Data Plane Development Kit (DPDK)Andriy Berestovskyy
 
[若渴]Study on Side Channel Attacks and Countermeasures
[若渴]Study on Side Channel Attacks and Countermeasures [若渴]Study on Side Channel Attacks and Countermeasures
[若渴]Study on Side Channel Attacks and Countermeasures Aj MaChInE
 
Experiences building a distributed shared log on RADOS - Noah Watkins
Experiences building a distributed shared log on RADOS - Noah WatkinsExperiences building a distributed shared log on RADOS - Noah Watkins
Experiences building a distributed shared log on RADOS - Noah WatkinsCeph Community
 
MySQL Tuning using digested slow-logs
MySQL Tuning using digested slow-logsMySQL Tuning using digested slow-logs
MySQL Tuning using digested slow-logsBob Burgess
 
Citi TechTalk Session 2: Kafka Deep Dive
Citi TechTalk Session 2: Kafka Deep DiveCiti TechTalk Session 2: Kafka Deep Dive
Citi TechTalk Session 2: Kafka Deep Diveconfluent
 
Lock, Stock and Backup: Data Guaranteed
Lock, Stock and Backup: Data GuaranteedLock, Stock and Backup: Data Guaranteed
Lock, Stock and Backup: Data GuaranteedJervin Real
 
Experience In Building Scalable Web Sites Through Infrastructure's View
Experience In Building Scalable Web Sites Through Infrastructure's ViewExperience In Building Scalable Web Sites Through Infrastructure's View
Experience In Building Scalable Web Sites Through Infrastructure's ViewPhuwadon D
 
Near Real time Indexing Kafka Messages to Apache Blur using Spark Streaming
Near Real time Indexing Kafka Messages to Apache Blur using Spark StreamingNear Real time Indexing Kafka Messages to Apache Blur using Spark Streaming
Near Real time Indexing Kafka Messages to Apache Blur using Spark StreamingDibyendu Bhattacharya
 
Tales from the four-comma club: Managing Kafka as a service at Salesforce | L...
Tales from the four-comma club: Managing Kafka as a service at Salesforce | L...Tales from the four-comma club: Managing Kafka as a service at Salesforce | L...
Tales from the four-comma club: Managing Kafka as a service at Salesforce | L...HostedbyConfluent
 
Jdd2014: High performance logging - Peter Lawrey
Jdd2014: High performance logging - Peter LawreyJdd2014: High performance logging - Peter Lawrey
Jdd2014: High performance logging - Peter LawreyPROIDEA
 
Sql server backup internals
Sql server backup internalsSql server backup internals
Sql server backup internalsHamid J. Fard
 
Art of the Possible_Tim Faulkes.pdf
Art of the Possible_Tim Faulkes.pdfArt of the Possible_Tim Faulkes.pdf
Art of the Possible_Tim Faulkes.pdfAerospike, Inc.
 

Similaire à Building a Distributed Message Log from Scratch (20)

Introduction to Apache Kafka
Introduction to Apache KafkaIntroduction to Apache Kafka
Introduction to Apache Kafka
 
Building a Replicated Logging System with Apache Kafka
Building a Replicated Logging System with Apache KafkaBuilding a Replicated Logging System with Apache Kafka
Building a Replicated Logging System with Apache Kafka
 
JDD2015: Make your world event driven - Krzysztof Dębski
JDD2015: Make your world event driven - Krzysztof DębskiJDD2015: Make your world event driven - Krzysztof Dębski
JDD2015: Make your world event driven - Krzysztof Dębski
 
Dmytro Okhonko "LogDevice: durable and highly available sequential distribute...
Dmytro Okhonko "LogDevice: durable and highly available sequential distribute...Dmytro Okhonko "LogDevice: durable and highly available sequential distribute...
Dmytro Okhonko "LogDevice: durable and highly available sequential distribute...
 
Технологии работы с дисковыми хранилищами и файловыми системами Windows Serve...
Технологии работы с дисковыми хранилищами и файловыми системами Windows Serve...Технологии работы с дисковыми хранилищами и файловыми системами Windows Serve...
Технологии работы с дисковыми хранилищами и файловыми системами Windows Serve...
 
Performance and predictability (1)
Performance and predictability (1)Performance and predictability (1)
Performance and predictability (1)
 
Performance and Predictability - Richard Warburton
Performance and Predictability - Richard WarburtonPerformance and Predictability - Richard Warburton
Performance and Predictability - Richard Warburton
 
MySQL HA with PaceMaker
MySQL HA with  PaceMakerMySQL HA with  PaceMaker
MySQL HA with PaceMaker
 
Network Programming: Data Plane Development Kit (DPDK)
Network Programming: Data Plane Development Kit (DPDK)Network Programming: Data Plane Development Kit (DPDK)
Network Programming: Data Plane Development Kit (DPDK)
 
[若渴]Study on Side Channel Attacks and Countermeasures
[若渴]Study on Side Channel Attacks and Countermeasures [若渴]Study on Side Channel Attacks and Countermeasures
[若渴]Study on Side Channel Attacks and Countermeasures
 
Experiences building a distributed shared log on RADOS - Noah Watkins
Experiences building a distributed shared log on RADOS - Noah WatkinsExperiences building a distributed shared log on RADOS - Noah Watkins
Experiences building a distributed shared log on RADOS - Noah Watkins
 
MySQL Tuning using digested slow-logs
MySQL Tuning using digested slow-logsMySQL Tuning using digested slow-logs
MySQL Tuning using digested slow-logs
 
Citi TechTalk Session 2: Kafka Deep Dive
Citi TechTalk Session 2: Kafka Deep DiveCiti TechTalk Session 2: Kafka Deep Dive
Citi TechTalk Session 2: Kafka Deep Dive
 
Lock, Stock and Backup: Data Guaranteed
Lock, Stock and Backup: Data GuaranteedLock, Stock and Backup: Data Guaranteed
Lock, Stock and Backup: Data Guaranteed
 
Experience In Building Scalable Web Sites Through Infrastructure's View
Experience In Building Scalable Web Sites Through Infrastructure's ViewExperience In Building Scalable Web Sites Through Infrastructure's View
Experience In Building Scalable Web Sites Through Infrastructure's View
 
Near Real time Indexing Kafka Messages to Apache Blur using Spark Streaming
Near Real time Indexing Kafka Messages to Apache Blur using Spark StreamingNear Real time Indexing Kafka Messages to Apache Blur using Spark Streaming
Near Real time Indexing Kafka Messages to Apache Blur using Spark Streaming
 
Tales from the four-comma club: Managing Kafka as a service at Salesforce | L...
Tales from the four-comma club: Managing Kafka as a service at Salesforce | L...Tales from the four-comma club: Managing Kafka as a service at Salesforce | L...
Tales from the four-comma club: Managing Kafka as a service at Salesforce | L...
 
Jdd2014: High performance logging - Peter Lawrey
Jdd2014: High performance logging - Peter LawreyJdd2014: High performance logging - Peter Lawrey
Jdd2014: High performance logging - Peter Lawrey
 
Sql server backup internals
Sql server backup internalsSql server backup internals
Sql server backup internals
 
Art of the Possible_Tim Faulkes.pdf
Art of the Possible_Tim Faulkes.pdfArt of the Possible_Tim Faulkes.pdf
Art of the Possible_Tim Faulkes.pdf
 

Plus de Tyler Treat

Cloud-Native Observability
Cloud-Native ObservabilityCloud-Native Observability
Cloud-Native ObservabilityTyler Treat
 
The Observability Pipeline
The Observability PipelineThe Observability Pipeline
The Observability PipelineTyler Treat
 
Distributed Systems Are a UX Problem
Distributed Systems Are a UX ProblemDistributed Systems Are a UX Problem
Distributed Systems Are a UX ProblemTyler Treat
 
The Future of Ops
The Future of OpsThe Future of Ops
The Future of OpsTyler Treat
 
So You Wanna Go Fast?
So You Wanna Go Fast?So You Wanna Go Fast?
So You Wanna Go Fast?Tyler Treat
 
Simple Solutions for Complex Problems
Simple Solutions for Complex ProblemsSimple Solutions for Complex Problems
Simple Solutions for Complex ProblemsTyler Treat
 
Probabilistic algorithms for fun and pseudorandom profit
Probabilistic algorithms for fun and pseudorandom profitProbabilistic algorithms for fun and pseudorandom profit
Probabilistic algorithms for fun and pseudorandom profitTyler Treat
 
The Economics of Scale: Promises and Perils of Going Distributed
The Economics of Scale: Promises and Perils of Going DistributedThe Economics of Scale: Promises and Perils of Going Distributed
The Economics of Scale: Promises and Perils of Going DistributedTyler Treat
 
From Mainframe to Microservice: An Introduction to Distributed Systems
From Mainframe to Microservice: An Introduction to Distributed SystemsFrom Mainframe to Microservice: An Introduction to Distributed Systems
From Mainframe to Microservice: An Introduction to Distributed SystemsTyler Treat
 

Plus de Tyler Treat (9)

Cloud-Native Observability
Cloud-Native ObservabilityCloud-Native Observability
Cloud-Native Observability
 
The Observability Pipeline
The Observability PipelineThe Observability Pipeline
The Observability Pipeline
 
Distributed Systems Are a UX Problem
Distributed Systems Are a UX ProblemDistributed Systems Are a UX Problem
Distributed Systems Are a UX Problem
 
The Future of Ops
The Future of OpsThe Future of Ops
The Future of Ops
 
So You Wanna Go Fast?
So You Wanna Go Fast?So You Wanna Go Fast?
So You Wanna Go Fast?
 
Simple Solutions for Complex Problems
Simple Solutions for Complex ProblemsSimple Solutions for Complex Problems
Simple Solutions for Complex Problems
 
Probabilistic algorithms for fun and pseudorandom profit
Probabilistic algorithms for fun and pseudorandom profitProbabilistic algorithms for fun and pseudorandom profit
Probabilistic algorithms for fun and pseudorandom profit
 
The Economics of Scale: Promises and Perils of Going Distributed
The Economics of Scale: Promises and Perils of Going DistributedThe Economics of Scale: Promises and Perils of Going Distributed
The Economics of Scale: Promises and Perils of Going Distributed
 
From Mainframe to Microservice: An Introduction to Distributed Systems
From Mainframe to Microservice: An Introduction to Distributed SystemsFrom Mainframe to Microservice: An Introduction to Distributed Systems
From Mainframe to Microservice: An Introduction to Distributed Systems
 

Dernier

Buds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in NoidaBuds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in Noidabntitsolutionsrishis
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio, Inc.
 
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Cizo Technology Services
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureDinusha Kumarasiri
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作qr0udbr0
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesŁukasz Chruściel
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityNeo4j
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Andreas Granig
 
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
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprisepreethippts
 
What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....kzayra69
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Angel Borroy López
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaHanief Utama
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...confluent
 
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
 
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
 
Best Web Development Agency- Idiosys USA.pdf
Best Web Development Agency- Idiosys USA.pdfBest Web Development Agency- Idiosys USA.pdf
Best Web Development Agency- Idiosys USA.pdfIdiosysTechnologies1
 
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
 

Dernier (20)

Buds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in NoidaBuds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in Noida
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
 
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with Azure
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New Features
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered Sustainability
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024
 
Advantages of Odoo ERP 17 for Your Business
Advantages of Odoo ERP 17 for Your BusinessAdvantages of Odoo ERP 17 for Your Business
Advantages of Odoo ERP 17 for Your Business
 
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...
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprise
 
What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief Utama
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
 
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
 
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
 
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
 
Best Web Development Agency- Idiosys USA.pdf
Best Web Development Agency- Idiosys USA.pdfBest Web Development Agency- Idiosys USA.pdf
Best Web Development Agency- Idiosys USA.pdf
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEE
 

Building a Distributed Message Log from Scratch