SlideShare a Scribd company logo
1 of 28
Download to read offline
Julien Quintard
Technical Staff, Docker
Quentin Hocquet
Software Engineer, Docker
Infinit’s Next Generation Key-Value Store
1. Analysis
Agenda
2. Introducing Infinit’s key-value store
3. API
4. Demo
Key-value stores have increasingly gained in popularity as a fundamental
layer for storing and sharing content in a distributed system.
Such a construct can be used (and has been extensively) to manage:
• Metadata
• Logs
• etc.
The most well-known key-value stores today are etcd, ZooKeeper and
Consul.
Introduction
Why the hell yet another key-value
store?
1. Analysis
Depending on the use case, the requirements on the underlying key-value
store vary on several levels:
• Scalability
• Resilience
• Performance
• Security
• Consistency
We believe that the community needs a key-value store for the all the other
applications.
Problem
The main problem comes from the distribution mechanism which is based on
a manager/worker model.
Model
manager manager
worker
worker
worker
This model, even though well-suited to many use cases, suffers from its
design on many levels:
• Scalability: limited by the scalability of manager nodes
• Resilience: overflow could lead cascading effects
• Performance: limited capability to handle slaves and clients’ requests
• Security: managers are ideal targets
• Consistency: impossibility to handle many parallel update requests
Limitations
So what makes it different (apart
from not having a name, yet!)?
2. Introducing Infinit’s
key-value store
What makes it different from the etcd, Consul, ZooKeeper and other key-
value stores is the use of a decentralized model (i.e peer-to-peer) where
every node is equipotent.
Presentation
node
node
node
Such a decentralized architecture is naturally adapted to scaling since nodes
can join and leave without a need to keep track of them through a central
directory.
Instead, the directory is collectively managed by the cluster through
algorithms known as an overlay network (routing requests to the right
nodes) and distributed hash table or DHT (redundancy, self-healing etc.).
BONUS: Infinit’s key-value store can be deployed over a single-node cluster,
something that is not possible for the manager-worker-based systems.
Scalability
Systems based on the manager/worker model need to dimension the system
in order to support the worker nodes and handle clients’ requests.
On the contrary, a decentralized architecture does away with bottlenecks,
single points of failures and the associated slow performance since requests
are not concentrated on a small subset of critical manager nodes.
Even more, the more nodes in the system, the faster requests will be
processed because the load is naturally distributed between all the nodes.
Resilience & Performance
Unlike in manager-worker-model-based systems, there is no authoritative
node nor more privileged nodes in a decentralized architecture.
As such, an attacker would have no choice but to either take control of a
large portion of the nodes composing the cluster or to find a breach in the
network protocols in order to attack the system.
Security
Consistency is all about reaching consensus within
the set of servers that host the replicas of a
piece of data.
Distributed systems based on a manager/worker
model rely on the managers to maintain
consistency whenever an update is requested.
Due to the concentration of such requests on the
managers, the number of parallel requests that
can be processed is limited.
Consistency1/4
DISTRIBUTED
(manager/worker)
managerleader
worker
Infinit’s key-value store instead relies on block-
based quorums, meaning there are as many
quorums, hence potential parallel consensus run,
as there are blocks (a.k.a values) in the system.
This approach means that parallel requests are
handled by disjoint quorums, leading to better
performance, security and fault tolerance.
Consistency2/4
DECENTRALIZED
(peer-to-peer)
node
Consistency3/4
Block-based quorums also means the complexity of the consensus algorithm
is function of the redundancy factor, not the number of nodes in the cluster
(unlike manager/worker systems).
In other words, in a manager/worker model, a cluster of 1 million worker
nodes would require, say 100 managers. Given the quadratic complexity of
consensus algorithms, a consensus among that many nodes would take
several seconds to be reached.
In a decentralized architecture, the complexity remains the same no matter
the number of nodes in the network.
Most distributed systems nowadays rely on Raft for consensus. However,
because Raft generates a lot of noise and because it is impractical in
systems that can have millions of quorums, we have decided to use Paxos.
Also, because the key-value store is a fundamental layer, Infinit’s is strongly
consistent to allow for more demanding applications.
NOTE: the consensus algorithm can be customized to switch to another one
with different consistency guarantees.
Consistency4/4
As a summary, Infinit key-value store’s decentralized architecture brings a
number of advantages over manager-worker-based distributed systems.
This model offers better performance, security and resilience by removing
the critical manager nodes.
Also, coupled with a block-based quorums, such a model allows for extremely
scalable applications.
Conclusion
I hope it speaks SOAP!
3. API
Infinit’s key-value store differs from other key-value stores in two major
ways:
• Key: one cannot choose the key associated with the values it stores;
Infinit’s key-value store generates an address so as to optimize data
placement for load balancing, fault tolerance and more.
• Value: in Infinit’s, there are different types of value (known as blocks),
each with their tradeoffs.
Overview
In order to properly use Infinit’s key-value store, one needs to perfectly
understand the various block types. In its purest form, there are two types
of blocks, on top of which many other can be created:
• Mutable Blocks: costly, subject to conflicts, need consensus when updated,
need to invalidate their cache to refresh the value etc.
• Immutable Blocks (content hashing): cannot conflict, can be cached
forever, can be fetched from any source (integrity easy to validate) etc.
Blocks
Infinit key-value store’s API is composed of two types of calls:
• Block Generation:
• MakeImmutableBlock() -> (Address, Block)
• MakeMutableBlock() -> (Address, Block)
• Key-Value Store Manipulation:
• Insert(Block) -> Boolean
• Update(Block) -> Boolean
• Remove(Address) -> Boolean
• Fetch(Address) -> Block
API
Ok, now show me the money!
4. Demo
def connect(endpoint):
import grpc
import doughnut_pb2_grpc
channel = grpc.insecure_channel(endpoint)
return doughnut_pb2_grpc.DoughnutStub(channel)
def init(kv):
# Create a mutable block representing the index
index = kv.MakeMutableBlock(MakeMutableBlockRequest())
# Set its payload to an emtpy list
index.data_plain = pickle.dumps([])
# Insert the block
kv.Insert(InsertRequest(block = index))
# Return its address
return index.address.hex()
def index(kv, addr):
return kv.Fetch(FetchRequest(address = unhexlify(addr),
decrypt_data = True)).block
Example
index
MutableBlock
image
ImmutableBlock
def add(kv, addr, content):
idx = index(kv, addr)
# Create the content mutable block
content_block = kv.MakeImmutableBlock(
MakeImmutableBlockRequest(data = pickle.dumps(content)))
# Append the address to the index
l = pickle.loads(idx.data_plain)
l.append(content_block.address)
idx.data_plain = pickle.dumps(l)
# Update the index
update = kv.Update(UpdateRequest(block = idx))
# Push the content block
kv.Insert(InsertRequest(block = content_block))
Example
def add(kv, addr, content):
content['conflicts'] = 0
idx = index(kv, addr)
while True:
content_block = kv.MakeImmutableBlock(
MakeImmutableBlockRequest(data = pickle.dumps(content)))
l = pickle.loads(idx.data_plain)
l.append(content_block.address)
idx.data_plain = pickle.dumps(l)
time.sleep(random.random() * 0.1)
update = kv.Update(UpdateRequest(block = idx))
if update.error == SUCCESS:
break
elif update.error == CONFLICT::
content['conflicts'] = content['conflicts'] + 1
idx = update.current
else:
raise Exception(update.error)
kv.Insert(InsertRequest(block = content_block))
Example
endpoint = sys.argv[1]
address = sys.argv[2]
kv = connect(endpoint)
while True:
images = requests.get('https://api.imgur.com/3/gallery/random/random/0.json')
for image in images:
content = requests.get(image['link'], headers = headers).content
add(kv, address,
{
'img': content,
'host': socket.gethostname(),
})
time.sleep(random.random())
Example: writer
endpoint = sys.argv[1]
address = sys.argv[2]
kv = connect(endpoint)
from wsgiref.simple_server import make_server
def simple_app(environ, start_response):
status = '200 OK'
headers = [('Content-type', 'text/html')]
start_response(status, headers)
i = 0
images = pickle.loads(index(kv, address).data_plain)
for l in images[-32:]:
data = pickle.loads(kv.Fetch(FetchRequest(address = l)).block.data)
img = base64.b64encode(data['img']).decode('latin-1')
yield '''<img src="data:{}"/> Host: {} Conflicts: {}<br/>'''.format(
img, data['host'], data['conflicts'])
make_server(8000, simple_app).serve_forever()
Example: reader
Q&A
http://infinit.sh
contact@infinit.sh
@docker #dockercon

