[ANN] CloudI 0.0.9 Released, A Cloud as an Interface

Michael Truog <>
Mon Mar 8 16:51:19 CET 2010


CloudI 0.0.9 (alpha)

Homepage:   http://cloudi.org
Download:  
http://sourceforge.net/projects/cloudi/files/0.0.9a/cloudi-0.0.9.tar.gz/download
Source:   http://github.com/okeuday/CloudI/tree/master#readme

ABOUT

CloudI is an open-source private cloud computing framework for secure,
internal data processing. CloudI facilitates a cloud of processes for
solving embarrassingly parallel and divide and conquer problems with
dynamic load balancing work pools while maintaining fault-tolerant workers.

CloudI requires pool data from databases or from an Erlang work module
that will automatically generate the work. CloudI was designed to be a
multi-purpose cloud for internal distributed processing and could
facilitate work supplied by an external server. CloudI is currently
focused on being an abstract type of cloud and interfacing to work.
External applications could manage security and a user interface for
CloudI's functionality. CloudI is meant to be the bare essentials for
efficient fault-tolerant processing on a cloud.

CloudI uses Erlang/OTP to provide fault-tolerance. CloudI work consists
of an Erlang module to handle allocating the work as tasks and a dynamic
library created with C/C++ to execute the work. An example of using
CloudI can be found in "src/lib/cloud_job_tests/src/", which defines the
work title "cloud_job_tests" referenced in src/cloud.conf.
"cloud_job_tests" finds hexadecimal digits of the constant PI using the
Bailey-Borwein-Plouffe formula and verifies that they are correct.
"cloud_job_tests" requires that PostgreSQL is configured and setup
because it stores the results. Memcached is also used by
"cloud_job_tests", but any results that would go to memcached are
discarded if memcached isn't configured. CouchDB, MySQL and Tokyo Tyrant
are used by "cloud_job_tests" in the same way as memcached (i.e., just
to test basic data storage functionality).

CloudI currently supports the following databases:

  * CouchDB (>= 0.9.0)
  * memcached (>= 1.3)
  * MySQL (>= 4.0)
  * PostgreSQL (>= 7.4)
  * Tokyo Tyrant (>= 1.1.23)

CloudI ensures that the C/C++ work code is executed in a fault-tolerant
way. Failover is handled with multiple CloudI instances using separate
epmd daemons. However, the coordination of the failover of running work
is not yet implemented, since that will occur in a separate external
application that is not yet written. Current failover requires knowledge
of the cloud_api module and commands fed to the Erlang VM shell, so it
is a manual process.
CloudI fault-tolerance test cases include:

  * a local death of a CloudI instance coordinating Erlang VM
  * a local death of C/C++ work code (within a cloud_worker_port OS
process) due to a signal
  * a local stop of C/C++ work code (within a cloud_worker_port OS
process) due to a signal
  * a remote death of a CloudI instance Erlang VM
  * a remote death of C/C++ work code (within a cloud_worker_port OS
process) due to a signal
  * a remote stop of C/C++ work code (within a cloud_worker_port OS
process) due to a signal




More information about the erlang-questions mailing list