Re: RMI Not Scalable?
Robert DiFalco <[email protected]>
| Newsgroups | gmane.comp.java.sun.rmi |
|---|---|
| Message-ID | <[email protected]> |
Not sure if I get the relationship. -----Original Message----- From: Oliver Chan [mailto:[email protected]] Sent: Tuesday, June 28, 2005 8:52 PM To: [email protected] Subject: Re: RMI Not Scalable? Hi, I'd like to know if there's any difference in the use of internal and external IP address of using firewall Thanks! On 6/26/05, Robert DiFalco <[email protected]> wrote: > More and more I am finding RMI to not be a scalable solution for me. > For example, I have a system that could have upwards of 5000 hosts. > While there is only one server in the classic sense, the other nodes > have callbacks so they are also technically RMI servers and clients. > > The communication between all these hosts and the "server" use a > pretty classic model to minimize concurrent socket usage on the > "server". There are async calls that just deposit runnable object into > the server's thread queue and return and sync calls that do the same > thing but also register a listener in a local thread waiting for a > callback. In this way, for long sync tasks the socket only needs to be > open long enough to deposit the runnable, and the "server" then > notifies the client who is blocking for response on a callback object. > > > C sends task (including callback) to S > -- the connection is done afterwards C waits in local thread > pool for the callback > -- requires no connection to S S completes task an sends > result to C using callback > -- a new connection just for the callback > > > The problem is that even with a few hundred C hosts, the "server" can > get an incredible number of threads for RMI Connection, > ConnectionExpiration, and RenewClean. > > So while I've designed my system to minimize the amount of long-lived > sockets (which is pretty important) I've created a new problem which > is a buttload of threads on the "server". > > So my questions are this. > > 1. Should I just stop using RMI? I could always use my > RMISSLSocketFactory directly and use Marshaled objects directly -- > bypassing RMI completely. > > 2. If I know that my C Remote Listener and "server" remote interfaces > are singleton instances that live as long as the application does, is > there a way to disable (or at least minimize) the creation of > RenewClean threads? > > 3. Why is there a different thread for each ConnectionExpiration on > the "server"? I would think there would be just one thread for ALL > endpoints and I would only spawn a thread when I need to do something > (like expiration), otherwise there would be just one expiration thread. > > My guess is that RMI is wired so tightly that there is no way for me > to change the way #2 or #3 work, so that brings me back to #1. > > R. > > ====================================================================== > ===== To unsubscribe, send email to [email protected] and include > in the body of the message "signoff RMI-USERS". For general help, > send email to [email protected] and include in the body of the > message "help". > > For a list of frequently asked RMI questions please refer to: > http://java.sun.com/j2se/1.3/docs/guide/rmi/faq.html > > To view past RMI-USERS postings, please see: > http://archives.java.sun.com/archives/rmi-users.html > ======================================================================== === To unsubscribe, send email to [email protected] and include in the body of the message "signoff RMI-USERS". For general help, send email to [email protected] and include in the body of the message "help". For a list of frequently asked RMI questions please refer to: http://java.sun.com/j2se/1.3/docs/guide/rmi/faq.html To view past RMI-USERS postings, please see: http://archives.java.sun.com/archives/rmi-users.html =========================================================================== To unsubscribe, send email to [email protected] and include in the body of the message "signoff RMI-USERS". For general help, send email to [email protected] and include in the body of the message "help". For a list of frequently asked RMI questions please refer to: http://java.sun.com/j2se/1.3/docs/guide/rmi/faq.html To view past RMI-USERS postings, please see: http://archives.java.sun.com/archives/rmi-users.html