Scalable IM Server Architecture
От: Аноним  
Дата: 07.08.07 07:17
Оценка:
Привет всем.

Не подскажите, есть ли "стандартные" схемы горизонтального масштабирования Instant Messaging (IM) серверов.
А именно интересует как делается взаимодействие между несколькими серверами. Т.е. напрмер когда есть два пользователя — один приконекчен к одному серверу, второй — к другому. Как в этом случае происходит обмен сообщениями между ними.
Re: Scalable IM Server Architecture
От: pvnic  
Дата: 07.08.07 07:56
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Привет всем.


А>Не подскажите, есть ли "стандартные" схемы горизонтального масштабирования Instant Messaging (IM) серверов.

А>А именно интересует как делается взаимодействие между несколькими серверами. Т.е. напрмер когда есть два пользователя — один приконекчен к одному серверу, второй — к другому. Как в этом случае происходит обмен сообщениями между ними.

как правило этим озадачивается сервер приложений, путем реализации соотв. службы сообщений.
а серверы просто вводятся в кластер.
Re: Scalable IM Server Architecture
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 07.08.07 08:06
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Привет всем.


А>Не подскажите, есть ли "стандартные" схемы горизонтального масштабирования Instant Messaging (IM) серверов.

А>А именно интересует как делается взаимодействие между несколькими серверами. Т.е. напрмер когда есть два пользователя — один приконекчен к одному серверу, второй — к другому. Как в этом случае происходит обмен сообщениями между ними.

Очень просто — если надо переслать сообщение другому пользователю — идёт межсерверная передача:)
Основной вопрос в том, как делить пользователей на сервера и как сообщать от одного другому, что какой-то пользователь подключён к какому-то конкретному серверу. Может быть реплицируемая всем общая база, может быть совокупность частных баз (по одной от сервера), может быть центральная база с запросом к ней по каждому чиху.
The God is real, unless declared integer.
Re: Scalable IM Server Architecture
От: sh_san Украина  
Дата: 07.08.07 15:29
Оценка: 18 (3)
А>Не подскажите, есть ли "стандартные" схемы горизонтального масштабирования Instant Messaging (IM) серверов.
А>А именно интересует как делается взаимодействие между несколькими серверами. Т.е. напрмер когда есть два пользователя — один приконекчен к одному серверу, второй — к другому. Как в этом случае происходит обмен сообщениями между ними.

Здесь есть несколько задач:
1. Хранение всех зарегистрированных пользователей и фиксированной информации о каждом из пользователей.
Как правило информация о пользователях хранится в единой базе.
Если необходимо масштабировать эту базу, то при работе на одной территории просто строится кластер.
Если же нужно размазать базу по регионам — применяется простейшая кластеризация один ко многим.

2. Регистрация активного пользователя.
Как правило пользователь привязывается к одной из баз/серверов регистрации активных пользователей.
В таких базах хранятся данные о текущем местоположении активных пользователей
Назначение сервера как правило статическое, хотя можно делать и динамически (выбираем тот, что ближе).
Как правило повторная привязка выполняется не часто. При этом информация о выбранном для данного пользователя сервере регистрации распространяется либо:
а) путем записи идентификатора сервера (или списка серверов) на которых можно найти данного пользователя в единую базу пользователей
б) путем оповещения всех серверов регистрации
в) путем поиска запрашиваемого пользователя во всех доступных серверах регистрации
(нужный вариант выбирается по критериям — надёжность, скорость доступа, неуязвимость )

3. Передача сообщений между пользователями.
Как правило производится с использованием прокси-серверов, но можно и напрямую.
Информация о прокси-сервере или адресе получателя берется с сервера регистрации при входе в сеть и периодически обновляют.

4. Если нужна отложенная доставка сообщений(когда пользователь входит в сеть), то ставят хранилища сообщений.
Они могут располагаться: у прокси, у регистраторов, у центральной базы; ближе к отправителю(как в SMSC), ближе к получателю.
Здесь вариантов масса.

Конкретные же варианты реализаций выбирайте исходя из используемых протоколов IM.
Как правило в них даны намеки о необходимых компонентах и их распределении в зависимости от целей разработчиков протоколов.
Re: Scalable IM Server Architecture
От: Cyberax Марс  
Дата: 07.08.07 15:40
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Не подскажите, есть ли "стандартные" схемы горизонтального масштабирования Instant Messaging (IM) серверов.

А>А именно интересует как делается взаимодействие между несколькими серверами. Т.е. напрмер когда есть два пользователя — один приконекчен к одному серверу, второй — к другому. Как в этом случае происходит обмен сообщениями между ними.
Рекомендую посмотреть http://ejabberd.jabber.ru/ — это распределенный отказоустойчивый Jabber-сервер.
Sapienti sat!
Re: Scalable IM Server Architecture
От: sh_san Украина  
Дата: 07.08.07 21:28
Оценка: 18 (2)
А>Не подскажите, есть ли "стандартные" схемы горизонтального масштабирования Instant Messaging (IM) серверов.

Один из "частных" подходов к созданию масштабируемой IM системы — архитектура Google Tolk
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.