More Related Content

What's hot

Docker Enterprise Edition: Building a Secure Supply Chain for the Enterprise ...
Docker Enterprise Edition: Building a Secure Supply Chain for the Enterprise ...Docker Enterprise Edition: Building a Secure Supply Chain for the Enterprise ...
Docker Enterprise Edition: Building a Secure Supply Chain for the Enterprise ...Docker, Inc.
 
Docker Practice in Alibaba Cloud by Li Yi (Mark) & Zuhe Li (Sogo)
Docker Practice in Alibaba Cloud by Li Yi (Mark) & Zuhe Li (Sogo)Docker Practice in Alibaba Cloud by Li Yi (Mark) & Zuhe Li (Sogo)
Docker Practice in Alibaba Cloud by Li Yi (Mark) & Zuhe Li (Sogo)Docker, Inc.
 
DockerCon EU 2015: Nesting Containers: Real Life Observations
DockerCon EU 2015: Nesting Containers: Real Life ObservationsDockerCon EU 2015: Nesting Containers: Real Life Observations
DockerCon EU 2015: Nesting Containers: Real Life ObservationsDocker, Inc.
 
Docker Online Meetup: Infrakit update and Q&A
Docker Online Meetup: Infrakit update and Q&ADocker Online Meetup: Infrakit update and Q&A
Docker Online Meetup: Infrakit update and Q&ADocker, Inc.
 
Docker Datacenter Overview and Production Setup Slides
Docker Datacenter Overview and Production Setup SlidesDocker Datacenter Overview and Production Setup Slides
Docker Datacenter Overview and Production Setup SlidesDocker, Inc.
 
Docker Containers Deep Dive
Docker Containers Deep DiveDocker Containers Deep Dive
Docker Containers Deep DiveWill Kinard
 
How to accelerate docker adoption with a simple and powerful user experience
How to accelerate docker adoption with a simple and powerful user experienceHow to accelerate docker adoption with a simple and powerful user experience
How to accelerate docker adoption with a simple and powerful user experienceDocker, Inc.
 
Docker Meetup 08 03-2016
Docker Meetup 08 03-2016Docker Meetup 08 03-2016
Docker Meetup 08 03-2016Docker
 
Structured Container Delivery by Oscar Renalias, Accenture
Structured Container Delivery by Oscar Renalias, AccentureStructured Container Delivery by Oscar Renalias, Accenture
Structured Container Delivery by Oscar Renalias, AccentureDocker, Inc.
 
Docker Online Meetup #30: Docker Trusted Registry 1.4.1
Docker Online Meetup #30: Docker Trusted Registry 1.4.1Docker Online Meetup #30: Docker Trusted Registry 1.4.1
Docker Online Meetup #30: Docker Trusted Registry 1.4.1Docker, Inc.
 
