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

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

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

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

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

Конкретные же варианты реализаций выбирайте исходя из используемых протоколов IM.
Как правило в них даны намеки о необходимых компонентах и их распределении в зависимости от целей разработчиков протоколов.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.