You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@camel.apache.org by Charles Moulliard <cm...@gmail.com> on 2010/02/25 17:28:33 UTC

[Discuss] Apache Camel - Clustering/Loadbalancing solutions (inventory)

Hi,

If we investigate what Camel 2.x project proposes in terms of
clustering/loabalancing solution, we can categorize the solutions like this
:

1. Loadbalancing
loadbalance() : http://camel.apache.org/load-balancer.html

2. Clustering

2.1. Same JVM & CamelContext
seda:// : http://camel.apache.org/seda.html or direct://
and Threads() or threadPool()

2.2 Different JVM & CamelContext
vm:// : http://camel.apache.org/vm.html

2.3 NMR
nmr:// : http://camel.apache.org/nmr.html

3. Cloudcomputing

3.1 camel-terracotta
Extends the SEDA component

3.2 Cassandra
It could be interesting to create a Cassandra endpoint to allow to consume
info/camel messages from Cassandra DB (NOSQL database) or to push there
camel message (using id + binary stream) ? What do you think ?

Is this inventory complete and exhaustif ?

Kind regards,

Charles Moulliard
Senior Enterprise Architect
Apache Camel Committer

*****************************
blog : http://cmoulliard.blogspot.com
twitter : http://twitter.com/cmoulliard
Linkedlin : http://www.linkedin.com/in/charlesmoulliard

Apache Camel Group :
http://www.linkedin.com/groups?home=&gid=2447439&trk=anet_ug_hm

Re: [Discuss] Apache Camel - Clustering/Loadbalancing solutions (inventory)

Posted by Charles Moulliard <cm...@gmail.com>.
I have created a draft on wiki :
http://cwiki.apache.org/confluence/display/CAMEL/Clustering+and+loadbalancing

Charles Moulliard
Senior Enterprise Architect
Apache Camel Committer

*****************************
blog : http://cmoulliard.blogspot.com
twitter : http://twitter.com/cmoulliard
Linkedlin : http://www.linkedin.com/in/charlesmoulliard

Apache Camel Group :
http://www.linkedin.com/groups?home=&gid=2447439&trk=anet_ug_hm



On Fri, Feb 26, 2010 at 9:57 AM, Christian Müller
<ch...@gmail.com> wrote:
> I would like this.
>
> Christian
>

Re: [Discuss] Apache Camel - Clustering/Loadbalancing solutions (inventory)

Posted by Christian Müller <ch...@gmail.com>.
I would like this.

Christian

Re: [Discuss] Apache Camel - Clustering/Loadbalancing solutions (inventory)

Posted by Willem Jiang <wi...@gmail.com>.
Charles Moulliard wrote:
> On the wiki page of camel concerning vm, they suggests that vml:// can
> be used across different JVM
> 
> Here is the text :
> 
> "This component differs from the SEDA component in that VM supports
> communication across CamelContext instances, so you can use this
> mechanism to communicate across web applications, provided that the
> camel-core.jar is on the system/boot classpath.
> 
> This component is an extension to the SEDA component."

It just across the web applications, and the application container still 
a single JVM.
BTW, SEDA component can't be used across the JVMs.
> 
> Kind regards,
> 
> Charles Moulliard
> Senior Enterprise Architect
> Apache Camel Committer
> 
> *****************************
> blog : http://cmoulliard.blogspot.com
> twitter : http://twitter.com/cmoulliard
> Linkedlin : http://www.linkedin.com/in/charlesmoulliard
> 
> Apache Camel Group :
> http://www.linkedin.com/groups?home=&gid=2447439&trk=anet_ug_hm
> 
> 
> 
> On Fri, Feb 26, 2010 at 1:28 PM, Willem Jiang <wi...@gmail.com> wrote:
>> Hi,
>>
>> Charles Moulliard wrote:
>>> Based on James feedback, I have adapted the categories. I will create
>>> a wiki page on camel wiki to show the different options
>>>
>>>  1. Loadbalancing
>>>     loadbalance() : http://camel.apache.org/load-balancer.html
>>>
>>>  2. Clustering
>>>
>>>  2.1. Same JVM & CamelContext
>>>
>>>  seda:// : http://camel.apache.org/seda.html or direct://
>>> and threads()
>>> jms:// or activemq:// and threads()
>>>
>>>  2.2 Different JVM & CamelContext
>>>
>>>  2.2.1. Suitable for solutions running in standalone mode or deployed
>>> in Web Application Server (different WAR/EAR)
>>>  vm:// : http://camel.apache.org/vm.html or jms:// - activemq://
>>>
>> After checking the wiki page and vm component code, I'm sure vm component
>> can't be used across the JVM.
>>
>> I think we need to change this part.
>>
>>
>>>  2.2.2. Between different instances of OSGI servers (SMX4)
>>>  nmr:// : http://camel.apache.org/nmr.html or jms:// - activemq://
>>>
>>>  2.2.3. If message persistence is required
>>> jms:// - activemq://
>>>
>>> 4. Cloudcomputing
>>>
>>> 4.1 Cassandra
>>>  It could be interesting to create a Cassandra endpoint to allow to
>>> consume
>>>  info/camel messages from Cassandra DB (NOSQL database) or to push there
>>>  camel message (using id + binary stream). It might also make an
>>> interesting
>>>  aggregator implementation since its also distributed & can support
>>> multi-master
>>>
>>> 4.2 camel-terracotta
>>>  Extends the SEDA component
>>>
>>> Kind regards,
>>>
>>> Charles Moulliard
>>> Senior Enterprise Architect
>>> Apache Camel Committer
>>>
>>> *****************************
>>> blog : http://cmoulliard.blogspot.com
>>> twitter : http://twitter.com/cmoulliard
>>> Linkedlin : http://www.linkedin.com/in/charlesmoulliard
>>>
>>> Apache Camel Group :
>>> http://www.linkedin.com/groups?home=&gid=2447439&trk=anet_ug_hm
>>>
> 


