Hello Ice Guys!
I was working on the server tonight, and I got the idea that I may be coupling my objects too much for what I want to achieve. I decided to pause and write this post.
Because of the dynamics of the App Store, I have no clue how many clients we will be required to support. One day it could be five clients and three hours later 1k. Obviously, we need to be prepared to deploy more instances transparently if/when the need arises. I'll layout what we need to achieve:
Clients are presented with a list of game rooms (IceStorm topics) when they obtain a Glacier2 session. Now, I guess it's easy to load balance the game rooms since I can just query IceGrid for the least used IceStorm instance and create new rooms there.
Also, I'm sure IceGrid will allow me to deploy multiple instances of Glacier2 and choose a free one for the client. I haven't looked into that just yet though.
However, it is unclear how I load balance the RoomManager in the middle. The RoomManager maintains a list of rooms, subscribes and unsubscribes clients from its respective topic, hands out room IDs to clients, etc. It also acts as a facade (Benoit) handing out RoomParticipantPrxs to clients upon joining a room.
One solution is to simply create multiple instances of the RoomManager, and when a client connects, choose the least loaded RoomManager; however, this is unacceptable since it would partition clients. Clients would only see the rooms on their RoomManager instance. Do you see what I'm getting at?
As always, any advice is greatly appreciated! Also, let me know if something is unclear. After all it's 2AM!
Thanks a lot,
Pete

) handing out RoomParticipantPrxs to clients upon joining a room.
Reply With Quote
