SlideShare ist ein Scribd-Unternehmen logo
1 von 134
Downloaden Sie, um offline zu lesen
Akka Persistence
and Eventuate
A CQRS/ES tool comparison
Martin Krasser (@mrt1nz)
Freelance software developer/architect
History
Eventsourced Akka Persistence
Eventuate
7.2012 9.2013 1.2015
Similarities
Basis technologies
Scala
Akka actors
Akka streams
(Pluggable) storage backends
Akka actor
Actor
State
Behavior
Mailbox
transient
non-durable
Akka Persistence
and Eventuate
Persist actor state via event sourcing
Event sourcing
Capture all changes to application
state as sequence of events
Store events in event log (append-
only)
Replay events to recover application
state
Event sourcing
Commands - actions, can fail
Events - immutable facts
Event-sourced actor
Actor
State
Behavior
Mailbox
Command handler
Event handler
Command processing
Event-sourced actor
State
Command handler
Event handler
Event log
Command processing
Event-sourced actor
State
Command handler
Event handler
Command
Event log
Command processing
Event-sourced actor
State
Command handler
Event handler
Command
Event log
Events
Command processing
Event-sourced actor
State
Command handler
Event handler
Command
Event log
Events
Events
Command processing
Event-sourced actor
State
Command handler
Event handler
Command
Event log
Events
Events
Command processing
Event-sourced actor
State
Command handler
Event handler
Command
Reply
Event log
Events
Events
State recovery
Event-sourced actor
State
Command handler
Event handler
Event log
State recovery
Event-sourced actor
State
Command handler
Event handler
Event log
Events (replay)
State recovery
Event-sourced actor
State
Command handler
Event handler
Event log
Events (replay)
Akka Persistence
and Eventuate
Separate command processing from
query processing
CQRS
Command Query

Responsibility Segregation
Different data models for command
processing and query processing
CQRS
Write model for command
processing
Read model for query

processing
CQRS
Can be well combined with event
sourcing (CQRS/ES)
CQRS/ES
Write model
Event log
Command Query
Events (r/w) Events (r)
Command side Query side
Read model
Abstractions
Command side Query side
Akka
Persistence
PersistentActor
PersistentView
Source[E,M]
Eventuate EventsourcedActor
EventsourcedView
EventsourcedProcessor
Source[E,M]
*) work in progress
PersistentActor EventsourcedActor
PersistentActor EventsourcedActor
State
PersistentActor EventsourcedActor
Command

handler
PersistentActor EventsourcedActor
Event

handler
PersistentActor EventsourcedActor
Snapshot