Re: [Discuss] Apache Camel - Clustering/Loadbalancing solutions (inventory)

Posted by Charles Moulliard <cm...@gmail.com>.
Ok I will correct the page.

Charles Moulliard
Senior Enterprise Architect
Apache Camel Committer

*****************************
blog : http://cmoulliard.blogspot.com
twitter : http://twitter.com/cmoulliard
Linkedlin : http://www.linkedin.com/in/charlesmoulliard

Apache Camel Group :
http://www.linkedin.com/groups?home=&gid=2447439&trk=anet_ug_hm



On Fri, Feb 26, 2010 at 1:50 PM, James Strachan
<ja...@gmail.com> wrote:
> On 26 February 2010 12:45, Charles Moulliard <cm...@gmail.com> wrote:
>> On the wiki page of camel concerning vm, they suggests that vml:// can
>> be used across different JVM
>>
>> Here is the text :
>>
>> "This component differs from the SEDA component in that VM supports
>> communication across CamelContext instances, so you can use this
>> mechanism to communicate across web applications, provided that the
>> camel-core.jar is on the system/boot classpath.
>
> The intent is between web applications in the same JVM. It can only
> communicate between CamelContexts within Camel's classloader within a
> single JVM
>
> --
> James
> -------
> http://macstrac.blogspot.com/
>
> Open Source Integration
> http://fusesource.com/
>

Re: [Discuss] Apache Camel - Clustering/Loadbalancing solutions (inventory)

Posted by James Strachan <ja...@gmail.com>.
On 26 February 2010 12:45, Charles Moulliard <cm...@gmail.com> wrote:
> On the wiki page of camel concerning vm, they suggests that vml:// can
> be used across different JVM
>
> Here is the text :
>
> "This component differs from the SEDA component in that VM supports
> communication across CamelContext instances, so you can use this
> mechanism to communicate across web applications, provided that the
> camel-core.jar is on the system/boot classpath.

The intent is between web applications in the same JVM. It can only
communicate between CamelContexts within Camel's classloader within a
single JVM

-- 
James
-------
http://macstrac.blogspot.com/

Open Source Integration
http://fusesource.com/

Re: [Discuss] Apache Camel - Clustering/Loadbalancing solutions (inventory)

Posted by Charles Moulliard <cm...@gmail.com>.
On the wiki page of camel concerning vm, they suggests that vml:// can
be used across different JVM

Here is the text :

"This component differs from the SEDA component in that VM supports
communication across CamelContext instances, so you can use this
mechanism to communicate across web applications, provided that the
camel-core.jar is on the system/boot classpath.

This component is an extension to the SEDA component."

Kind regards,

Charles Moulliard
Senior Enterprise Architect
Apache Camel Committer

*****************************
blog : http://cmoulliard.blogspot.com
twitter : http://twitter.com/cmoulliard
Linkedlin : http://www.linkedin.com/in/charlesmoulliard

Apache Camel Group :
http://www.linkedin.com/groups?home=&gid=2447439&trk=anet_ug_hm



