SlideShare una empresa de Scribd logo
1 de 106
Descargar para leer sin conexión
Cluster Consensus
When Aeron Met Raft
Martin Thompson - @mjpt777
What does “Consensus” mean?
con•sen•sus
noun  kən-ˈsen(t)-səs 
: general agreement : unanimity
Source: http://www.merriam-webster.com/
con•sen•sus
noun  kən-ˈsen(t)-səs 
: general agreement : unanimity
: the judgment arrived at by most of those
concerned
Source: http://www.merriam-webster.com/
Consensus on what?
Message - 1
Message - 2
Message - 3
Message - 4
Message - 5
Message - 6
Message - 1
Message - 2
Message - 3
Message - 4
Message - 5
Message - 6
State
Machine
In Memory
Model
Message - 1
Message - 2
Message - 3
Message - 4
Message - 5
Message - 6
State
Machine
In Memory
Model
Actors
Event
Sourcing
CQRS
Command
Sourcing
WAL
Immutable
Log
https://raft.github.io/raft.pdf
https://www.cl.cam.ac.uk/~ms705/pub/papers/2015-osr-raft.pdf
Raft in a Nutshell
Roles
CandidateFollower Leader
RPCs
1. RequestVote RPC
Invoked by candidates to gather votes
RPCs
1. RequestVote RPC
Invoked by candidates to gather votes
2. AppendEntries RPC
Invoked by leader to replicate and heartbeat
Safety Guarantees
• Election Safety
• Leader Append-Only
• Log Matching
• Leader Completeness
• State Machine Safety
Monotonic Functions
Version all the things!
Clustering Aeron
Is it Guaranteed Delivery™ ???
What is the “Architect” really looking for?
“Guaranteed Processing™”
There are many
design approaches
Client Client Client Client Client
Service
Client Client Client Client Client
Service
Client Client Client Client Client
Consensus
Module
Service
Consensus
Module
Service
Client Client Client Client Client
Consensus
Module
Service
Consensus
Module
Service
Consensus
Module
Service
NIO Pain!
Do servers crash?
FileChannel channel = null;
try
{
channel = FileChannel.open(directory.toPath());
}
catch (final IOException ignore)
{
}
if (null != channel)
{
channel.force(true);
}
FileChannel channel = null;
try
{
channel = FileChannel.open(directory.toPath());
}
catch (final IOException ignore)
{
}
if (null != channel)
{
channel.force(true);
}
FileChannel channel = null;
try
{
channel = FileChannel.open(directory.toPath());
}
catch (final IOException ignore)
{
}
if (null != channel)
{
channel.force(true);
}
Directory Sync
Files.force(directory.toPath(), true);
Performance
Let’s consider an
RPC design approach
Client Client Client Client Client
Consensus
Module
Service
Consensus
Module
Service
Consensus
Module
Service
Client Client Client Client Client
Consensus
Module
Service
Consensus
Module
Service
Consensus
Module
Service
Client Client Client Client Client
Consensus
Module
Service
Consensus
Module
Service
Consensus
Module
Service
Client Client Client Client Client
Consensus
Module
Service
Consensus
Module
Service
Consensus
Module
Service
Client Client Client Client Client
Consensus
Module
Service
Consensus
Module
Service
Consensus
Module
Service
Client Client Client Client Client
Consensus
Module
Service
Consensus
Module
Service
Consensus
Module
Service
Client Client Client Client Client
Consensus
Module
Service
Consensus
Module
Service
Consensus
Module
Service
Client Client Client Client Client
Consensus
Module
Service
Consensus
Module
Service
Consensus
Module
Service
Client Client Client Client Client
Consensus
Module
Service
Consensus
Module
Service
Consensus
Module
Service
Concurrency and/or Parallelism?
1. Parallel is the opposite of Serial
2. Concurrent is the opposite of Sequential
3. Vector is the opposite of Scalar
– John Gustafson
Fetch
Time
Instruction Pipelining
Fetch Decode
Time
Instruction Pipelining
Fetch Decode Execute
Time
Instruction Pipelining
Fetch Decode Execute Retire
Time
Instruction Pipelining
Fetch Decode Execute Retire
Time
Fetch Decode Execute Retire
Instruction Pipelining
Fetch Decode Execute Retire
Time
Fetch Decode Execute Retire
Fetch Decode Execute Retire
Instruction Pipelining
Fetch Decode Execute Retire
Time
Fetch Decode Execute Retire
Fetch Decode Execute Retire
Fetch Decode Execute Retire
Instruction Pipelining
Order
Time
Consensus Pipeline
Order Log
Time
Consensus Pipeline
Order Log Transmit
Time
Consensus Pipeline
Order Log Transmit Commit
Time
Consensus Pipeline
Order Log Transmit Commit
Time
Consensus Pipeline
Execute
Order Log Transmit Commit
Time
Consensus Pipeline
Execute
Order Log Transmit Commit Execute
Order Log Transmit Commit
Time
Consensus Pipeline
Execute
Order Log Transmit Commit Execute
Order Log Transmit Commit Execute
Client Client Client Client Client
Consensus
Module
Service
Consensus
Module
Service
Consensus
Module
Service
Client Client Client Client Client
Consensus
Module
Service
Consensus
Module
Service
Consensus
Module
Service
Client Client Client Client Client
Consensus
Module
Service
Consensus
Module
Service
Consensus
Module
Service
Client Client Client Client Client
Consensus
Module
Service
Consensus
Module
Service
Consensus
Module
Service
Client Client Client Client Client
Consensus
Module
Service
Consensus
Module
Service
Consensus
Module
Service
Client Client Client Client Client
Consensus
Module
Service
Consensus
Module
Service
Consensus
Module
Service
Client Client Client Client Client
Consensus
Module
Service
Consensus
Module
Service
Consensus
Module
Service
Client Client Client Client Client
Consensus
Module
Service
Consensus
Module
Service
Consensus
Module
Service
Client Client Client Client Client
Consensus
Module
Service
Consensus
Module
Service
Consensus
Module
Service
NIO Pain!
ByteBuffer byte copies
ByteBuffer byteBuffer = ByteBuffer.allocate(64 * 1024);
byteBuffer.putInt(index, value);
ByteBuffer byte copies
ByteBuffer byteBuffer = ByteBuffer.allocate(64 * 1024);
byteBuffer.putBytes(index, bytes);
ByteBuffer byte copies
ByteBuffer byteBuffer = ByteBuffer.allocate(64 * 1024);
byteBuffer.putBytes(index, bytes);
How can Aeron help?
Message Index => Byte Index
Multicast, MDC, and Spy
based Messaging
Counters
=>
Bounded Consumption
0%
10%
20%
30%
40%
50%
60%
70%
80%
90%
100%
0 5 10 15 20
Batching – Amortising Costs
Average overhead
per item or operation
in batch
0%
10%
20%
30%
40%
50%
60%
70%
80%
90%
100%
0 5 10 15 20
Batching – Amortising Costs
• System calls
• Network round trips
• Disk writes
• Expensive computations
Interesting Features
Timers
All state must enter the system
as a message!
public void foo()
{
// Decide to schedule a timer
cluster.scheduleTimer(correlationId, cluster.timeMs() + TimeUnit.SECONDS.toMillis(5));
}
public void onTimerEvent(final long correlationId, final long timestampMs)
{
// Look up the correlationId associated with the timer
}
Timers
public void foo()
{
// Decide to schedule a timer
cluster.scheduleTimer(correlationId, cluster.timeMs() + TimeUnit.SECONDS.toMillis(5));
}
public void onTimerEvent(final long correlationId, final long timestampMs)
{
// Look up the correlationId associated with the timer
}
Timers
public void foo()
{
// Decide to schedule a timer
cluster.scheduleTimer(correlationId, cluster.timeMs() + TimeUnit.SECONDS.toMillis(5));
}
public void onTimerEvent(final long correlationId, final long timestampMs)
{
// Look up the correlationId associated with the timer
}
Timers
Back Pressure and Stashed Work
public ControlledFragmentAssembler.Action onSessionMessage(
final DirectBuffer buffer,
final int offset,
final int length,
final long clusterSessionId,
final long correlationId)
{
final ClusterSession session = sessionByIdMap.get(clusterSessionId);
if (null == session || session.state() == CLOSED)
{
return ControlledFragmentHandler.Action.CONTINUE;
}
final long nowMs = cachedEpochClock.time();
if (session.state() == OPEN && logPublisher.appendMessage(buffer, offset, length, nowMs))
{
session.lastActivity(nowMs, correlationId);
return ControlledFragmentHandler.Action.CONTINUE;
}
return ControlledFragmentHandler.Action.ABORT;
}
Back Pressure
public ControlledFragmentAssembler.Action onSessionMessage(
final DirectBuffer buffer,
final int offset,
final int length,
final long clusterSessionId,
final long correlationId)
{
final ClusterSession session = sessionByIdMap.get(clusterSessionId);
if (null == session || session.state() == CLOSED)
{
return ControlledFragmentHandler.Action.CONTINUE;
}
final long nowMs = cachedEpochClock.time();
if (session.state() == OPEN && logPublisher.appendMessage(buffer, offset, length, nowMs))
{
session.lastActivity(nowMs, correlationId);
return ControlledFragmentHandler.Action.CONTINUE;
}
return ControlledFragmentHandler.Action.ABORT;
}
Back Pressure
public ControlledFragmentAssembler.Action onSessionMessage(
final DirectBuffer buffer,
final int offset,
final int length,
final long clusterSessionId,
final long correlationId)
{
final ClusterSession session = sessionByIdMap.get(clusterSessionId);
if (null == session || session.state() == CLOSED)
{
return ControlledFragmentHandler.Action.CONTINUE;
}
final long nowMs = cachedEpochClock.time();
if (session.state() == OPEN && logPublisher.appendMessage(buffer, offset, length, nowMs))
{
session.lastActivity(nowMs, correlationId);
return ControlledFragmentHandler.Action.CONTINUE;
}
return ControlledFragmentHandler.Action.ABORT;
}
Back Pressure
public ControlledFragmentAssembler.Action onSessionMessage(
final DirectBuffer buffer,
final int offset,
final int length,
final long clusterSessionId,
final long correlationId)
{
final ClusterSession session = sessionByIdMap.get(clusterSessionId);
if (null == session || session.state() == CLOSED)
{
return ControlledFragmentHandler.Action.CONTINUE;
}
final long nowMs = cachedEpochClock.time();
if (session.state() == OPEN && logPublisher.appendMessage(buffer, offset, length, nowMs))
{
session.lastActivity(nowMs, correlationId);
return ControlledFragmentHandler.Action.CONTINUE;
}
return ControlledFragmentHandler.Action.ABORT;
}
Back Pressure
public ControlledFragmentAssembler.Action onSessionMessage(
final DirectBuffer buffer,
final int offset,
final int length,
final long clusterSessionId,
final long correlationId)
{
final ClusterSession session = sessionByIdMap.get(clusterSessionId);
if (null == session || session.state() == CLOSED)
{
return ControlledFragmentHandler.Action.CONTINUE;
}
final long nowMs = cachedEpochClock.time();
if (session.state() == OPEN && logPublisher.appendMessage(buffer, offset, length, nowMs))
{
session.lastActivity(nowMs, correlationId);
return ControlledFragmentHandler.Action.CONTINUE;
}
return ControlledFragmentHandler.Action.ABORT;
}
Back Pressure
Log Replay and Snapshots
Log Replay and Snapshots
Distributed File System?
Log Replay and Snapshots
Distributed File System?
Aeron Archive
Recorded Streams
Multiple Services on the
same stream
Client Client Client Client Client
Consensus
Module
Service
Consensus
Module
Service
Consensus
Module
Service
Client Client Client Client Client
Consensus
Module
Service
Consensus
Module
Service
Consensus
Module
Service
Service
Service
Service
Service
Service
Service
NIO Pain!
MappedByteBuffer DirectByteBuffer
1 2
DirectByteBuffer MappedByteBuffer
MappedByteBuffer DirectByteBuffer
1 2
DirectByteBuffer MappedByteBuffer
MappedByteBuffer DirectByteBuffer
1 2
In Closing
What’s the Roadmap?
https://github.com/real-logic/aeron
Twitter: @mjpt777
“A distributed system is one in which the failure
of a computer you didn't even know existed
can render your own computer unusable.”
- Leslie Lamport
Questions?

