jarirajari / dpcm

Domain Process Control Manager

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

NOTE! THIS PROJECT IS HIGHLY EXPERIMENTAL, AND IT IS NOT 
SUITABLE FOR PRODUCTION DEPLOYMENTS. USE AT YOUR OWN RISK.

The project consists of three parts:

* dpcm
* dpcm-api
* dpcm-wildfly

1) dpcm
   DPCM is a heartbeat mechanism for independent Java 
   processes that form a loosely coupled cluster. Cluster 
   coupling is done with JGroups (Java) library. It is a 
   mature toolkit for reliable broadcast communication, 
   and it can be configured in various ways.

   The hearbeat mechanism makes sure that each local process 
   is running properly: to do this dpcm uses two pieces of 
   information. First and most important thing is to check 
   whether the JVM process exists or not. Secondly, when 
   possible, a separate plugin can be used to make more 
   sophisticated queries: you can create your own plugin. 
   If a process dies it will be recreated by the hearbeat. 
   The creation of JVM processes can use configuration files 
   and arguments. At minimum, only multiple dpcm processes 
   are running with default configuration and inner processes. 

   The purpose of clustering is to guarantee that individual 
   processes meet the following condition: eventually there 
   can be only one domain controller (DC) in the cluster and 
   the other processes must be normal process controllers (PC). 
   Dpcm mainstains this condition by restarting proceses and 
   propagating process statuses within the cluster members 
   (i.e. group). To be able to execute restart operation 
   a group must have at least two running dpcm instances.

   Currently, DPCM is missing capability of handling cluster 
   partitions and merges. Also, we could enable scaling (i.e. 
   restarting new process instances) based on target: either 
   performance or robustness.

2) dpcm-api
   The API that the DPCM defines the service that the dpcm 
   uses to connect to the client process (if implemented).

3) dpcm-wildfly
   This is an example project showing how to use DPCM with 
   Wildfly Application Server (AS). Wildfly-client implements 
   the dpcm-api interface that is used by the DPCM. Ideally, 
   dpcm maintains one active Domain Coordinator (DC) in a 
   domain and makes sure that no manual intervention is 
   required when current DC crashes assuming there are enough 
   redundancy. Note that if a DC is down in a Wildfly domain 
   no update operations, like application deployments etc., 
   can be performed for domain. In summary, dpcm starts a Wildfly 
   process on a host with given configuration, and then checks 
   if it runs properly and that there is one DC in the cluster.
   If needed dpcm will restart processes to meet this condition. 
   Dpcm queries to Wildfly AS can be scripted with Groovy, but 
   only Java implementation is strictly required.

Run 'mvn clean install' to get started...

This software is licensed under GPLv3.

Copyright (C) 2014 Jari Kuusisto

About

Domain Process Control Manager

License:GNU General Public License v3.0


Languages

Language:Java 98.6%Language:JavaScript 1.4%