On Fri, Feb 26, 2010 at 1:28 PM, Willem Jiang <wi...@gmail.com> wrote:
> Hi,
>
> Charles Moulliard wrote:
>>
>> Based on James feedback, I have adapted the categories. I will create
>> a wiki page on camel wiki to show the different options
>>
>>  1. Loadbalancing
>>     loadbalance() : http://camel.apache.org/load-balancer.html
>>
>>  2. Clustering
>>
>>  2.1. Same JVM & CamelContext
>>
>>  seda:// : http://camel.apache.org/seda.html or direct://
>> and threads()
>> jms:// or activemq:// and threads()
>>
>>  2.2 Different JVM & CamelContext
>>
>>  2.2.1. Suitable for solutions running in standalone mode or deployed
>> in Web Application Server (different WAR/EAR)
>>  vm:// : http://camel.apache.org/vm.html or jms:// - activemq://
>>
>
> After checking the wiki page and vm component code, I'm sure vm component
> can't be used across the JVM.
>
> I think we need to change this part.
>
>
>>  2.2.2. Between different instances of OSGI servers (SMX4)
>>  nmr:// : http://camel.apache.org/nmr.html or jms:// - activemq://
>>
>>  2.2.3. If message persistence is required
>> jms:// - activemq://
>>
>> 4. Cloudcomputing
>>
>> 4.1 Cassandra
>>  It could be interesting to create a Cassandra endpoint to allow to
>> consume
>>  info/camel messages from Cassandra DB (NOSQL database) or to push there
>>  camel message (using id + binary stream). It might also make an
>> interesting
>>  aggregator implementation since its also distributed & can support
>> multi-master
>>
>> 4.2 camel-terracotta
>>  Extends the SEDA component
>>
>> Kind regards,
>>
>> Charles Moulliard
>> Senior Enterprise Architect
>> Apache Camel Committer
>>
>> *****************************
>> blog : http://cmoulliard.blogspot.com
>> twitter : http://twitter.com/cmoulliard
>> Linkedlin : http://www.linkedin.com/in/charlesmoulliard
>>
>> Apache Camel Group :
>> http://www.linkedin.com/groups?home=&gid=2447439&trk=anet_ug_hm
>>
>

Re: [Discuss] Apache Camel - Clustering/Loadbalancing solutions (inventory)

Posted by Willem Jiang <wi...@gmail.com>.
Hi,

Charles Moulliard wrote:
> Based on James feedback, I have adapted the categories. I will create
> a wiki page on camel wiki to show the different options
> 
>  1. Loadbalancing
>      loadbalance() : http://camel.apache.org/load-balancer.html
> 
>  2. Clustering
> 
>  2.1. Same JVM & CamelContext
> 
>  seda:// : http://camel.apache.org/seda.html or direct://
> and threads()
> jms:// or activemq:// and threads()
> 
>  2.2 Different JVM & CamelContext
> 
>  2.2.1. Suitable for solutions running in standalone mode or deployed
> in Web Application Server (different WAR/EAR)
>  vm:// : http://camel.apache.org/vm.html or jms:// - activemq://
> 

After checking the wiki page and vm component code, I'm sure vm 
component can't be used across the JVM.

I think we need to change this part.


>  2.2.2. Between different instances of OSGI servers (SMX4)
>  nmr:// : http://camel.apache.org/nmr.html or jms:// - activemq://
> 
>  2.2.3. If message persistence is required
> jms:// - activemq://
> 
> 4. Cloudcomputing
> 
> 4.1 Cassandra
>  It could be interesting to create a Cassandra endpoint to allow to consume
>  info/camel messages from Cassandra DB (NOSQL database) or to push there
>  camel message (using id + binary stream). It might also make an interesting
>  aggregator implementation since its also distributed & can support multi-master
> 
> 4.2 camel-terracotta
>  Extends the SEDA component
> 
> Kind regards,
> 
> Charles Moulliard
> Senior Enterprise Architect
> Apache Camel Committer
> 
> *****************************
> blog : http://cmoulliard.blogspot.com
> twitter : http://twitter.com/cmoulliard
> Linkedlin : http://www.linkedin.com/in/charlesmoulliard
> 
> Apache Camel Group :
> http://www.linkedin.com/groups?home=&gid=2447439&trk=anet_ug_hm
> 

Re: [Discuss] Apache Camel - Clustering/Loadbalancing solutions (inventory)

Posted by Charles Moulliard <cm...@gmail.com>.
Based on James feedback, I have adapted the categories. I will create
a wiki page on camel wiki to show the different options

 1. Loadbalancing
     loadbalance() : http://camel.apache.org/load-balancer.html

 2. Clustering

 2.1. Same JVM & CamelContext

 seda:// : http://camel.apache.org/seda.html or direct://
and threads()
jms:// or activemq:// and threads()

 2.2 Different JVM & CamelContext

 2.2.1. Suitable for solutions running in standalone mode or deployed
in Web Application Server (different WAR/EAR)
 vm:// : http://camel.apache.org/vm.html or jms:// - activemq://

 2.2.2. Between different instances of OSGI servers (SMX4)
 nmr:// : http://camel.apache.org/nmr.html or jms:// - activemq://

 2.2.3. If message persistence is required
jms:// - activemq://

4. Cloudcomputing

4.1 Cassandra
 It could be interesting to create a Cassandra endpoint to allow to consume
 info/camel messages from Cassandra DB (NOSQL database) or to push there
 camel message (using id + binary stream). It might also make an interesting
 aggregator implementation since its also distributed & can support multi-master