Más contenido relacionado

Similar a Cluster Consensus: when Aeron met Raft

Migrate volume in akfiler7
Migrate volume in akfiler7Migrate volume in akfiler7
Migrate volume in akfiler7Accenture
 
HBaseCon 2013: How (and Why) Phoenix Puts the SQL Back into NoSQL
HBaseCon 2013: How (and Why) Phoenix Puts the SQL Back into NoSQLHBaseCon 2013: How (and Why) Phoenix Puts the SQL Back into NoSQL
HBaseCon 2013: How (and Why) Phoenix Puts the SQL Back into NoSQLCloudera, Inc.
 
Resilence patterns kr
Resilence patterns krResilence patterns kr
Resilence patterns krJisung Ahn
 
Node.js Event Loop & EventEmitter
Node.js Event Loop & EventEmitterNode.js Event Loop & EventEmitter
Node.js Event Loop & EventEmitterSimen Li
 
Buenos Aires Drools Expert Presentation
Buenos Aires Drools Expert PresentationBuenos Aires Drools Expert Presentation
Buenos Aires Drools Expert PresentationMark Proctor
 
Loophole: Timing Attacks on Shared Event Loops in Chrome
Loophole: Timing Attacks on Shared Event Loops in ChromeLoophole: Timing Attacks on Shared Event Loops in Chrome
Loophole: Timing Attacks on Shared Event Loops in Chromecgvwzq
 