Docker Store: The New Destination for Enterprise Software - Lily Guo and Alfr...
Docker Store: The New Destination for Enterprise Software - Lily Guo and Alfr...Docker Store: The New Destination for Enterprise Software - Lily Guo and Alfr...
Docker Store: The New Destination for Enterprise Software - Lily Guo and Alfr...Docker, Inc.
 
Infinit: Modern Storage Platform for Container Environments
Infinit: Modern Storage Platform for Container EnvironmentsInfinit: Modern Storage Platform for Container Environments
Infinit: Modern Storage Platform for Container EnvironmentsDocker, Inc.
 
Docker and Microsoft - Windows Server 2016 Technical Deep Dive
Docker and Microsoft - Windows Server 2016 Technical Deep DiveDocker and Microsoft - Windows Server 2016 Technical Deep Dive
Docker and Microsoft - Windows Server 2016 Technical Deep DiveDocker, Inc.
 
Docker for .NET Developers - Michele Leroux Bustamante, Solliance
Docker for .NET Developers - Michele Leroux Bustamante, SollianceDocker for .NET Developers - Michele Leroux Bustamante, Solliance
Docker for .NET Developers - Michele Leroux Bustamante, SollianceDocker, Inc.
 
Global Persistence for Docker
Global Persistence for DockerGlobal Persistence for Docker
Global Persistence for DockerDocker, Inc.
 
Proof of Concept: Serverless with Swarm by Nirmal Mehta, Booz Allen Hamilton
Proof of Concept: Serverless with Swarm by Nirmal Mehta, Booz Allen Hamilton Proof of Concept: Serverless with Swarm by Nirmal Mehta, Booz Allen Hamilton
Proof of Concept: Serverless with Swarm by Nirmal Mehta, Booz Allen Hamilton Docker, Inc.
 
Effective Data Pipelines with Docker & Jenkins - Brian Donaldson
Effective Data Pipelines with Docker & Jenkins - Brian DonaldsonEffective Data Pipelines with Docker & Jenkins - Brian Donaldson
Effective Data Pipelines with Docker & Jenkins - Brian DonaldsonDocker, Inc.
 

What's hot (20)

Docker Enterprise Edition: Building a Secure Supply Chain for the Enterprise ...
Docker Enterprise Edition: Building a Secure Supply Chain for the Enterprise ...Docker Enterprise Edition: Building a Secure Supply Chain for the Enterprise ...
Docker Enterprise Edition: Building a Secure Supply Chain for the Enterprise ...
 
Docker Datacenter - CaaS
Docker Datacenter - CaaSDocker Datacenter - CaaS
Docker Datacenter - CaaS
 
Docker Practice in Alibaba Cloud by Li Yi (Mark) & Zuhe Li (Sogo)
Docker Practice in Alibaba Cloud by Li Yi (Mark) & Zuhe Li (Sogo)Docker Practice in Alibaba Cloud by Li Yi (Mark) & Zuhe Li (Sogo)
Docker Practice in Alibaba Cloud by Li Yi (Mark) & Zuhe Li (Sogo)
 
DockerCon EU 2015: Nesting Containers: Real Life Observations
DockerCon EU 2015: Nesting Containers: Real Life ObservationsDockerCon EU 2015: Nesting Containers: Real Life Observations
DockerCon EU 2015: Nesting Containers: Real Life Observations
 
Docker Online Meetup: Infrakit update and Q&A
Docker Online Meetup: Infrakit update and Q&ADocker Online Meetup: Infrakit update and Q&A
Docker Online Meetup: Infrakit update and Q&A
 
Docker Datacenter Overview and Production Setup Slides
Docker Datacenter Overview and Production Setup SlidesDocker Datacenter Overview and Production Setup Slides
Docker Datacenter Overview and Production Setup Slides
 
Docker on Docker
Docker on DockerDocker on Docker
Docker on Docker
 
Docker Containers Deep Dive
Docker Containers Deep DiveDocker Containers Deep Dive
Docker Containers Deep Dive
 
How to accelerate docker adoption with a simple and powerful user experience
How to accelerate docker adoption with a simple and powerful user experienceHow to accelerate docker adoption with a simple and powerful user experience
How to accelerate docker adoption with a simple and powerful user experience
 
Securing your Containers
Securing your ContainersSecuring your Containers
Securing your Containers
 
Docker Meetup 08 03-2016
Docker Meetup 08 03-2016Docker Meetup 08 03-2016
Docker Meetup 08 03-2016
 
Structured Container Delivery by Oscar Renalias, Accenture
Structured Container Delivery by Oscar Renalias, AccentureStructured Container Delivery by Oscar Renalias, Accenture
Structured Container Delivery by Oscar Renalias, Accenture
 
Docker Online Meetup #30: Docker Trusted Registry 1.4.1
Docker Online Meetup #30: Docker Trusted Registry 1.4.1Docker Online Meetup #30: Docker Trusted Registry 1.4.1
Docker Online Meetup #30: Docker Trusted Registry 1.4.1
 
Docker Store: The New Destination for Enterprise Software - Lily Guo and Alfr...
Docker Store: The New Destination for Enterprise Software - Lily Guo and Alfr...Docker Store: The New Destination for Enterprise Software - Lily Guo and Alfr...
Docker Store: The New Destination for Enterprise Software - Lily Guo and Alfr...
 
Infinit: Modern Storage Platform for Container Environments
Infinit: Modern Storage Platform for Container EnvironmentsInfinit: Modern Storage Platform for Container Environments
Infinit: Modern Storage Platform for Container Environments
 
