reactive programming with akka and scala
TRANSCRIPT
Backend
Cooperative access:
- data
- computing power
Welcome to 1970sComputing power
and the first hipsters
Teletype Model 33 Terminal
DEC PDP-11
1980s – Mainframe eraComputing power shareCooperative data access
1980s – Mainframe eraComputing power shareCooperative data access
Mainframe crisis
Computing power share is no longer needed
Backend eraCooperative data access
Cooperative data accessweb-sites, social networks, online games
Cooperative data access
from 6 to 1366 millions228 times growth by 10 years
Cooperative data access
Cooperative data access
Reactive programming.
Programming paradigmoriented around data flows
and the propagation of change.
Execution modelwill automatically propagate changes
through the data flow.
Message Driven
Reactive:
– data is represented by a message flow
– autonomous message handlers
– async non-blocking message handling
Traditionally:
– data is a mutable shared-state
– locks
– synchronization
Responsive
Reactive:
– non-blocking async results delivery
Traditionally:
– blocking synchronous results delivery
Resilient
Reactive:
– system is highly available even if some handlers has
crashed
– handlers (new or recovered) and dataflows could be
added without downtime
Traditionally:
– application falls entirely
– maintenance downtime
Elastic
Reactive:
– event handlers are distributed over multiple
threads/processes/hosts
– message flow between threads/hosts
– scale out by nature
Traditionally:
– heavy-logic threads
– scale up shared-data
Reactive tools
Actors
Cluster
Netty, GoogleProtobuf,
At-Least-One-Delivery, Vector Clock,
CQRS + Event-Sourcing
Back to the past with reactive thrustWelcome to 1980s telnet
https://github.com/vladimir-malyk/akka-command-line-chat
Ask your questions!
https://github.com/vladimir-malyk/akka-command-line-chat