Professional Documents
Culture Documents
Sushanta Pradhan
Talentica Software (I) Pvt. Ltd.
Moores Law
Parallel programming as easy as sequential programming Mooress law of performance speed up 2 times year on year Eliminate concurrency bugs
contd ..
web2.0/semantic web era web/networked applications Smart apps data not controlled by vendor but by the users deployed on cloud
Why Hard?
non-determinism due to shared mutable state by concurrent threads encapsulate state in actors or transactors but fundamental problems still remains non-determinism = parallel processing + mutable state
Remedy?
PREVENTION IS BETTER THAN CURE !! Avoid mutable state and get deterministic processing
Space vs Time
Space(functional/parallel)
Time(imperative/concurrent)
Scala
Hybrid functional & object oriented (pure) strong static typing Agile - concise & expressive Parallel & Sequential intermixes well with Java
Scala contd ..
Parallellism parallel collections distributed collections Concurrency Actors STM Akka Futures
Scala contd ..
Concise Java Immutability Val & Var Tuples & Multiple Assignments Sensible Defaults Operator Overloading
Scala classes ..
Terse Object keyword - Singleton Companion Objects Type inference Option[T] Some[T], None
Class hierarchy
Scala Inehritance
Traits Mixins Type inference - implicit keyword
Scala collections
Mutable & immutable filter() Map() foldLeft() foldRight()
Scala - Concurrency
actor() Actor Class receive() & recieveWithin() react() & reachWithin() loop() & loopwhile()
Akka - Middleware
Concurrent, Scalable & fault-tolerant based on actor model highly performant event driven location transparency
Actor system
ensemble of actors sharing common configuration hierarchical structure heavyweight has its own pool of resources threads
Supervision
dependency relationship between actors supervisor - subordinate model supervisor monitors and reacts to any errors reported by subordinates configurable supervision strategy lifecycle monitoring
Supervision hierarchy
Remoting
ActorPath purely local - "akka://my-sys/user/service-a/worker1" local or remote - "akka://my-sys@host.example.com:5678 /user/service-b"
Routing
route messages to actors(routees) ideal for load balancing Examples RoundRobinRouter RandomRouter SmallestMailboxRouter BroadcastRouter
Dispatchers
make akka actors tick manages the resources(threads) used by actors configure mailboxes of actors Examples fork-join-executor thread-pool-executor
Play
ruby on rails like agility convention over configuration seamless integration with akka for scalability edit and test
Play contd ..
an easy, out-of-the-box setup for unit and functional testing asynchronous HTTP request handling WebSocket support cache support (e.g. memcached) integrated JSON and XML handling
Q/A