handler
Differences
Command side
At a glance
https://twitter.com/mrt1nz/status/573382831889653760
Consistency
Akka Persistence and Eventuate
support strong consistency
Eventuate additionally supports
relaxation to causal consistency
Akka Persistence
Enforces strong consistency on
command side
PersistentActors must be global
singletons
No actor/state replication
Eventuate
EventsourcedActors can be replicated
State replication via reliable,
asynchronous event replication
Replication across locations
(availability zones)
Replication
Location A
Location B
Location C
Replication
Location A
Application state
Location B
Location C
Replication
Events
Events
Location A
Application state
Location B
Location C
Replication
Events
Events
Location A
Application state
Location B
Location C
Replication
Command
Location A
Location B
Location C
Replication
Command
X
Location A
Location B
Location C
Replication
Command
X
Events
Events
Location A
Location B
Location C
Replication
Command
X
X
X
Events
Events
Location A
Location B
Location C
Eventuate
Replicas writeable at all locations =
multi-master
Write-availability during network
partitions
Eventuate
Write conflicts
detection
tracking
automated resolution
interactive resolution
Partition
Location A
Location B
Location C
Partition
Command
Location A
Location B
Location C
Partition
Command
X
Location A
Location B
Location C
Partition
Command
X
Events
Location A
Location B
Location C
Partition
Command
X
XEvents
Location A
Location B
Location C
Partition
Command
Command
X
XEvents
Location A
Location B
Location C
Partition
Command
Command
X
X
Y
Events
Location A
Location B
Location C
Partition
Command
Command
X
X
Y
Events
Location A
Location B
Location C
Partition
Command
Command
X
X
Y
EventsEvents
Events
Location A
Location B
Location C
Conflict
XY
XY
XY
Location A
Location B
Location C
Resolution
XY
XY
XY
Interactive
resolution
XY => Z
Location A
Location B
Location C
Resolution
XY
XY
Interactive
resolution
XY => Z
Z
Location A
Location B
Location C
Resolution
XY
XY
Interactive
resolution
XY => Z
Z
Events
Events
Location A
Location B
Location C
Resolution
Interactive
resolution
XY => Z
Z
Z
Z
Events
Events
Location A
Location B
Location C
Eventuate
Strong consistency within location*)
Causal consistency across locations
Causality is tracked with vector
clocks
*) relaxation to causal consistency also possible within location
Causal consistency
example
Distributed chat application
FIFO reliable broadcast vs.
Causal reliable broadcast
Inspired by ACM article “Don’t Settle
for Eventual Consistency”
http://queue.acm.org/detail.cfm?
id=2610533
Causal consistency
example
FIFO rel. broadcast
DC1
DC2
DC3
FIFO rel. broadcast
- Alice: Lost my wedding ring
Alice
DC1
DC2
DC3
FIFO rel. broadcast
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
Alice
DC1
DC2
DC3
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
Alice
- Alice: Whew, found it upstairs
DC1
DC2
DC3
FIFO rel. broadcast
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
Alice
- Alice: Whew, found it upstairs
- Alice: Whew, found it upstairs
DC1
DC2
DC3
FIFO rel. broadcast
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
Alice
- Alice: Whew, found it upstairs
- Alice: Whew, found it upstairs
DC1
DC2
DC3
FIFO rel. broadcast
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
Bob
- Alice: Whew, found it upstairs
- Alice: Whew, found it upstairs
- Bob: I’m glad to hear that
DC1
DC2
DC3
FIFO rel. broadcast
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
Bob
- Alice: Whew, found it upstairs
- Alice: Whew, found it upstairs
- Bob: I’m glad to hear that
- Bob: I’m glad to hear that
DC1
DC2
DC3
FIFO rel. broadcast
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
- Alice: Whew, found it upstairs
- Alice: Whew, found it upstairs
- Bob: I’m glad to hear that
- Bob: I’m glad to hear that
- Bob: I’m glad to hear that
DC1
DC2
DC3
Bob
FIFO rel. broadcast
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
- Alice: Whew, found it upstairs
- Alice: Whew, found it upstairs
- Bob: I’m glad to hear that
- Bob: I’m glad to hear that
- Bob: I’m glad to hear that
DC1
DC2
DC3
FIFO rel. broadcast
Causality violation!
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
- Alice: Whew, found it upstairs
- Alice: Whew, found it upstairs
- Bob: I’m glad to hear that
- Bob: I’m glad to hear that
- Bob: I’m glad to hear that
- Alice: Whew, found it upstairs
DC1
DC2
DC3
FIFO rel. broadcast
Retry
Causality violation!
Causal rel. broadcast
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
- Alice: Whew, found it upstairs
- Alice: Whew, found it upstairs
DC1
DC2
DC3
Causal rel. broadcast
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
Bob
- Alice: Whew, found it upstairs
- Alice: Whew, found it upstairs
- Bob: I’m glad to hear that
DC1
DC2
DC3
Causal rel. broadcast
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
Bob
- Alice: Whew, found it upstairs
- Alice: Whew, found it upstairs
- Bob: I’m glad to hear that
Causality

check
DC1
DC2
DC3
Causal rel. broadcast
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
Bob
- Alice: Whew, found it upstairs
- Alice: Whew, found it upstairs
- Bob: I’m glad to hear that
- Bob: I’m glad to hear that
Causality

check
DC1
DC2
DC3
Causal rel. broadcast
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
Bob
- Alice: Whew, found it upstairs
- Alice: Whew, found it upstairs
- Bob: I’m glad to hear that
- Bob: I’m glad to hear that
Causality

check
Causality

