Ice concurrency load handling...
Hi all,
I'm sorry if this post sounds basic, but I'm a newbie so bear with me please.
I've currently done some C++ server and client side tests with ICE and it works great, also I'm currently building an ICE java server and I'll start some tests as well. The thing is that, I've developed some servers before, and for large load handling we've had to use some connection concurrency patterns like one-thread-per-connection, async I/O, reactor pattern, proactor pattern, etc. But, how do I handle large concurrent calls from Ice?
My app only serves atomic operations, that means, it doesn't need any special thread sync, shared thread resources or complex stuff like that.
I've searched the forum and I've read that Ice uses thread pools, but I haven't found any details on these two points:
1 .- What could be the actual request capacity of an Ice Server? I know this is relative to hardware, OS, etc, but when programming a server, do I need to handle my own thread pool, async i/o, etc?
2 .- There is so much documentation about Ice that now my head hurts, I haven't found actual practical ways of handling large user loads.
Do I need to build my own load handling strategy? does Ice automatically handles a thread pool so I don't have to worry about load handling?
How do I actually build, let's say, an Ice java server that could handle lots of user requests? For putting a more concrete example, on Java you have containers that handle the loads, requests, threads, etc. for you, like glassfish for EJBs. Is there a way on Ice that I only develop actual business logic and let Ice handle all the low level thread pooling, connection handling, etc. for me?
I'm starting to check out IceBox and IceGrid, but there is so much stuff on the documentation that I'm confused on what to actually use.
Thanks!
Raul Guerrero
Software developer
Jimi.mx