[omniORB] Load balancing (was Re: +AFs-omniORB+AF0- NameServer capacity)

Michael Sommerville msommer@ptc.com
Fri, 23 Feb 2001 10:29:52 -0000


Joel,

I don't know if you'll find this useful but this was posted on comp.object.corba
a few days ago, and I thought it was interesting.  The method they have 
implemented is a bit more involved than the round robin load-blancing you
mention, but the source is apparently available within the TAO distribution.  
I'm not sure how much effort this would be to implement on top of OmniORB.

Cheers,

Michael

+ACI-Douglas C. Schmidt+ACI- +ADw-schmidt+AEA-ace.cs.wustl.edu+AD4- schreef in bericht
news:96j1mt+ACQ-p7+AEA-ace.cs.wustl.edu...
+AD4- Hi Folks,
+AD4-
+AD4- +AD4APg- If its with the POA, there is ( recently published ) an excellent
+AD4- +AD4APg- article by Doug Schmidt et al on POA based load balancing...
+AD4-
+AD4- Speaking of which, you can download this article from
+AD4-
+AD4- http://www.cs.wustl.edu/+AH4-schmidt/PDF/load+AF8-balancing.pdf
+AD4-
+AD4- The implementation described in this paper is available in TAO, which
+AD4- you can download from
+AD4-
+AD4- http://www.cs.wustl.edu/+AH4-schmidt/TAO.html
+AD4-
+AD4- Take care,
+AD4-
+AD4-         Doug
+AD4- --
+AD4- Dr. Douglas C. Schmidt, Associate Professor  TEL: (949) 824-1901
+AD4- Dept of Electrical +ACY- Computer Engineering    FAX: (949) 824-2321


----- Original Message ----- 
From: +ACI-Joel Schuster+ACI- +ADw-jmschust+AEA-cctus.com+AD4-
To: +ADw-omniorb-list+AEA-uk.research.att.com+AD4-
Sent: Wednesday, February 21, 2001 6:19 PM
Subject: Re: +AFs-omniORB+AF0- NameServer capacity


+AD4- Along these same lines...
+AD4- Is there any feature within OmniOrb that could load balance
+AD4- between multiple servers? Or would I have to modify the 
+AD4- NameServer to handle even simple load balancing like
+AD4- a round-robin?
+AD4- 
+AD4- Joel
+AD4- 
+AD4- 
+AD4- +ACI-Gary D. Duzan+ACI- wrote:
+AD4- +AD4- 
+AD4- +AD4- In Message +ADw-3A9389CB.6F5626BF+AEA-anemosky.com+AD4- ,
+AD4- +AD4-    Pletyak Attila +ADw-attila.pletyak+AEA-anemosky.com+AD4- wrote:
+AD4- +AD4- 
+AD4- +AD4- +AD0APg-Thank you. Let me ask a question regarding this, as I feel now that I am
+AD4- +AD4- +AD0APg-not that professional in CORBA.
+AD4- +AD4- 
+AD4- +AD4-    That's ok. I haven't actually done this sort of thing myself,
+AD4- +AD4- so you should probably look for other opinions on the matter
+AD4- +AD4- before doing a final design.
+AD4- +AD4- 
+AD4- +AD4- +AD0APg-You are right, we will have CGIs running on different web servers. Is it
+AD4- +AD4- +AD0APg-enough, then, to have an object on every web server which simply routes
+AD4- +AD4- +AD0APg-the asks to the correct object in the background, and gives back the
+AD4- +AD4- +AD0APg-answer of that object? Or something more sophisticated is needed on this
+AD4- +AD4- +AD0APg-proxy method?
+AD4- +AD4- 
+AD4- +AD4-    That's the sort of thing I was thinking of, yes. Keep in mind
+AD4- +AD4- that every time the CGI starts it is going to open a TCP connection
+AD4- +AD4- to the server(s) to handle any CORBA calls. On the server side, it
+AD4- +AD4- will have to start a new thread for the connection, dispatch the
+AD4- +AD4- call, return the result, and wait for new calls on the connection.
+AD4- +AD4- In a CGI environment, this is likely not to happen, so the connection
+AD4- +AD4- will eventually be closed and the thread reclaimed. If the hit rate
+AD4- +AD4- is high enough, this excess connection (and thread) management
+AD4- +AD4- could bog down the server. (Of course, if the rate is low then
+AD4- +AD4- there may not be an immediate problem, but if there is even a chance
+AD4- +AD4- of growth then it is a good idea to design for scalability if you
+AD4- +AD4- can.) If the CGI is talking to a persistent proxy on its own web
+AD4- +AD4- server, the connection management load is spread across them and
+AD4- +AD4- each proxy can maintain a small number of relatively persistent
+AD4- +AD4- connections to the main server(s). This can also help deal with
+AD4- +AD4- thread and connection limits since you are only dealing with a
+AD4- +AD4- fraction of the calls at each proxy.
+AD4- +AD4-    That said, you should do some performance testing on your own
+AD4- +AD4- to see how well your system does under load from multiple busy web
+AD4- +AD4- servers.  What I've said is mostly educated guesswork+ADs- it is always
+AD4- +AD4- better to have real observations of a real system.  A simulation
+AD4- +AD4- based on Python/omniORBpy could give you a rough idea and shouldn't
+AD4- +AD4- be too difficult or time consuming to build. Try running with and
+AD4- +AD4- without the proxy and see how it does at different hit rates.
+AD4- +AD4- 
+AD4- +AD4- +AD0APg-I saw some proxy objects generated in the stubs of omniORB but this
+AD4- +AD4- +AD0APg-cannot be a compass for me as Duncan mentioned previosly.
+AD4- +AD4- 
+AD4- +AD4-    No, that is the omniORB internal implementation which is unrelated.
+AD4- +AD4- 
+AD4- +AD4-                                         Gary Duzan
+AD4- +AD4-                                         Verizon Laboratories