check
DC1
DC2
DC3
Causal rel. broadcast
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
Bob
- Alice: Whew, found it upstairs
- Alice: Whew, found it upstairs
- Bob: I’m glad to hear that
- Bob: I’m glad to hear that
- Bob: I’m glad to hear that
Buffer
Causality

check
Causality

check
DC1
DC2
DC3
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
- Alice: Whew, found it upstairs
- Alice: Whew, found it upstairs
- Bob: I’m glad to hear that
- Bob: I’m glad to hear that
- Bob: I’m glad to hear that
Buffer
Causality

check
Retry
DC1
DC2
DC3
Causal rel. broadcast
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
- Alice: Whew, found it upstairs
- Alice: Whew, found it upstairs
- Bob: I’m glad to hear that
- Bob: I’m glad to hear that
- Bob: I’m glad to hear that
Buffer
Causality

check
- Alice: Whew, found it upstairs
Retry
DC1
DC2
DC3
Causal rel. broadcast
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
- Alice: Whew, found it upstairs
- Alice: Whew, found it upstairs
- Bob: I’m glad to hear that
- Bob: I’m glad to hear that
- Bob: I’m glad to hear that
Buffer
Causality

check
- Bob: I’m glad to hear that
- Alice: Whew, found it upstairs
Retry
DC1
DC2
DC3
Causal rel. broadcast
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
- Alice: Lost my wedding ring
- Alice: Whew, found it upstairs
- Alice: Whew, found it upstairs
- Bob: I’m glad to hear that
- Bob: I’m glad to hear that
- Bob: I’m glad to hear that
- Alice: Whew, found it upstairs
Causal re-ordering
DC1
DC2
DC3
Causal rel. broadcast
Causal consistency
Causally related events are
delivered in same order at all
locations
Concurrent events can be delivered
in any order at different locations
Differences
Event log
“Local”
event log
Eventuate
- LevelDB
- Cassandra
Location A
Location B
Location C
“Local”
event log
“Replicated”
event log
Eventuate
- LevelDB
- Cassandra
Location A
Location B
Location C
- LevelDB
- Cassandra
EventsEvents
Events
Local event log
Storage order consistent with

causal order
Given the potential causality
relation ➞ of events
Local event logs are linear
extensions of ➞
Replicated event log
Same causal event storage order 

at different locations
Different total event storage order 

at different locations
Akka Persistence
- LevelDB
- Cassandra
- EventStore
- MongoDB
- Kafka
- …
Location A
Location B
Location C
Differences
Event collaboration
Akka Persistence
PA
PA
PA
PA
Event log:
private for writing
shared for reading
(query side)
Eventuate
EA
EA
EA
Event log:
shared for writing
shared for reading
EA
Event routing
EA
EA
EA
Event routing
EA
EA
EA
e1
Event routing
EA
EA
EA
e1
e1
Event routing
EA
EA
EA
e1
e1
All
Topic
Aggregate id
…
Event routing
EA
EA
EA
e1
e1
EAEA
e1
EA
e1
Location A
Location B
Location C
Event collaboration
State replication
Service interaction
Event collaboration
S2
S1
S1
S3
Location A
Location B
Location C
Event collaboration
S2
S1
e1
S1
S3
Location A
Location B
Location C
Event collaboration
S2
S1
e1
S1
e1
S3
Location A
Location B
Location C
Event collaboration
S2
S1
e1
e1
S1
e1
S3
e1
Location A
Location B
Location C
Event collaboration
S2
S1
e1
e1
S1
e1
S3
e1
Location A
Location B
Location C
e2
Event collaboration
S2
S1
e1
e1
S1
e1
S3
e1
Location A
Location B
Location C
e2
e2
Event collaboration
Reliable, distributed and partition-
tolerant business processes
Event-driven (micro-)service
architectures
Event collaboration
Reliable event delivery
Causal event delivery
De-duplicated event stream
Differences
Query side
Akka Persistence 2.3
PA
PA
PV
PV
PV
PersistentViews on single PersistentActor

(default)
Akka Persistence 2.4
PA
PA
S
S
S
Stream Sources for multiple PersistentActors

(requires storage plugin support)
Eventuate
EV
EV
EventsourcedViews on multiple EventsourcedActors

