The Akka kernel implements a unique hybrid of:
- The Actor model (Actors and Active Objects)
- Asynchronous, non-blocking highly concurrent components.
- Supervision with “let-it-crash” semantics. Components are loosely coupled and restarted upon failure.
- Software Transactional Memory (STM).
- BASE persistence – Pluggable Eventually Consistent distributed scalable persistent storage.
- Remoting – Distributed services.
- REST – JAX-RS binding.
Actors with Erlang OTP-style supervisors and “embrace failure/let-it-crash” semantics to allow implementation of asynchronous, non-blocking and highly fault-tolerant systems. Sort of SEDA in a box with highly configurable and monitorable (JMX and w3c) thread pools and message queues.
Software Transactional Memory for composable message flows. Distributed transactions will come very soon, backed up by ZooKeeper. The STM works with both persistent datastructures and in-memory datastructures (see below).
Akka provides a Eventually Consistent Transactional Persistent Map, Vector and Ref. Backed up by the Cassandra highly scalable, eventually consistent, distributed, structured key-value store. Akka will add support for Terracotta, Redis, Memcached, Voldemort, Tokyo Cabinet/Tyrant and Hazelcast shortly.
New nodes can be added and removed on the fly to support true scaling of cluster. The addition of Terracotta and Hazelcast will allow for atomic (ACID) transactions (non-BASE).
Actors can be defined and started on remote nodes, supporting both remote failures and supervision/linking. Enabling another dimension of fault-tolerance.
Both a Java API through Active Objects and annotations as well as a Scala API with Erlang-style Actors with pattern matching etc.
Akka has a microkernel that embeds the Actor management, Persistence service, REST integration, JMX management and Remote service. Simply drop your application in the /deploy directory and start up the kernel and you should be able to access your Actors through REST.
Akka has pretty thorough reference documentation. Covering examples, APIs and configuration.
The latest distribution can be found in the downloads section
This software is licensed under the Apache 2 license, quoted below. Copyright 2009 Scalable Solutions AB <http://scalablesolutions.se> Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.