Docker and Microsoft - Windows Server 2016 Technical Deep Dive
Docker and Microsoft - Windows Server 2016 Technical Deep DiveDocker and Microsoft - Windows Server 2016 Technical Deep Dive
Docker and Microsoft - Windows Server 2016 Technical Deep Dive
 
Docker for .NET Developers - Michele Leroux Bustamante, Solliance
Docker for .NET Developers - Michele Leroux Bustamante, SollianceDocker for .NET Developers - Michele Leroux Bustamante, Solliance
Docker for .NET Developers - Michele Leroux Bustamante, Solliance
 
Global Persistence for Docker
Global Persistence for DockerGlobal Persistence for Docker
Global Persistence for Docker
 
Proof of Concept: Serverless with Swarm by Nirmal Mehta, Booz Allen Hamilton
Proof of Concept: Serverless with Swarm by Nirmal Mehta, Booz Allen Hamilton Proof of Concept: Serverless with Swarm by Nirmal Mehta, Booz Allen Hamilton
Proof of Concept: Serverless with Swarm by Nirmal Mehta, Booz Allen Hamilton
 
Effective Data Pipelines with Docker & Jenkins - Brian Donaldson
Effective Data Pipelines with Docker & Jenkins - Brian DonaldsonEffective Data Pipelines with Docker & Jenkins - Brian Donaldson
Effective Data Pipelines with Docker & Jenkins - Brian Donaldson
 

Similar to Infinit's Next Generation Key-value Store - Julien Quintard and Quentin Hocquet, Docker

Running IBM MQ in the Cloud
Running IBM MQ in the CloudRunning IBM MQ in the Cloud
Running IBM MQ in the CloudRobert Parker
 
Devops Love Containers Meetup in Paris (13/06/2017)
Devops Love Containers Meetup in Paris (13/06/2017)Devops Love Containers Meetup in Paris (13/06/2017)
Devops Love Containers Meetup in Paris (13/06/2017)Infinit
 
IBM IMPACT 2014 - AMC-1882 Building a Scalable & Continuously Available IBM M...
IBM IMPACT 2014 - AMC-1882 Building a Scalable & Continuously Available IBM M...IBM IMPACT 2014 - AMC-1882 Building a Scalable & Continuously Available IBM M...
IBM IMPACT 2014 - AMC-1882 Building a Scalable & Continuously Available IBM M...Peter Broadhurst
 
Shopzilla On Concurrency
Shopzilla On ConcurrencyShopzilla On Concurrency
Shopzilla On ConcurrencyRodney Barlow
 
Over view of software artitecture
Over view of software artitectureOver view of software artitecture
Over view of software artitectureABDEL RAHMAN KARIM
 
Sql server 2019 New Features by Yevhen Nedaskivskyi
Sql server 2019 New Features by Yevhen NedaskivskyiSql server 2019 New Features by Yevhen Nedaskivskyi
Sql server 2019 New Features by Yevhen NedaskivskyiAlex Tumanoff
 
Refactoring to a system of systems
Refactoring to a system of systemsRefactoring to a system of systems
Refactoring to a system of systemsVMware Tanzu
 
Arsitektur Aplikasi Modern - Faisal Henry Susanto
Arsitektur Aplikasi Modern - Faisal Henry SusantoArsitektur Aplikasi Modern - Faisal Henry Susanto
Arsitektur Aplikasi Modern - Faisal Henry SusantoDicodingEvent
 
MuleSoft Surat Meetup#42 - Runtime Fabric Manager on Self Managed Kubernetes ...
MuleSoft Surat Meetup#42 - Runtime Fabric Manager on Self Managed Kubernetes ...MuleSoft Surat Meetup#42 - Runtime Fabric Manager on Self Managed Kubernetes ...
MuleSoft Surat Meetup#42 - Runtime Fabric Manager on Self Managed Kubernetes ...Jitendra Bafna
 
Security for cloud native workloads
Security for cloud native workloadsSecurity for cloud native workloads
Security for cloud native workloadsRuncy Oommen
 
Shopzilla On Concurrency
Shopzilla On ConcurrencyShopzilla On Concurrency
Shopzilla On ConcurrencyWill Gage
 
Docker Swarm secrets for creating great FIWARE platforms
Docker Swarm secrets for creating great FIWARE platformsDocker Swarm secrets for creating great FIWARE platforms
Docker Swarm secrets for creating great FIWARE platformsFederico Michele Facca
 
Planning for MQ in the cloud MQTC 2017
Planning for MQ in the cloud MQTC 2017Planning for MQ in the cloud MQTC 2017
Planning for MQ in the cloud MQTC 2017Robert Parker
 
Real-time Inverted Search in the Cloud Using Lucene and Storm
Real-time Inverted Search in the Cloud Using Lucene and StormReal-time Inverted Search in the Cloud Using Lucene and Storm
Real-time Inverted Search in the Cloud Using Lucene and Stormlucenerevolution
 
Azure meetup cloud native concepts - may 28th 2018
Azure meetup   cloud native concepts - may 28th 2018Azure meetup   cloud native concepts - may 28th 2018
Azure meetup cloud native concepts - may 28th 2018Jim Bugwadia
 
Cloudstack vs Openstack
Cloudstack vs OpenstackCloudstack vs Openstack
Cloudstack vs OpenstackHuzefa Husain
 
A generic log analyzer for auto recovery of container orchestration system
A generic log analyzer for auto recovery of container orchestration systemA generic log analyzer for auto recovery of container orchestration system
A generic log analyzer for auto recovery of container orchestration systemConference Papers
 