(default, shared local log)
EA
EA
EA
Eventuate
EV
EV
EventsourcedViews on multiple EventsourcedActors

(default, shared replicated log)
EA
EA
EA
EA
EAEA
Location A
Location B
Location C
Consistency in CQRS
Eventual
consistency
Causal
consistency
Akka
Persistence
usually per PA
(plugin-specific)
Eventuate
Causal consistency
Single EA/EV: default
Across EA/EV: conditional requests
Example scenario
Update a write model (EA)
Query a read model (EV)
Query result should include effect
that was caused by the update
Conditional request
EA
Location A
EV
Location B
Conditional request
EA
Location A
EV
Location B
cmd
Conditional request
EA
Location A
EV
Location B
evt
cmd
Conditional request
EA
Location A
EV
Location B
evt
evt(vts)
cmd
vts = vector timestamp (a “condition”)
Conditional request
EA
Location A
EV
Location B
evt
evt(vts)
cmd reply(vts)
vts = vector timestamp (a “condition”)
Conditional request
EA
Location A
EV
Location B
evt
evt(vts)
cmd CR(query, vts)reply(vts)
vts = vector timestamp (a “condition”)
Conditional request
EA
Location A
EV
Location B
evt
evt(vts)
cmd CR(query, vts)reply(vts)
vts = vector timestamp (a “condition”)
delay
Conditional request
EA
Location A
EV
Location B
evt
evt(vts)
cmd CR(query, vts)reply(vts)
vts = vector timestamp (a “condition”)
delay
Conditional request
EA
Location A
EV
Location B
evt
evt(vts)evt(vts)
cmd CR(query, vts)reply(vts)
vts = vector timestamp (a “condition”)
delay
Conditional request
EA
Location A
EV
Location B
evt
evt(vts)evt(vts)
cmd CR(query, vts)reply(vts)
vts = vector timestamp (a “condition”)
deliver
Conditional request
EA
Location A
EV
Location B
evt
evt(vts)evt(vts)
cmd CR(query, vts)reply(vts)
vts = vector timestamp (a “condition”)
reply
deliver
Akka Distributed Data
and Eventuate
CRDTs
CRDTs
Conflict-free Replicated Data Types
Automated resolution of write conflicts
CRDTs
Akka distributed data: CvRDTs

(convergent or state-based)
Eventuate: CmRDTs

(commutative or operation-based)
CRDTs
CvRDTs CmRDTs
Message
payload
Current state Operations
Communication
middleware
No guarantees
Reliable
broadcast
(idempotent)
Change
history
CvRDT intern Persistent log
Specification
“A comprehensive study of
Convergent and Commutative
Replicated Data Types”
http://hal.upmc.fr/docs/00/55/55/88/
PDF/techreport.pdf
Akka CvRDTs
10 implemented from specification

(incl. counters, registers, sets, maps)
In-memory only (non-durable)
Custom data types can be defined
Eventuate CmRDTs
4 implemented from specification

(Counter, MV/LWW-register, OR-Set)
Durable via event sourcing
Eventuate CRDT framework
Documentation
http://rbmhtechnology.github.io/eventuate/
http://doc.akka.io/docs/akka/2.4.0/scala/
persistence.html
http://doc.akka.io/docs/akka/2.4.0/scala/
persistence-query.html
http://doc.akka.io/docs/akka/2.4.0/scala/
distributed-data.html
Thank you!

Weitere ähnliche Inhalte

Andere mochten auch

CQRS + ES with Scala and Akka
CQRS + ES with Scala and AkkaCQRS + ES with Scala and Akka
CQRS + ES with Scala and AkkaBharadwaj N
 
Resilient Applications with Akka Persistence - Scaladays 2014
Resilient Applications with Akka Persistence - Scaladays 2014Resilient Applications with Akka Persistence - Scaladays 2014
Resilient Applications with Akka Persistence - Scaladays 2014Björn Antonsson
 
Akka in Production - ScalaDays 2015
Akka in Production - ScalaDays 2015Akka in Production - ScalaDays 2015
Akka in Production - ScalaDays 2015Evan Chan
 
Akka persistence webinar
Akka persistence webinarAkka persistence webinar
Akka persistence webinarpatriknw
 
