Storm VS Akka

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