Fan-out, fan-in & the multiplexer: Replication recipes for global platform di...
Fan-out, fan-in & the multiplexer: Replication recipes for global platform di...Fan-out, fan-in & the multiplexer: Replication recipes for global platform di...
Fan-out, fan-in & the multiplexer: Replication recipes for global platform di...HostedbyConfluent
 
Agile integration: Decomposing the monolith
Agile integration: Decomposing the monolithAgile integration: Decomposing the monolith
Agile integration: Decomposing the monolithJudy Breedlove
 

Similar to Infinit's Next Generation Key-value Store - Julien Quintard and Quentin Hocquet, Docker (20)

Running IBM MQ in the Cloud
Running IBM MQ in the CloudRunning IBM MQ in the Cloud
Running IBM MQ in the Cloud
 
Devops Love Containers Meetup in Paris (13/06/2017)
Devops Love Containers Meetup in Paris (13/06/2017)Devops Love Containers Meetup in Paris (13/06/2017)
Devops Love Containers Meetup in Paris (13/06/2017)
 
IBM IMPACT 2014 - AMC-1882 Building a Scalable & Continuously Available IBM M...
IBM IMPACT 2014 - AMC-1882 Building a Scalable & Continuously Available IBM M...IBM IMPACT 2014 - AMC-1882 Building a Scalable & Continuously Available IBM M...
IBM IMPACT 2014 - AMC-1882 Building a Scalable & Continuously Available IBM M...
 
Shopzilla On Concurrency
Shopzilla On ConcurrencyShopzilla On Concurrency
Shopzilla On Concurrency
 
Over view of software artitecture
Over view of software artitectureOver view of software artitecture
Over view of software artitecture
 
Sql server 2019 New Features by Yevhen Nedaskivskyi
Sql server 2019 New Features by Yevhen NedaskivskyiSql server 2019 New Features by Yevhen Nedaskivskyi
Sql server 2019 New Features by Yevhen Nedaskivskyi
 
Microservices.pdf
Microservices.pdfMicroservices.pdf
Microservices.pdf
 
Refactoring to a system of systems
Refactoring to a system of systemsRefactoring to a system of systems
Refactoring to a system of systems
 
Arsitektur Aplikasi Modern - Faisal Henry Susanto
Arsitektur Aplikasi Modern - Faisal Henry SusantoArsitektur Aplikasi Modern - Faisal Henry Susanto
Arsitektur Aplikasi Modern - Faisal Henry Susanto
 
MuleSoft Surat Meetup#42 - Runtime Fabric Manager on Self Managed Kubernetes ...
MuleSoft Surat Meetup#42 - Runtime Fabric Manager on Self Managed Kubernetes ...MuleSoft Surat Meetup#42 - Runtime Fabric Manager on Self Managed Kubernetes ...
MuleSoft Surat Meetup#42 - Runtime Fabric Manager on Self Managed Kubernetes ...
 
Security for cloud native workloads
Security for cloud native workloadsSecurity for cloud native workloads
Security for cloud native workloads
 
Shopzilla On Concurrency
Shopzilla On ConcurrencyShopzilla On Concurrency
Shopzilla On Concurrency
 
Docker Swarm secrets for creating great FIWARE platforms
Docker Swarm secrets for creating great FIWARE platformsDocker Swarm secrets for creating great FIWARE platforms
Docker Swarm secrets for creating great FIWARE platforms
 
Planning for MQ in the cloud MQTC 2017
Planning for MQ in the cloud MQTC 2017Planning for MQ in the cloud MQTC 2017
Planning for MQ in the cloud MQTC 2017
 
Real-time Inverted Search in the Cloud Using Lucene and Storm
Real-time Inverted Search in the Cloud Using Lucene and StormReal-time Inverted Search in the Cloud Using Lucene and Storm
Real-time Inverted Search in the Cloud Using Lucene and Storm
 
Azure meetup cloud native concepts - may 28th 2018
Azure meetup   cloud native concepts - may 28th 2018Azure meetup   cloud native concepts - may 28th 2018
Azure meetup cloud native concepts - may 28th 2018
 
Cloudstack vs Openstack
Cloudstack vs OpenstackCloudstack vs Openstack
Cloudstack vs Openstack
 
A generic log analyzer for auto recovery of container orchestration system
A generic log analyzer for auto recovery of container orchestration systemA generic log analyzer for auto recovery of container orchestration system
A generic log analyzer for auto recovery of container orchestration system
 
Fan-out, fan-in & the multiplexer: Replication recipes for global platform di...
Fan-out, fan-in & the multiplexer: Replication recipes for global platform di...Fan-out, fan-in & the multiplexer: Replication recipes for global platform di...
Fan-out, fan-in & the multiplexer: Replication recipes for global platform di...
 
Agile integration: Decomposing the monolith
Agile integration: Decomposing the monolithAgile integration: Decomposing the monolith
Agile integration: Decomposing the monolith
 

More from Docker, Inc.

Containerize Your Game Server for the Best Multiplayer Experience
Containerize Your Game Server for the Best Multiplayer Experience Containerize Your Game Server for the Best Multiplayer Experience
Containerize Your Game Server for the Best Multiplayer Experience Docker, Inc.
 
How to Improve Your Image Builds Using Advance Docker Build
How to Improve Your Image Builds Using Advance Docker BuildHow to Improve Your Image Builds Using Advance Docker Build
How to Improve Your Image Builds Using Advance Docker BuildDocker, Inc.
 
Build & Deploy Multi-Container Applications to AWS
Build & Deploy Multi-Container Applications to AWSBuild & Deploy Multi-Container Applications to AWS
Build & Deploy Multi-Container Applications to AWSDocker, Inc.
 
Securing Your Containerized Applications with NGINX
Securing Your Containerized Applications with NGINXSecuring Your Containerized Applications with NGINX
Securing Your Containerized Applications with NGINXDocker, Inc.
 
