rewrote README

This commit is contained in:
Jonas Boner 2009-08-02 16:15:02 +02:00
parent 136cb4e334
commit c2c2aabca7

View file

@ -1,73 +1,68 @@
h1. Akka Actor Kernel: h1. Akka: RESTful Distributed Persistent Transactional Actors
__RESTful Distributed Persistent Transactional Actors__
h3. "http://akkasource.org":http://akkasource.org
h1. Introduction
Akka implements a unique hybrid of:
The Akka kernel implements a unique hybrid of: * The Actor model (Actors and Active Objects), which gives you:
* The Actor model (Actors and Active Objects) ** Concurrency (high-level and simple)
** Asynchronous, non-blocking highly concurrent components. ** Asynchronous, non-blocking and highly performant components.
** Supervision with "let-it-crash" semantics. Components are loosely coupled and restarted upon failure. ** Supervision with "let-it-crash" semantics. Components are loosely coupled and restarted upon failure.
* Software Transactional Memory (STM). * Software Transactional Memory (STM).
* BASE persistence - Pluggable Eventually Consistent distributed scalable persistent storage. * BASE and ACID persistence - Pluggable Eventually Consistent or ACID distributed scalable persistent storage.
* Remoting - Distributed services. * Remoting - Distributed services with supervision and error management
* REST - JAX-RS binding. * REST (JAX-RS) and Comet bindings.
* Monitoring and Management
h2. Here is a short overview
Akka can be used in two different ways:
h3. The Actor model and supervisor hierarchies * As a library: used by a web app, to be put into WEB-INF/lib
* As a kernel: stand-alone kernel, embedding the servlet container
"Actors":http://en.wikipedia.org/wiki/Actor_model with "Erlang OTP-style supervisors":http://www.erlang.org/doc/design_principles/sup_princ.html#5 and "embrace failure/let-it-crash" semantics to allow implementation of asynchronous, non-blocking and highly fault-tolerant systems. Sort of "SEDA":http://www.eecs.harvard.edu/~mdw/proj/seda/ in a box with highly configurable and monitorable (JMX and w3c) thread pools and message queues.
See the "Use-case and Deployment Scenarios":http://wiki.github.com/jboner/akka/use-case-and-deployment-scenarios for details.
h3. Software Transactional Memory (STM)
h1. What's Akka all about? Why should I care?
"Software Transactional Memory (STM)":http://en.wikipedia.org/wiki/Software_transactional_memory for composable message flows. Distributed transactions will come very soon, backed up by "ZooKeeper":http://hadoop.apache.org/zookeeper/. The STM works with both persistent datastructures and in-memory datastructures (see below).
If you are new to Akka then I suggest you start with either the:
h3. BASE: Eventually Consistent Distributed persistence
* "High Level View":http://wiki.github.com/jboner/akka/modules-the-high-level-view; which is outlining the different modules in Akka.
Akka provides a "Eventually Consistent":http://www.allthingsdistributed.com/2008/12/eventually_consistent.html Transactional Persistent Map, Vector and Ref. Backed up by the "Cassandra":http://incubator.apache.org/cassandra/ highly scalable, eventually consistent, distributed, structured key-value store. Akka will add support for "Terracotta":http://terracotta.org, "Redis":http://code.google.com/p/redis/, "Memcached":http://www.danga.com/memcached/, "Voldemort":http://project-voldemort.com/, "Tokyo Cabinet/Tyrant":http://tokyocabinet.sourceforge.net/ and "Hazelcast":http://www.hazelcast.com/ shortly. * "Use-case and Deployment Scenarios":http://wiki.github.com/jboner/akka/use-case-and-deployment-scenarios; outlining how and in which use-case and deployment scenarios can I use Akka?
* "Examples":http://wiki.github.com/jboner/akka/examples; showing how to build a RESTful, transactional, persistent Active Object and Actor.
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).
After that you can dive into the "Reference Manual":http://wiki.github.com/jboner/akka/akka-reference-manual.
h3. REST
h1. Documentation
Actors can be exposed as "REST":http://en.wikipedia.org/wiki/Representational_State_Transfer services through "JAX-RS":https://jersey.dev.java.net/.
Akka has pretty thorough "reference documentation":https://github.com/jboner/akka/wikis. Covering examples, APIs and configuration.
h3. Remoting
h1. Distribution
Actors can be defined and started on remote nodes, supporting both remote failures and supervision/linking. Enabling another dimension of fault-tolerance.
The latest distribution can be found in the "downloads section":https://github.com/jboner/akka/downloads
h3. Java and Scala API
h1. Mailing List
Both a Java API through Active Objects and annotations as well as a Scala API with Erlang-style Actors with pattern matching etc.
If you have questions and/or feedback: please sign up to the Akka User mailing list:
h3. Microkernel "http://groups.google.com/group/akka-user":http://groups.google.com/group/akka-user
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. h1. Professional Support
h2. Documentation Scalable Solutions AB is providing a variety of professional support packages for Akka, please visit their website for details:
"http://scalablesolutions.se":http://scalablesolutions.se
Akka has pretty thorough "reference documentation":https://github.com/jboner/akka/wikis. Covering examples, APIs and configuration.
h1. License
h2. Distribution
<pre>
The latest distribution can be found in the "downloads section":https://github.com/jboner/akka/downloads This software is licensed under the Apache 2 license, quoted below.
h2. License Copyright 2009 Scalable Solutions AB <http://scalablesolutions.se>
<pre> Licensed under the Apache License, Version 2.0 (the "License"); you may not
This software is licensed under the Apache 2 license, quoted below. use this file except in compliance with the License. You may obtain a copy of
the License at
Copyright 2009 Scalable Solutions AB <http://scalablesolutions.se>
http://www.apache.org/licenses/LICENSE-2.0
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 Unless required by applicable law or agreed to in writing, software
the License at distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
http://www.apache.org/licenses/LICENSE-2.0 License for the specific language governing permissions and limitations under
the License.
Unless required by applicable law or agreed to in writing, software </pre>
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.
</pre>