Cassandra 2.1 boot camp, Overview
Cassandra 2.1 boot camp, OverviewCassandra 2.1 boot camp, Overview
Cassandra 2.1 boot camp, OverviewJoshua McKenzie
 
Mining Branch-Time Scenarios From Execution Logs
Mining Branch-Time Scenarios From Execution LogsMining Branch-Time Scenarios From Execution Logs
Mining Branch-Time Scenarios From Execution LogsDirk Fahland
 
Behind modern concurrency primitives
Behind modern concurrency primitivesBehind modern concurrency primitives
Behind modern concurrency primitivesBartosz Sypytkowski
 
RTOS Material hfffffffffffffffffffffffffffffffffffff
RTOS Material hfffffffffffffffffffffffffffffffffffffRTOS Material hfffffffffffffffffffffffffffffffffffff
RTOS Material hfffffffffffffffffffffffffffffffffffffadugnanegero
 
Distributed Consensus: Making Impossible Possible [Revised]
Distributed Consensus: Making Impossible Possible [Revised]Distributed Consensus: Making Impossible Possible [Revised]
Distributed Consensus: Making Impossible Possible [Revised]Heidi Howard
 
Naked Performance With Clojure
Naked Performance With ClojureNaked Performance With Clojure
Naked Performance With ClojureMetosin Oy
 
