Re: optimizing link between client and server



Amitabh A. Nene wrote:

I wanted to know how does one go about optimizing the link between a CORBA
client and server using ORBit / any other ORB in general. In other words,
how does one configure the link depending on whether the client and server
are in the same address space, different address spaces on the same
physical machine, or on separate physical machines ?

Hmmm. I'm a little unsure of what you're asking. Your question appears to be "How do I select which transport an ORB is using (SHM,TCP/IP,Unix Sockets,Sun RPC,etc) for any ORB?" The answer is "That depends on the ORB." ORBit specifically has a configuration file /etc/orbitrc which switches between unix sockets and tcp/ip as these are the transports it provides.". Many ORBs automatically make the decision to use dync-call/no marshalling whenever they detect that they are both the client and the server for an IOR. I *think* ORBit is one of these.

It also occurs to me that your real issue may be a performance one, in which case I can only say "Minimise round trips". The further the distance between your client and server, the bigger the latency penalty you will pay. Calling a remote object method fetchNextFoo() repeatedly to fetch a thousand records will perform fine over SHM where latency is <1ms, but will die screaming over the internet even at a latency of only 100ms (giving a 10 second response time for 1000 records in latency alone) and >500ms latencies are not uncommon. Far better to implement a method fetchAllFoo() which is called once.

Also, in the current ORBit implementation, do these paths translate to
dyn-call/no-marshaling, shared-mem, and RPC respectively, if at all ?

I don't think ORBit does SHM yet. I know it does dyn-call, unix sockets, tcp/ip4 and tcp/ip6 (same ram address space, same machine, seperated by network).

Hope this helps.





[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]