[erlang-questions] Erlang and cloud computing

Michael Truog mjtruog@REDACTED
Wed Feb 1 01:44:31 CET 2012

On 01/31/2012 02:16 PM, eigenfunction wrote:
> I have always been intrigued by cloudi but never had the time to take
> it for a ride. Lets say that i am building a website in erlang and
> decide to use java for (jdbc)database access or to use some NLP
> librairies. In what way can cloudi be beneficial over, say, plain old
> jinterface?

When using plain old jinterface, the JVM is used as a cnode by Erlang.  However, when using the Java CloudI API, CloudI starts the JVM as an Erlang port while using jinterface for the communication within the JVM, for multiple sockets, so that each socket opened for the JVM can be used by a separate Java thread.  By doing things this way, there are a few benefits:
1) CloudI can facilitate more scalable Java source code execution with concurrent messaging done by separate Java threads (i.e., no shared Java data or Java locks).
2) CloudI does not run the JVM as a cnode, so it does not limit the scalability of the Erlang cluster based on the net tick time and the JVM responsiveness.  Distributed Erlang is limited to roughly 50 - 100 connected nodes, because of the net tick time checking.  Not running the JVM as an Erlang node helps to conserve distributed Erlang node connections so that they are only used for remote CloudI instances (on the LAN).  This also helps to avoid extra overhead within the JVM that would otherwise be doing the net tick time responses, because the JVM is ran on the local machine and is already managed as a separate OS process.
3) CloudI manages the fault-tolerance of the JVM execution, so that unstable Java source code can still be ran with limited interruption if the JVM dies infrequently.

> On Jan 31, 9:36 pm, Michael Truog <mjtr...@REDACTED> wrote:
>> On 01/30/2012 07:40 AM, Yves S. Garret wrote:
>>>    I have a curiosity question.  Is Erlang being used somehow in the field of cloud computing?  The idea of splitting up a task and then processing it in pieces in parallel seems right up Erlang's alley.
>>>    I have looked at Windows Azure, but they mostly use .NET languages, are there services where you can have a cloud computing environment and use Erlang to do the application development?  What has been your experience if you have used Erlang in cloud computing?
>> There is a public/private cloud computing framework that I have been working on for a few years called CloudI (http://cloudi.org).  CloudI helps take advantage of Erlang's actor model, extending it into C/C++, Java, Python, and Ruby, to provide fault tolerance and scalability.  Erlang is very applicable to cloud computing, since it provides real fault-tolerance... while there are attempts to provide fault-tolerance within JVM languages, it is limited by their single heap garbage collection strategy (which also helps to limit scalability).  So, it is very beneficial to have solid supervision tree functionality to manage fault-tolerance within the Erlang language.  Other cloud computing source code and services are unable to provide granular fault-tolerance... they focus on large system redundancy, like with the AWS zones or avoid an AWS zone outage.  With CloudI, it is much simpler to test without a public deployment, so you can make architectural decisions without getting
>> locked into a particular cloud computing service and that allows you to focus on lower-level fault-tolerance/scalability concerns.
>> _______________________________________________
>> erlang-questions mailing list
>> erlang-questi...@REDACTED://erlang.org/mailman/listinfo/erlang-questions
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED
> http://erlang.org/mailman/listinfo/erlang-questions

More information about the erlang-questions mailing list