Behind modern concurrency primitives
Behind modern concurrency primitivesBehind modern concurrency primitives
Behind modern concurrency primitivesBartosz Sypytkowski
 
Flink Forward SF 2017: Stefan Richter - Improvements for large state and reco...
Flink Forward SF 2017: Stefan Richter - Improvements for large state and reco...Flink Forward SF 2017: Stefan Richter - Improvements for large state and reco...
Flink Forward SF 2017: Stefan Richter - Improvements for large state and reco...Flink Forward
 
Cancel, Retry and Timeouts: Keep Your Sanity Thanks to Reactive Programming
Cancel, Retry and Timeouts: Keep Your Sanity Thanks to Reactive ProgrammingCancel, Retry and Timeouts: Keep Your Sanity Thanks to Reactive Programming
Cancel, Retry and Timeouts: Keep Your Sanity Thanks to Reactive ProgrammingVMware Tanzu
 
Mule Quartz connector
Mule Quartz connectorMule Quartz connector
Mule Quartz connectorAnkush Sharma
 
Multi-camera Time-of-Flight Systems | SIGGRAPH 2016
Multi-camera Time-of-Flight Systems | SIGGRAPH 2016Multi-camera Time-of-Flight Systems | SIGGRAPH 2016
Multi-camera Time-of-Flight Systems | SIGGRAPH 2016StanfordComputationalImaging
 

Similar a Cluster Consensus: when Aeron met Raft (20)