How To Build and Run Node Apps with Docker and Compose
How To Build and Run Node Apps with Docker and ComposeHow To Build and Run Node Apps with Docker and Compose
How To Build and Run Node Apps with Docker and ComposeDocker, Inc.
 
Distributed Deep Learning with Docker at Salesforce
Distributed Deep Learning with Docker at SalesforceDistributed Deep Learning with Docker at Salesforce
Distributed Deep Learning with Docker at SalesforceDocker, Inc.
 
The First 10M Pulls: Building The Official Curl Image for Docker Hub
The First 10M Pulls: Building The Official Curl Image for Docker HubThe First 10M Pulls: Building The Official Curl Image for Docker Hub
The First 10M Pulls: Building The Official Curl Image for Docker HubDocker, Inc.
 
Monitoring in a Microservices World
Monitoring in a Microservices WorldMonitoring in a Microservices World
Monitoring in a Microservices WorldDocker, Inc.
 
COVID-19 in Italy: How Docker is Helping the Biggest Italian IT Company Conti...
COVID-19 in Italy: How Docker is Helping the Biggest Italian IT Company Conti...COVID-19 in Italy: How Docker is Helping the Biggest Italian IT Company Conti...
COVID-19 in Italy: How Docker is Helping the Biggest Italian IT Company Conti...Docker, Inc.
 
Predicting Space Weather with Docker
Predicting Space Weather with DockerPredicting Space Weather with Docker
Predicting Space Weather with DockerDocker, Inc.
 
Become a Docker Power User With Microsoft Visual Studio Code
Become a Docker Power User With Microsoft Visual Studio CodeBecome a Docker Power User With Microsoft Visual Studio Code
Become a Docker Power User With Microsoft Visual Studio CodeDocker, Inc.
 
How to Use Mirroring and Caching to Optimize your Container Registry
How to Use Mirroring and Caching to Optimize your Container RegistryHow to Use Mirroring and Caching to Optimize your Container Registry
How to Use Mirroring and Caching to Optimize your Container RegistryDocker, Inc.
 
Monolithic to Microservices + Docker = SDLC on Steroids!
Monolithic to Microservices + Docker = SDLC on Steroids!Monolithic to Microservices + Docker = SDLC on Steroids!
Monolithic to Microservices + Docker = SDLC on Steroids!Docker, Inc.
 
Kubernetes at Datadog Scale
Kubernetes at Datadog ScaleKubernetes at Datadog Scale
Kubernetes at Datadog ScaleDocker, Inc.
 
Labels, Labels, Labels
Labels, Labels, Labels Labels, Labels, Labels
Labels, Labels, Labels Docker, Inc.
 
Using Docker Hub at Scale to Support Micro Focus' Delivery and Deployment Model
Using Docker Hub at Scale to Support Micro Focus' Delivery and Deployment ModelUsing Docker Hub at Scale to Support Micro Focus' Delivery and Deployment Model
Using Docker Hub at Scale to Support Micro Focus' Delivery and Deployment ModelDocker, Inc.
 
Build & Deploy Multi-Container Applications to AWS
Build & Deploy Multi-Container Applications to AWSBuild & Deploy Multi-Container Applications to AWS
Build & Deploy Multi-Container Applications to AWSDocker, Inc.
 
From Fortran on the Desktop to Kubernetes in the Cloud: A Windows Migration S...
From Fortran on the Desktop to Kubernetes in the Cloud: A Windows Migration S...From Fortran on the Desktop to Kubernetes in the Cloud: A Windows Migration S...
From Fortran on the Desktop to Kubernetes in the Cloud: A Windows Migration S...Docker, Inc.
 
Developing with Docker for the Arm Architecture
Developing with Docker for the Arm ArchitectureDeveloping with Docker for the Arm Architecture
Developing with Docker for the Arm ArchitectureDocker, Inc.
 

More from Docker, Inc. (20)

Containerize Your Game Server for the Best Multiplayer Experience
Containerize Your Game Server for the Best Multiplayer Experience Containerize Your Game Server for the Best Multiplayer Experience
Containerize Your Game Server for the Best Multiplayer Experience
 
How to Improve Your Image Builds Using Advance Docker Build
How to Improve Your Image Builds Using Advance Docker BuildHow to Improve Your Image Builds Using Advance Docker Build
How to Improve Your Image Builds Using Advance Docker Build
 
Build & Deploy Multi-Container Applications to AWS
Build & Deploy Multi-Container Applications to AWSBuild & Deploy Multi-Container Applications to AWS
Build & Deploy Multi-Container Applications to AWS
 
Securing Your Containerized Applications with NGINX
Securing Your Containerized Applications with NGINXSecuring Your Containerized Applications with NGINX
Securing Your Containerized Applications with NGINX
 
How To Build and Run Node Apps with Docker and Compose
How To Build and Run Node Apps with Docker and ComposeHow To Build and Run Node Apps with Docker and Compose
How To Build and Run Node Apps with Docker and Compose
 
Hands-on Helm
Hands-on Helm Hands-on Helm
Hands-on Helm
 
Distributed Deep Learning with Docker at Salesforce
Distributed Deep Learning with Docker at SalesforceDistributed Deep Learning with Docker at Salesforce
Distributed Deep Learning with Docker at Salesforce
 
The First 10M Pulls: Building The Official Curl Image for Docker Hub
The First 10M Pulls: Building The Official Curl Image for Docker HubThe First 10M Pulls: Building The Official Curl Image for Docker Hub
The First 10M Pulls: Building The Official Curl Image for Docker Hub
 
