Link to home
Start Free TrialLog in
Avatar of matchz
matchz

asked on

Java Application Load Balancing & HA

I have written a network filter application which will filter some packets and forward to another host. It is quite similar to a HTTP proxy server.

The application is running very smooth. However, i need to do some changes so that i can be run in load balancing and high availability.

In this case, i think there are at least 2 JVM will be created. How can i share the information in my program, for example, i have used a Hasttable to store some rule of the filter which are updated dynamically according to the incoming packet.

What can I do and how can i do that?

Thank you very much.
ASKER CERTIFIED SOLUTION
Avatar of Ovi
Ovi

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of doronb
doronb

I suppose you can use RMI in order to connect your multiple JVM's. A good idea would be to check Sun's RMI tutorials: http://java.sun.com/docs/books/tutorial/rmi/index.html

Hope this helps,
Doron
Avatar of matchz

ASKER

Actually, my idea is a little bit different to RMI. RMI is about a JVM to invoke methods in another JVM. However, I would like the end-users to run an application which supports clustering. The performance of the applications can be increased by the number of hardwares.
What about advanced app specific multicasting?
Avatar of matchz

ASKER

Hi Ovi, what is advanced app. specific multicasting?
I have no idea about it, would you please feel free to give more information about that?
What I mean was to implement a specific type of multicasting protocol based on your application requirements. I refer only to how you send packages to others, what they means, how they must react on a specific multicast command and stuff like that.
RMI is about distributed computing in Java. JVM's expose objects that render services, it doesn't matter where the JVM is running on. RMI simply hides the communication layer that you would otherwise have to implement yourself using Sockets.

Multicasting is the ability to join a group of processes that connect with one-another through the group's multicast IP. (Clustering with Multicasting would mean that all the processes join a group IP (e.g. 239.25.25.25:6789) and whenever any process broadcasts to this IP, all group memebers can get the message)

Hope this helps,
Doron
Avatar of matchz

ASKER

I will try to work out on this idea.
Thank you very much.
Me too.