Archived
This forum has been archived. Please start a new discussion on GitHub.
common achitecture question
in Help Center
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.
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.
0
Comments
-
blank is unvisible, so use ========= instead.
Client <-->|==============|<
>UserManager
Client <-->|<-- Session Server -->|
Client <-->|==============|<
>Messenger
======================|
Client <-->|==============|<
>Files
Client <-->|<-- Session Server -->|
Client <-->|==============|<
>Others0