Migrate volume in akfiler7
Migrate volume in akfiler7Migrate volume in akfiler7
Migrate volume in akfiler7
 
HBaseCon 2013: How (and Why) Phoenix Puts the SQL Back into NoSQL
HBaseCon 2013: How (and Why) Phoenix Puts the SQL Back into NoSQLHBaseCon 2013: How (and Why) Phoenix Puts the SQL Back into NoSQL
HBaseCon 2013: How (and Why) Phoenix Puts the SQL Back into NoSQL
 
Resilence patterns kr
Resilence patterns krResilence patterns kr
Resilence patterns kr
 
Node.js Event Loop & EventEmitter
Node.js Event Loop & EventEmitterNode.js Event Loop & EventEmitter
Node.js Event Loop & EventEmitter
 
Buenos Aires Drools Expert Presentation
Buenos Aires Drools Expert PresentationBuenos Aires Drools Expert Presentation
Buenos Aires Drools Expert Presentation
 
Loophole: Timing Attacks on Shared Event Loops in Chrome
Loophole: Timing Attacks on Shared Event Loops in ChromeLoophole: Timing Attacks on Shared Event Loops in Chrome
Loophole: Timing Attacks on Shared Event Loops in Chrome
 
Cassandra 2.1 boot camp, Overview
Cassandra 2.1 boot camp, OverviewCassandra 2.1 boot camp, Overview
Cassandra 2.1 boot camp, Overview
 
Mining Branch-Time Scenarios From Execution Logs
Mining Branch-Time Scenarios From Execution LogsMining Branch-Time Scenarios From Execution Logs
Mining Branch-Time Scenarios From Execution Logs
 
Behind modern concurrency primitives
Behind modern concurrency primitivesBehind modern concurrency primitives
Behind modern concurrency primitives
 
RTOS Material hfffffffffffffffffffffffffffffffffffff
RTOS Material hfffffffffffffffffffffffffffffffffffffRTOS Material hfffffffffffffffffffffffffffffffffffff
RTOS Material hfffffffffffffffffffffffffffffffffffff
 
Distributed Consensus: Making Impossible Possible [Revised]
Distributed Consensus: Making Impossible Possible [Revised]Distributed Consensus: Making Impossible Possible [Revised]
Distributed Consensus: Making Impossible Possible [Revised]
 
Naked Performance With Clojure
Naked Performance With ClojureNaked Performance With Clojure
Naked Performance With Clojure
 
Behind modern concurrency primitives
Behind modern concurrency primitivesBehind modern concurrency primitives
Behind modern concurrency primitives
 
Flink Forward SF 2017: Stefan Richter - Improvements for large state and reco...
Flink Forward SF 2017: Stefan Richter - Improvements for large state and reco...Flink Forward SF 2017: Stefan Richter - Improvements for large state and reco...
Flink Forward SF 2017: Stefan Richter - Improvements for large state and reco...
 
Cancel, Retry and Timeouts: Keep Your Sanity Thanks to Reactive Programming
Cancel, Retry and Timeouts: Keep Your Sanity Thanks to Reactive ProgrammingCancel, Retry and Timeouts: Keep Your Sanity Thanks to Reactive Programming
Cancel, Retry and Timeouts: Keep Your Sanity Thanks to Reactive Programming
 
Google Spanner
Google SpannerGoogle Spanner
Google Spanner
 
Mule Quartz connector
Mule Quartz connectorMule Quartz connector
Mule Quartz connector
 
WCM Transfer Services
WCM Transfer Services WCM Transfer Services
WCM Transfer Services
 
Multi-camera Time-of-Flight Systems | SIGGRAPH 2016
Multi-camera Time-of-Flight Systems | SIGGRAPH 2016Multi-camera Time-of-Flight Systems | SIGGRAPH 2016
Multi-camera Time-of-Flight Systems | SIGGRAPH 2016
 
JBoss World 2011 - Drools
JBoss World 2011 - DroolsJBoss World 2011 - Drools
JBoss World 2011 - Drools
 

Más de J On The Beach

Massively scalable ETL in real world applications: the hard way
Massively scalable ETL in real world applications: the hard wayMassively scalable ETL in real world applications: the hard way
Massively scalable ETL in real world applications: the hard wayJ On The Beach
 