An Introduction to Akka http
An Introduction to Akka httpAn Introduction to Akka http
An Introduction to Akka httpKnoldus Inc.
 
Akka: Simpler Scalability, Fault-Tolerance, Concurrency & Remoting through Ac...
Akka: Simpler Scalability, Fault-Tolerance, Concurrency & Remoting through Ac...Akka: Simpler Scalability, Fault-Tolerance, Concurrency & Remoting through Ac...
Akka: Simpler Scalability, Fault-Tolerance, Concurrency & Remoting through Ac...Jonas Bonér
 
Securing Microservices using Play and Akka HTTP
Securing Microservices using Play and Akka HTTPSecuring Microservices using Play and Akka HTTP
Securing Microservices using Play and Akka HTTPRafal Gancarz
 
Understanding Akka Streams, Back Pressure, and Asynchronous Architectures
Understanding Akka Streams, Back Pressure, and Asynchronous ArchitecturesUnderstanding Akka Streams, Back Pressure, and Asynchronous Architectures
Understanding Akka Streams, Back Pressure, and Asynchronous ArchitecturesLightbend
 
Akka and the Zen of Reactive System Design
Akka and the Zen of Reactive System DesignAkka and the Zen of Reactive System Design
Akka and the Zen of Reactive System DesignLightbend
 
Building Reactive Systems with Akka (in Java 8 or Scala)
Building Reactive Systems with Akka (in Java 8 or Scala)Building Reactive Systems with Akka (in Java 8 or Scala)
Building Reactive Systems with Akka (in Java 8 or Scala)Jonas Bonér
 
Akka Finite State Machine
Akka Finite State MachineAkka Finite State Machine
Akka Finite State MachineKnoldus Inc.
 
Prolog Visualizer
Prolog VisualizerProlog Visualizer
Prolog VisualizerZhixuan Lai
 
Microservices 101: Exploiting Reality's Constraints with Technology
Microservices 101: Exploiting Reality's Constraints with TechnologyMicroservices 101: Exploiting Reality's Constraints with Technology
Microservices 101: Exploiting Reality's Constraints with TechnologyLegacy Typesafe (now Lightbend)
 
#hacksummit 2016 - event-driven microservices – Events on the outside, on the...
#hacksummit 2016 - event-driven microservices – Events on the outside, on the...#hacksummit 2016 - event-driven microservices – Events on the outside, on the...
#hacksummit 2016 - event-driven microservices – Events on the outside, on the...Chris Richardson
 
DSR Microservices (Day 1, Part 2)
DSR Microservices (Day 1, Part 2)DSR Microservices (Day 1, Part 2)
DSR Microservices (Day 1, Part 2)Steve Upton
 
Scala + Akka + ning/async-http-client - Vancouver Scala meetup February 2015
Scala + Akka + ning/async-http-client - Vancouver Scala meetup February 2015Scala + Akka + ning/async-http-client - Vancouver Scala meetup February 2015
Scala + Akka + ning/async-http-client - Vancouver Scala meetup February 2015Yanik Berube
 
A csodák logikája
A csodák logikájaA csodák logikája
A csodák logikájaszkbl
 
Codemotion akka persistence, cqrs%2 fes y otras siglas del montón
Codemotion   akka persistence, cqrs%2 fes y otras siglas del montónCodemotion   akka persistence, cqrs%2 fes y otras siglas del montón
Codemotion akka persistence, cqrs%2 fes y otras siglas del montónJavier Santos Paniego
 

Andere mochten auch (20)

CQRS + ES with Scala and Akka
CQRS + ES with Scala and AkkaCQRS + ES with Scala and Akka
CQRS + ES with Scala and Akka
 
Resilient Applications with Akka Persistence - Scaladays 2014
Resilient Applications with Akka Persistence - Scaladays 2014Resilient Applications with Akka Persistence - Scaladays 2014
Resilient Applications with Akka Persistence - Scaladays 2014
 
Akka in Production - ScalaDays 2015
Akka in Production - ScalaDays 2015Akka in Production - ScalaDays 2015
Akka in Production - ScalaDays 2015
 
Akka persistence webinar
Akka persistence webinarAkka persistence webinar
Akka persistence webinar
 