Monitoring in a Microservices World
Monitoring in a Microservices WorldMonitoring in a Microservices World
Monitoring in a Microservices World
 
COVID-19 in Italy: How Docker is Helping the Biggest Italian IT Company Conti...
COVID-19 in Italy: How Docker is Helping the Biggest Italian IT Company Conti...COVID-19 in Italy: How Docker is Helping the Biggest Italian IT Company Conti...
COVID-19 in Italy: How Docker is Helping the Biggest Italian IT Company Conti...
 
Predicting Space Weather with Docker
Predicting Space Weather with DockerPredicting Space Weather with Docker
Predicting Space Weather with Docker
 
Become a Docker Power User With Microsoft Visual Studio Code
Become a Docker Power User With Microsoft Visual Studio CodeBecome a Docker Power User With Microsoft Visual Studio Code
Become a Docker Power User With Microsoft Visual Studio Code
 
How to Use Mirroring and Caching to Optimize your Container Registry
How to Use Mirroring and Caching to Optimize your Container RegistryHow to Use Mirroring and Caching to Optimize your Container Registry
How to Use Mirroring and Caching to Optimize your Container Registry
 
Monolithic to Microservices + Docker = SDLC on Steroids!
Monolithic to Microservices + Docker = SDLC on Steroids!Monolithic to Microservices + Docker = SDLC on Steroids!
Monolithic to Microservices + Docker = SDLC on Steroids!
 
Kubernetes at Datadog Scale
Kubernetes at Datadog ScaleKubernetes at Datadog Scale
Kubernetes at Datadog Scale
 
Labels, Labels, Labels
Labels, Labels, Labels Labels, Labels, Labels
Labels, Labels, Labels
 
Using Docker Hub at Scale to Support Micro Focus' Delivery and Deployment Model
Using Docker Hub at Scale to Support Micro Focus' Delivery and Deployment ModelUsing Docker Hub at Scale to Support Micro Focus' Delivery and Deployment Model
Using Docker Hub at Scale to Support Micro Focus' Delivery and Deployment Model
 
Build & Deploy Multi-Container Applications to AWS
Build & Deploy Multi-Container Applications to AWSBuild & Deploy Multi-Container Applications to AWS
Build & Deploy Multi-Container Applications to AWS
 
From Fortran on the Desktop to Kubernetes in the Cloud: A Windows Migration S...
From Fortran on the Desktop to Kubernetes in the Cloud: A Windows Migration S...From Fortran on the Desktop to Kubernetes in the Cloud: A Windows Migration S...
From Fortran on the Desktop to Kubernetes in the Cloud: A Windows Migration S...
 
Developing with Docker for the Arm Architecture
Developing with Docker for the Arm ArchitectureDeveloping with Docker for the Arm Architecture
Developing with Docker for the Arm Architecture
 

Recently uploaded

Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESmohitsingh558521
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demoHarshalMandlekar2
 

Recently uploaded (20)

Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demo
 