Big Data On Data You Don’t Have
Big Data On Data You Don’t HaveBig Data On Data You Don’t Have
Big Data On Data You Don’t HaveJ On The Beach
 
Acoustic Time Series in Industry 4.0: Improved Reliability and Cyber-Security...
Acoustic Time Series in Industry 4.0: Improved Reliability and Cyber-Security...Acoustic Time Series in Industry 4.0: Improved Reliability and Cyber-Security...
Acoustic Time Series in Industry 4.0: Improved Reliability and Cyber-Security...J On The Beach
 
Pushing it to the edge in IoT
Pushing it to the edge in IoTPushing it to the edge in IoT
Pushing it to the edge in IoTJ On The Beach
 
Drinking from the firehose, with virtual streams and virtual actors
Drinking from the firehose, with virtual streams and virtual actorsDrinking from the firehose, with virtual streams and virtual actors
Drinking from the firehose, with virtual streams and virtual actorsJ On The Beach
 
How do we deploy? From Punched cards to Immutable server pattern
How do we deploy? From Punched cards to Immutable server patternHow do we deploy? From Punched cards to Immutable server pattern
How do we deploy? From Punched cards to Immutable server patternJ On The Beach
 
When Cloud Native meets the Financial Sector
When Cloud Native meets the Financial SectorWhen Cloud Native meets the Financial Sector
When Cloud Native meets the Financial SectorJ On The Beach
 
The big data Universe. Literally.
The big data Universe. Literally.The big data Universe. Literally.
The big data Universe. Literally.J On The Beach
 
Streaming to a New Jakarta EE
Streaming to a New Jakarta EEStreaming to a New Jakarta EE
Streaming to a New Jakarta EEJ On The Beach
 
The TIPPSS Imperative for IoT - Ensuring Trust, Identity, Privacy, Protection...
The TIPPSS Imperative for IoT - Ensuring Trust, Identity, Privacy, Protection...The TIPPSS Imperative for IoT - Ensuring Trust, Identity, Privacy, Protection...
The TIPPSS Imperative for IoT - Ensuring Trust, Identity, Privacy, Protection...J On The Beach
 
Pushing AI to the Client with WebAssembly and Blazor
Pushing AI to the Client with WebAssembly and BlazorPushing AI to the Client with WebAssembly and Blazor
Pushing AI to the Client with WebAssembly and BlazorJ On The Beach
 
Axon Server went RAFTing
Axon Server went RAFTingAxon Server went RAFTing
Axon Server went RAFTingJ On The Beach
 