An Introduction to Akka http
An Introduction to Akka httpAn Introduction to Akka http
An Introduction to Akka http
 
Akka: Simpler Scalability, Fault-Tolerance, Concurrency & Remoting through Ac...
Akka: Simpler Scalability, Fault-Tolerance, Concurrency & Remoting through Ac...Akka: Simpler Scalability, Fault-Tolerance, Concurrency & Remoting through Ac...
Akka: Simpler Scalability, Fault-Tolerance, Concurrency & Remoting through Ac...
 
Securing Microservices using Play and Akka HTTP
Securing Microservices using Play and Akka HTTPSecuring Microservices using Play and Akka HTTP
Securing Microservices using Play and Akka HTTP
 
Understanding Akka Streams, Back Pressure, and Asynchronous Architectures
Understanding Akka Streams, Back Pressure, and Asynchronous ArchitecturesUnderstanding Akka Streams, Back Pressure, and Asynchronous Architectures
Understanding Akka Streams, Back Pressure, and Asynchronous Architectures
 
Akka and the Zen of Reactive System Design
Akka and the Zen of Reactive System DesignAkka and the Zen of Reactive System Design
Akka and the Zen of Reactive System Design
 
Building Reactive Systems with Akka (in Java 8 or Scala)
Building Reactive Systems with Akka (in Java 8 or Scala)Building Reactive Systems with Akka (in Java 8 or Scala)
Building Reactive Systems with Akka (in Java 8 or Scala)
 
Akka Finite State Machine
Akka Finite State MachineAkka Finite State Machine
Akka Finite State Machine
 
Prolog Visualizer
Prolog VisualizerProlog Visualizer
Prolog Visualizer
 
Microservices 101: Exploiting Reality's Constraints with Technology
Microservices 101: Exploiting Reality's Constraints with TechnologyMicroservices 101: Exploiting Reality's Constraints with Technology
Microservices 101: Exploiting Reality's Constraints with Technology
 
Fluent-bit
Fluent-bitFluent-bit
Fluent-bit
 
#hacksummit 2016 - event-driven microservices – Events on the outside, on the...
#hacksummit 2016 - event-driven microservices – Events on the outside, on the...#hacksummit 2016 - event-driven microservices – Events on the outside, on the...
#hacksummit 2016 - event-driven microservices – Events on the outside, on the...
 
DSR Microservices (Day 1, Part 2)
DSR Microservices (Day 1, Part 2)DSR Microservices (Day 1, Part 2)
DSR Microservices (Day 1, Part 2)
 
Scala + Akka + ning/async-http-client - Vancouver Scala meetup February 2015
Scala + Akka + ning/async-http-client - Vancouver Scala meetup February 2015Scala + Akka + ning/async-http-client - Vancouver Scala meetup February 2015
Scala + Akka + ning/async-http-client - Vancouver Scala meetup February 2015
 
scalaphx-akka-http
scalaphx-akka-httpscalaphx-akka-http
scalaphx-akka-http
 
A csodák logikája
A csodák logikájaA csodák logikája
A csodák logikája
 
Codemotion akka persistence, cqrs%2 fes y otras siglas del montón
Codemotion   akka persistence, cqrs%2 fes y otras siglas del montónCodemotion   akka persistence, cqrs%2 fes y otras siglas del montón
Codemotion akka persistence, cqrs%2 fes y otras siglas del montón
 

Kürzlich hochgeladen

ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...Christina Lin
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024StefanoLambiase
 
The Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfThe Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfPower Karaoke
 
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
 
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
 
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
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...soniya singh
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - InfographicHr365.us smith
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxTier1 app
 
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
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackVICTOR MAESTRE RAMIREZ
 
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
 
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.
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfAlina Yurenko
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureDinusha Kumarasiri
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...gurkirankumar98700
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样umasea
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)OPEN KNOWLEDGE GmbH
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataBradBedford3
 

Kürzlich hochgeladen (20)

ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
 
The Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfThe Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdf
 
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...
 
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
 
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
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - Infographic
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
 
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
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStack
 
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....
 
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
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with Azure
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
 

Akka Persistence and Eventuate