A Cloud as an Interface
CloudI is an open-source private cloud computing framework for efficient, scalable, and stable soft-realtime event processing. CloudI can easily integrate with software written in C/C++, Erlang, Java, Python, and Ruby with its light-weight API. Read more about what CloudI is within the FAQ.
C event handler example:
void calculate_probability(cloudi_instance_t * api,
int const command,
char const * const name,
void const * const request_info,
uint32_t const request_info_size,
void const * const request,
uint32_t const request_size,
uint32_t timeout,
int8_t priority,
char const * const trans_id,
char const * const pid,
uint32_t const pid_size)
{
float const events_expected = get_expected(request, request_size);
float const events_possible = get_possible();
float const probability = events_expected / events_possible;
cloudi_return(api, command, name, "", 0,
&probability, sizeof(float),
timeout, trans_id, pid, pid_size);
}
Python publisher/subscriber example:
def process_signal(self, command, name, requestInfo, request,
timeout, priority, transId, pid):
# publish to the listener
self.__api.mcast_async("/external/system23/listener", request)
return run_transform(result)
Ruby remote procedure call (RPC) example:
def current_status(command, name, requestInfo, request,
timeout, priority, transId, pid)
# request the switch status
switch_status = @api.sync_send("/network/switch11/status", "requests")
return determine_status(switch_status)
end
All CloudI service messages can exchange unstructured data while pursuing RESTful development practices within a Service Oriented Architecture (SOA). CloudI service requests are load balanced with service based fault-tolerance. CloudI scales linearly for distributing realtime service load.