Infinit's Next Generation Key-value Store - Julien Quintard and Quentin Hocquet, Docker

  • 1. Julien Quintard Technical Staff, Docker Quentin Hocquet Software Engineer, Docker Infinit’s Next Generation Key-Value Store
  • 2. 1. Analysis Agenda 2. Introducing Infinit’s key-value store 3. API 4. Demo
  • 3. Key-value stores have increasingly gained in popularity as a fundamental layer for storing and sharing content in a distributed system. Such a construct can be used (and has been extensively) to manage: • Metadata • Logs • etc. The most well-known key-value stores today are etcd, ZooKeeper and Consul. Introduction
  • 4. Why the hell yet another key-value store? 1. Analysis
  • 5. Depending on the use case, the requirements on the underlying key-value store vary on several levels: • Scalability • Resilience • Performance • Security • Consistency We believe that the community needs a key-value store for the all the other applications. Problem
  • 6. The main problem comes from the distribution mechanism which is based on a manager/worker model. Model manager manager worker worker worker
  • 7. This model, even though well-suited to many use cases, suffers from its design on many levels: • Scalability: limited by the scalability of manager nodes • Resilience: overflow could lead cascading effects • Performance: limited capability to handle slaves and clients’ requests • Security: managers are ideal targets • Consistency: impossibility to handle many parallel update requests Limitations
  • 8. So what makes it different (apart from not having a name, yet!)? 2. Introducing Infinit’s key-value store
  • 9. What makes it different from the etcd, Consul, ZooKeeper and other key- value stores is the use of a decentralized model (i.e peer-to-peer) where every node is equipotent. Presentation node node node
  • 10. Such a decentralized architecture is naturally adapted to scaling since nodes can join and leave without a need to keep track of them through a central directory. Instead, the directory is collectively managed by the cluster through algorithms known as an overlay network (routing requests to the right nodes) and distributed hash table or DHT (redundancy, self-healing etc.). BONUS: Infinit’s key-value store can be deployed over a single-node cluster, something that is not possible for the manager-worker-based systems. Scalability
  • 11. Systems based on the manager/worker model need to dimension the system in order to support the worker nodes and handle clients’ requests. On the contrary, a decentralized architecture does away with bottlenecks, single points of failures and the associated slow performance since requests are not concentrated on a small subset of critical manager nodes. Even more, the more nodes in the system, the faster requests will be processed because the load is naturally distributed between all the nodes. Resilience & Performance
  • 12. Unlike in manager-worker-model-based systems, there is no authoritative node nor more privileged nodes in a decentralized architecture. As such, an attacker would have no choice but to either take control of a large portion of the nodes composing the cluster or to find a breach in the network protocols in order to attack the system. Security
  • 13. Consistency is all about reaching consensus within the set of servers that host the replicas of a piece of data. Distributed systems based on a manager/worker model rely on the managers to maintain consistency whenever an update is requested. Due to the concentration of such requests on the managers, the number of parallel requests that can be processed is limited. Consistency1/4 DISTRIBUTED (manager/worker) managerleader worker
  • 14. Infinit’s key-value store instead relies on block- based quorums, meaning there are as many quorums, hence potential parallel consensus run, as there are blocks (a.k.a values) in the system. This approach means that parallel requests are handled by disjoint quorums, leading to better performance, security and fault tolerance. Consistency2/4 DECENTRALIZED (peer-to-peer) node
  • 15. Consistency3/4 Block-based quorums also means the complexity of the consensus algorithm is function of the redundancy factor, not the number of nodes in the cluster (unlike manager/worker systems). In other words, in a manager/worker model, a cluster of 1 million worker nodes would require, say 100 managers. Given the quadratic complexity of consensus algorithms, a consensus among that many nodes would take several seconds to be reached. In a decentralized architecture, the complexity remains the same no matter the number of nodes in the network.
  • 16. Most distributed systems nowadays rely on Raft for consensus. However, because Raft generates a lot of noise and because it is impractical in systems that can have millions of quorums, we have decided to use Paxos. Also, because the key-value store is a fundamental layer, Infinit’s is strongly consistent to allow for more demanding applications. NOTE: the consensus algorithm can be customized to switch to another one with different consistency guarantees. Consistency4/4
  • 17. As a summary, Infinit key-value store’s decentralized architecture brings a number of advantages over manager-worker-based distributed systems. This model offers better performance, security and resilience by removing the critical manager nodes. Also, coupled with a block-based quorums, such a model allows for extremely scalable applications. Conclusion
  • 18. I hope it speaks SOAP! 3. API
  • 19. Infinit’s key-value store differs from other key-value stores in two major ways: • Key: one cannot choose the key associated with the values it stores; Infinit’s key-value store generates an address so as to optimize data placement for load balancing, fault tolerance and more. • Value: in Infinit’s, there are different types of value (known as blocks), each with their tradeoffs. Overview
  • 20. In order to properly use Infinit’s key-value store, one needs to perfectly understand the various block types. In its purest form, there are two types of blocks, on top of which many other can be created: • Mutable Blocks: costly, subject to conflicts, need consensus when updated, need to invalidate their cache to refresh the value etc. • Immutable Blocks (content hashing): cannot conflict, can be cached forever, can be fetched from any source (integrity easy to validate) etc. Blocks
  • 21. Infinit key-value store’s API is composed of two types of calls: • Block Generation: • MakeImmutableBlock() -> (Address, Block) • MakeMutableBlock() -> (Address, Block) • Key-Value Store Manipulation: • Insert(Block) -> Boolean • Update(Block) -> Boolean • Remove(Address) -> Boolean • Fetch(Address) -> Block API
  • 22. Ok, now show me the money! 4. Demo
  • 23. def connect(endpoint): import grpc import doughnut_pb2_grpc channel = grpc.insecure_channel(endpoint) return doughnut_pb2_grpc.DoughnutStub(channel) def init(kv): # Create a mutable block representing the index index = kv.MakeMutableBlock(MakeMutableBlockRequest()) # Set its payload to an emtpy list index.data_plain = pickle.dumps([]) # Insert the block kv.Insert(InsertRequest(block = index)) # Return its address return index.address.hex() def index(kv, addr): return kv.Fetch(FetchRequest(address = unhexlify(addr), decrypt_data = True)).block Example index MutableBlock image ImmutableBlock
  • 24. def add(kv, addr, content): idx = index(kv, addr) # Create the content mutable block content_block = kv.MakeImmutableBlock( MakeImmutableBlockRequest(data = pickle.dumps(content))) # Append the address to the index l = pickle.loads(idx.data_plain) l.append(content_block.address) idx.data_plain = pickle.dumps(l) # Update the index update = kv.Update(UpdateRequest(block = idx)) # Push the content block kv.Insert(InsertRequest(block = content_block)) Example
  • 25. def add(kv, addr, content): content['conflicts'] = 0 idx = index(kv, addr) while True: content_block = kv.MakeImmutableBlock( MakeImmutableBlockRequest(data = pickle.dumps(content))) l = pickle.loads(idx.data_plain) l.append(content_block.address) idx.data_plain = pickle.dumps(l) time.sleep(random.random() * 0.1) update = kv.Update(UpdateRequest(block = idx)) if update.error == SUCCESS: break elif update.error == CONFLICT:: content['conflicts'] = content['conflicts'] + 1 idx = update.current else: raise Exception(update.error) kv.Insert(InsertRequest(block = content_block)) Example
  • 26. endpoint = sys.argv[1] address = sys.argv[2] kv = connect(endpoint) while True: images = requests.get('https://api.imgur.com/3/gallery/random/random/0.json') for image in images: content = requests.get(image['link'], headers = headers).content add(kv, address, { 'img': content, 'host': socket.gethostname(), }) time.sleep(random.random()) Example: writer
  • 27. endpoint = sys.argv[1] address = sys.argv[2] kv = connect(endpoint) from wsgiref.simple_server import make_server def simple_app(environ, start_response): status = '200 OK' headers = [('Content-type', 'text/html')] start_response(status, headers) i = 0 images = pickle.loads(index(kv, address).data_plain) for l in images[-32:]: data = pickle.loads(kv.Fetch(FetchRequest(address = l)).block.data) img = base64.b64encode(data['img']).decode('latin-1') yield '''<img src="data:{}"/> Host: {} Conflicts: {}<br/>'''.format( img, data['host'], data['conflicts']) make_server(8000, simple_app).serve_forever() Example: reader