Akka vs Storm
Metric
|
Storm
|
Akka
|
Trying to solve
|
Concurrency in a cluster (Realtime distribution computation system)
|
Computer programming with concurrency (language tool general actor concurrency framework)
|
Part of scala library
|
No
|
Yes (akka core, starting with Scala 2.11.0, the Scala Actors library is deprecated. Already in Scala 2.10.0 the default actor library is Akka.)
|
homogenous cluster?
|
No - you must have special nodes such as nimbus remoteRPC server + zookeeper cluster which you need to install
|
Yes all nodes are same
|
transparent supervisor
|
No (must be specifically defined in zookeeper)
|
Yes its just another actor
|
How many actors or bolts in one server
|
thousands
(doesnt mean it's less good its a different approach)
|
millions
(doesn't mean its better, an actor is an object)
|
Threads sharing
|
No each bolt is a single thread
|
Yes multiple actors on same thread (transparently)
|
Two way communication?
|
Possible only by having another type of server RemoteDRPCServer server you need as a client to connect to this RPC server (ackward).
|
Yes (and transparently) ActorA → ActorB → ActorA so an actor can return a result to originating message
|
Dynamic topology
|
NA must define statically the topology
|
Yes fully dynamic
|
Async write file/db
|
NA
|
Agent.sendOff
|
Multi process single write to file/db
|
NA
|
Agent.send/off only one agent will send it!
|
STM
|
NA
|
atomic { code in here is in transaction }
|
Combine side effects (Agnets) with STM
|
NA
|
atomic { agent side effect }
|
includes async http server
|
NA
|
Yes as an akka library called Mist
|
push http stream into
|
NA designed for poll (spouts are polling kafka for exapmle)
|
Yes with the async http server
|
DataFlow implementation (deterministic concurrency if deadlocks always deadlocks if result is 5 always 5)
|
NA
|
flow { } block
|
Terminology
|
Weird (spouts, bolts)
|
Developer friendly: Actors, STM ,atomic {}
|
Easy to work/develop with
|
Yes (framework tailors you to the correct coding path)
|
If you are careful. You can get very fast into a system which is highly complex with actor for anything, this is a bad practice, you should know when to use them, and try to stay as clear as possible.
|
A programmer tool?
|
A framework, specifically tailored for concurrency in cluster, its not a language building block.
|
Very general can build storm with akka so its a developers tool, with these building blocks you can build storm, however this also mean its over generic.
|
Bottom line, will I be able to accomplish high concurrency of realtime / near real time work in production
|
Yes! from my experience its a great framework, and it does it job well!
|
Yes! production wise and development wise all is great, high concurrency achieved.
|
Comments