users@shoal.java.net

Re: [Shoal-Users] Shoal Questions

From: Mohamed Abdelaziz <Mohamed.Abdelaziz_at_Sun.COM>
Date: Mon, 31 Mar 2008 09:52:25 -0700

Shreedhar Ganapathy wrote:
> Hi Mike
> Welcome! And nice to hear about your using Shoal.
>
> Mike Wannamaker wrote:
>>
>> *Hi,*
>>
>> * *
>>
>> *I was wondering a few things about shoal. I am researching whether
>> we can put shoal into our system as the clustering framework. We
>> currently have our own api for cluster messages and we used JGROUPs
>> for communication layer. *
>>
>> * *
>>
>> *1) **In a multi-homed machine, more than 1 nic, can I specify the
>> main IP address I want a specific instance to communicate on?*
>>
> Yes. This was a recent addition. Please look in
> ServiceProviderConfigurationKeys.java
> <https://shoal.dev.java.net/source/browse/shoal/gms/src/java/com/sun/enterprise/ee/cms/core/ServiceProviderConfigurationKeys.java?rev=1.7&view=markup>
> : the key to use is BIND_INTERFACE_ADDRESS, and the demo
> ApplicationServer.java
> <https://shoal.dev.java.net/source/browse/shoal/gms/tests/com/sun/enterprise/ee/cms/tests/ApplicationServer.java?rev=1.12&view=markup>
> to see how to pass through the value for this to Shoal. You will need
> to pick up the latest bits from downloads page
> <https://shoal.dev.java.net/servlets/ProjectDocumentList>.
>>
>> **
>>
>> *2) **Is there any performance data for shoal? IE: What the message
>> threshold is before you start saturating the network?*
>>
> We have not done that yet. But given that it uses Jxta under the
> covers which supports NIO on tcp channels, you should see very good
> peer to peer performance.
> We have been focusing on getting the membership ecosystem correct
> under different failure conditions and loads that consuming
> applications are under. If you have a performance test, it would be
> very helpful to know where we stand and where we can improve based on
> OS and machine config, JDK version and the size of message payloads.


Since the underlying transport utilizes NIO and a threadpool, data flow
is controlled by the availability of system and network resources. On
the receiving side data is not read off the socket channel until a
thread is available, therefore blocking the sending side.

>
>> **
>>
>> *3) **Is there a way to get the InetAddress of a machine through it’s
>> messages? IE: When I get a JoinedAndReady notification or a Failure
>> notification can I get the InetAddress of the machine joined or failed?*
>>
> We could expose that if that is of value to you. Could you please file
> an RFE in the Shoal Issue Tracker <https://shoal.dev.java.net/issues/>?
> The idea behind Shoal APIs though was to avoid the need for apps to
> know the underlying locational details of the members and use only
> logical names for apps consuming it. This frees the app developer from
> having to worry about locational or address change of members. It
> would help us to hear about your use case on this.


Can you expand on why the address of the node is needed? it is currently
described in the node's SystemAdvertisement accessible through the
ClusterManager. Shoal's ClusterManagement provider offers methodology
for simply node service addressing and connectivity, it may already
provide what you seek without the need worry about which nic and port to
connect to. It even deals with address mobility and fail over,
automatically, with little or no interruption to higher level
communication interface.


>
>> **
>>
>> *4) **Is there a way to set the time detection of a suspected failed
>> node? IE: Right now I think it takes around 20 seconds or so? Is this
>> configurable and at what cost?*
>>
> Yes, it is configurable. Look in ServiceProviderConfigurationKeys.java
> again and refer to the keys related to Failure. Also look in the demo
> ApplicationServer.java on how it be passed through a Properties object.

As for cost, one should lend some thought the network and system
capacity when selecting these timeout, so that the network or system is
not consumed with needless alive pongs.


Mohamed