Archived

This forum has been archived. Please start a new discussion on GitHub.

common achitecture question

Hi, I have a achitecture question.
Here is my system:

Client <---->| |<
>UserManager
Client <---->|<-- Session Server -->|
Client <---->| |<
>Messenger
|
Client <---->| |<
>Files
Client <---->|<-- Session Server -->|
Client <---->| |<
>Others

Because Client is based on embedded system and has pool support for C++, I can't use Ice features here.
So I designed to use session server to chat with clients, and implement load balance here.
And I want to enhance the server side by Ice.

I have read the post: http://www.zeroc.com/documents/wishposter.pdf.
But I cann't get enough details from it.

Consider the case:
When one Client send Message or file to another client, which could be logined in another session server, how to?
Should I hire a IceStorm service(or someelse behave like that), and give every client a topic, and make the client the topic's only subscriber, and make the sender a publisher?
But this will consume 2 times network bandwith than needed, and IceStorm services itself must have load balance, that is, if I have 10 session server, maybe I will need 10 or more IceStorm service. And more, a extern parts is needed to find topis globally.

Or could I do like this? Hire a IcePack service(or someelse behave like that), and design an object for every client on the session server. Then register the object in the IcePack service. When to send a message or file, the sender object first query the target object from IcePack service, then send directly to the target object. I am not sure whether it is possible to do like that.

Sorry to interrupt you for achitecture question, because I cann't find else could help.
I appreciate if you could point out where or how could I learn system design, and given more success stories about how to use Ice to achieve some goal will be better.

Comments

  • blank is unvisible, so use ========= instead.

    Client <-->|==============|<
    >UserManager
    Client <-->|<-- Session Server -->|
    Client <-->|==============|<
    >Messenger
    ======================|
    Client <-->|==============|<
    >Files
    Client <-->|<-- Session Server -->|
    Client <-->|==============|<
    >Others