Skip to content
/ akka Public
forked from akka/akka

Akka Actor Kernel: RESTful Distributed Persistent Transactional Actors

License

Notifications You must be signed in to change notification settings

tikhon/akka

 
 

Repository files navigation

Akka Actor Kernel:
RESTful Distributed Persistent Transactional Actors

Introduction

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.
  • RESTJAX-RS binding.

Here is a short overview

The Actor model and supervisor hierarchies

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 (STM)

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).

BASE: Eventually Consistent Distributed persistence

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).

REST

Actors can be exposed as REST services through JAX-RS.

Remoting

Actors can be defined and started on remote nodes, supporting both remote failures and supervision/linking. Enabling another dimension of fault-tolerance.

Java and Scala API

Both a Java API through Active Objects and annotations as well as a Scala API with Erlang-style Actors with pattern matching etc.

Microkernel

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.

Documentation

Akka has pretty thorough reference documentation. Covering examples, APIs and configuration.

Distribution

The latest distribution can be found in the downloads section

License

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.

About

Akka Actor Kernel: RESTful Distributed Persistent Transactional Actors

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published