4.2 camel-terracotta
 Extends the SEDA component

Kind regards,

Charles Moulliard
Senior Enterprise Architect
Apache Camel Committer

*****************************
blog : http://cmoulliard.blogspot.com
twitter : http://twitter.com/cmoulliard
Linkedlin : http://www.linkedin.com/in/charlesmoulliard

Apache Camel Group :
http://www.linkedin.com/groups?home=&gid=2447439&trk=anet_ug_hm



On Thu, Feb 25, 2010 at 6:02 PM, James Strachan
<ja...@gmail.com> wrote:
> On 25 February 2010 16:28, Charles Moulliard <cm...@gmail.com> wrote:
>> Hi,
>>
>> If we investigate what Camel 2.x project proposes in terms of
>> clustering/loabalancing solution, we can categorize the solutions like this
>> :
>>
>> 1. Loadbalancing
>> loadbalance() : http://camel.apache.org/load-balancer.html
>>
>> 2. Clustering
>>
>> 2.1. Same JVM & CamelContext
>> seda:// : http://camel.apache.org/seda.html or direct://
>> and Threads() or threadPool()
>>
>> 2.2 Different JVM & CamelContext
>> vm:// : http://camel.apache.org/vm.html
>>
>> 2.3 NMR
>> nmr:// : http://camel.apache.org/nmr.html
>
> JMS and activemq is well worth mentioning here as the default approach
> for multi-JVM clustering with load balancing (and if JMSXGroupID is
> used, auto-partitioning too).
>
> A queue is basically a clustered, fault tolerant, location
> transparent, failover capable, transactional version of "vm:". By
> itself the nmr is really just the same kind of thing as vm:// - as its
> typical use is to be a logical name inside a single JVM (albeit using
> WSDL exchange pattern naming conventions rather than just a string in
> vm:// - and ServiceMix tends to ensure that there is exactly one NMR
> in the JVM whereas its quite easy to have many camel class loaders and
> so vm:// spaces if you're not careful.
>
>
>> 3. Cloudcomputing
>>
>> 3.1 camel-terracotta
>> Extends the SEDA component
>>
>> 3.2 Cassandra
>> It could be interesting to create a Cassandra endpoint to allow to consume
>> info/camel messages from Cassandra DB (NOSQL database) or to push there
>> camel message (using id + binary stream) ? What do you think ?
>>
>> Is this inventory complete and exhaustif ?
>
> I'm liking the cassandra idea; that could be pretty interesting. It
> might also make an interesting aggregator implementation since its
> also distributed & can support multi-master etc
>
> --
> James
> -------
> http://macstrac.blogspot.com/
>
> Open Source Integration
> http://fusesource.com/
>

Re: [Discuss] Apache Camel - Clustering/Loadbalancing solutions (inventory)

Posted by James Strachan <ja...@gmail.com>.
On 25 February 2010 16:28, Charles Moulliard <cm...@gmail.com> wrote:
> Hi,
>
> If we investigate what Camel 2.x project proposes in terms of
> clustering/loabalancing solution, we can categorize the solutions like this
> :
>
> 1. Loadbalancing
> loadbalance() : http://camel.apache.org/load-balancer.html
>
> 2. Clustering
>
> 2.1. Same JVM & CamelContext
> seda:// : http://camel.apache.org/seda.html or direct://
> and Threads() or threadPool()
>
> 2.2 Different JVM & CamelContext
> vm:// : http://camel.apache.org/vm.html
>
> 2.3 NMR
> nmr:// : http://camel.apache.org/nmr.html

JMS and activemq is well worth mentioning here as the default approach
for multi-JVM clustering with load balancing (and if JMSXGroupID is
used, auto-partitioning too).

A queue is basically a clustered, fault tolerant, location
transparent, failover capable, transactional version of "vm:". By
itself the nmr is really just the same kind of thing as vm:// - as its
typical use is to be a logical name inside a single JVM (albeit using
WSDL exchange pattern naming conventions rather than just a string in
vm:// - and ServiceMix tends to ensure that there is exactly one NMR
in the JVM whereas its quite easy to have many camel class loaders and
so vm:// spaces if you're not careful.


> 3. Cloudcomputing
>
> 3.1 camel-terracotta
> Extends the SEDA component
>
> 3.2 Cassandra
> It could be interesting to create a Cassandra endpoint to allow to consume
> info/camel messages from Cassandra DB (NOSQL database) or to push there
> camel message (using id + binary stream) ? What do you think ?
>
> Is this inventory complete and exhaustif ?

I'm liking the cassandra idea; that could be pretty interesting. It
might also make an interesting aggregator implementation since its
also distributed & can support multi-master etc

-- 
James
-------
http://macstrac.blogspot.com/

Open Source Integration
http://fusesource.com/