The Six Pitfalls of building a Microservices Architecture (and how to avoid t...
The Six Pitfalls of building a Microservices Architecture (and how to avoid t...The Six Pitfalls of building a Microservices Architecture (and how to avoid t...
The Six Pitfalls of building a Microservices Architecture (and how to avoid t...J On The Beach
 
Madaari : Ordering For The Monkeys
Madaari : Ordering For The MonkeysMadaari : Ordering For The Monkeys
Madaari : Ordering For The MonkeysJ On The Beach
 
Servers are doomed to fail
Servers are doomed to failServers are doomed to fail
Servers are doomed to failJ On The Beach
 
Interaction Protocols: It's all about good manners
Interaction Protocols: It's all about good mannersInteraction Protocols: It's all about good manners
Interaction Protocols: It's all about good mannersJ On The Beach
 
A race of two compilers: GraalVM JIT versus HotSpot JIT C2. Which one offers ...
A race of two compilers: GraalVM JIT versus HotSpot JIT C2. Which one offers ...A race of two compilers: GraalVM JIT versus HotSpot JIT C2. Which one offers ...
A race of two compilers: GraalVM JIT versus HotSpot JIT C2. Which one offers ...J On The Beach
 
Leadership at every level
Leadership at every levelLeadership at every level
Leadership at every levelJ On The Beach
 
Machine Learning: The Bare Math Behind Libraries
Machine Learning: The Bare Math Behind LibrariesMachine Learning: The Bare Math Behind Libraries
Machine Learning: The Bare Math Behind LibrariesJ On The Beach
 

Más de J On The Beach (20)

Massively scalable ETL in real world applications: the hard way
Massively scalable ETL in real world applications: the hard wayMassively scalable ETL in real world applications: the hard way
Massively scalable ETL in real world applications: the hard way
 
Big Data On Data You Don’t Have
Big Data On Data You Don’t HaveBig Data On Data You Don’t Have
Big Data On Data You Don’t Have
 
Acoustic Time Series in Industry 4.0: Improved Reliability and Cyber-Security...
Acoustic Time Series in Industry 4.0: Improved Reliability and Cyber-Security...Acoustic Time Series in Industry 4.0: Improved Reliability and Cyber-Security...
Acoustic Time Series in Industry 4.0: Improved Reliability and Cyber-Security...
 
Pushing it to the edge in IoT
Pushing it to the edge in IoTPushing it to the edge in IoT
Pushing it to the edge in IoT
 
Drinking from the firehose, with virtual streams and virtual actors
Drinking from the firehose, with virtual streams and virtual actorsDrinking from the firehose, with virtual streams and virtual actors
Drinking from the firehose, with virtual streams and virtual actors
 
How do we deploy? From Punched cards to Immutable server pattern
How do we deploy? From Punched cards to Immutable server patternHow do we deploy? From Punched cards to Immutable server pattern
How do we deploy? From Punched cards to Immutable server pattern
 
Java, Turbocharged
Java, TurbochargedJava, Turbocharged
Java, Turbocharged
 
When Cloud Native meets the Financial Sector
When Cloud Native meets the Financial SectorWhen Cloud Native meets the Financial Sector
When Cloud Native meets the Financial Sector
 
The big data Universe. Literally.
The big data Universe. Literally.The big data Universe. Literally.
The big data Universe. Literally.
 
Streaming to a New Jakarta EE
Streaming to a New Jakarta EEStreaming to a New Jakarta EE
Streaming to a New Jakarta EE
 
The TIPPSS Imperative for IoT - Ensuring Trust, Identity, Privacy, Protection...
The TIPPSS Imperative for IoT - Ensuring Trust, Identity, Privacy, Protection...The TIPPSS Imperative for IoT - Ensuring Trust, Identity, Privacy, Protection...
The TIPPSS Imperative for IoT - Ensuring Trust, Identity, Privacy, Protection...
 
Pushing AI to the Client with WebAssembly and Blazor
Pushing AI to the Client with WebAssembly and BlazorPushing AI to the Client with WebAssembly and Blazor
Pushing AI to the Client with WebAssembly and Blazor
 
Axon Server went RAFTing
Axon Server went RAFTingAxon Server went RAFTing
Axon Server went RAFTing
 
The Six Pitfalls of building a Microservices Architecture (and how to avoid t...
The Six Pitfalls of building a Microservices Architecture (and how to avoid t...The Six Pitfalls of building a Microservices Architecture (and how to avoid t...
The Six Pitfalls of building a Microservices Architecture (and how to avoid t...
 
Madaari : Ordering For The Monkeys
Madaari : Ordering For The MonkeysMadaari : Ordering For The Monkeys
Madaari : Ordering For The Monkeys
 
Servers are doomed to fail
Servers are doomed to failServers are doomed to fail
Servers are doomed to fail
 
Interaction Protocols: It's all about good manners
Interaction Protocols: It's all about good mannersInteraction Protocols: It's all about good manners
Interaction Protocols: It's all about good manners
 
A race of two compilers: GraalVM JIT versus HotSpot JIT C2. Which one offers ...
A race of two compilers: GraalVM JIT versus HotSpot JIT C2. Which one offers ...A race of two compilers: GraalVM JIT versus HotSpot JIT C2. Which one offers ...
A race of two compilers: GraalVM JIT versus HotSpot JIT C2. Which one offers ...
 
Leadership at every level
Leadership at every levelLeadership at every level
Leadership at every level
 
Machine Learning: The Bare Math Behind Libraries
Machine Learning: The Bare Math Behind LibrariesMachine Learning: The Bare Math Behind Libraries
Machine Learning: The Bare Math Behind Libraries
 

Último

Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksSoftradix Technologies
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptxLBM Solutions
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 

Último (20)

Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptx
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 

Cluster Consensus: when Aeron met Raft