Область применения
Изобретение относится к области интернет-технологий, в частности к кластерному серверу системы мгновенного обмена сообщениями и способу обмена сообщениями между кластерами.
Уровень техники
С развитием интернет-технологий системы мгновенного обмена сообщениями становятся все более популярными среди пользователей, так как они делают контакты и общение между людьми все более и более удобными. Они являются способом немедленного общения между людьми через Интернет, обладают высокой интерактивностью, низкой себестоимостью и прочими преимуществами, поэтому в будущем следует ожидать дальнейшего роста популярности таких систем. В настоящее время системы мгновенного обмена сообщения широко используются пользователями, включая системы QQ, MSN и им подобные.
В условиях быстрого роста числа пользователей системы мгновенного обмена сообщениями растет и число сообщений, передаваемых между пользователями, а также количество рассылаемых по сети сообщений, связанных с состоянием присутствия пользователей в сети. Возрастает нагрузка на сервер, процессирующий сообщения, и сервер с одной базой данных уже не может справиться с таким большим количеством данных и задач. Одним из путей решения проблемы является кластерная система с множеством серверов баз данных.
Кластерная система серверов объединяет множество серверов, оказывающих одну и ту же услугу пользователям, при этом каждый из серверов обслуживает множество пользователей и все серверы связаны друг с другом, обеспечивая передачу данных между различными кластерами.
Существующие системы мгновенного обмена сообщениями с использованием кластерных серверов работают таким образом, что кластерные серверы распространяют данные об адресах и учетных записях пользователей среди прикрепленных к ним серверов мгновенного обмена сообщениями, в результате чего серверы мгновенного обмена сообщениями, прикрепленные к различным кластерным серверам, могут передавать данные по указанным адресам и учетным записям. В дополнение к этому, пользователи, прикрепленные к различным кластерным серверам, получают межкластерные рассылки от своих кластерных серверов, сообщают о своем текущем состоянии присутствия своим кластерным серверам и получают информацию о текущем состоянии присутствия пользователей, прикрепленных к другим кластерным серверам, от своих кластерных серверов.
Однако в связи с постоянно растущим количеством пользователей число сообщений, рассылаемых между кластерами, постоянно возрастает, что отрицательно сказывается на работе всей системы мгновенного обмена сообщениями, в результате чего рано или поздно число пользователей, которое может обслужить вся система, становится ограниченным. Ввиду описанных выше технологических тенденций существует несомненная потребность в повышении производительности обработки данных кластерными системами.
Сущность изобретения
В настоящем изобретении предлагаются кластерный сервер системы мгновенного обмена сообщениями и способ передачи сообщений между кластерами, обеспечивающие выполнение упомянутых выше целей, а именно, обеспечивающие эффективное использование ширины полос каналов связи между кластерами, повышение эффективности передачи сообщений, а также несущей способности всей системы мгновенного обмена сообщениями. Выполнение данных целей достигается за счет классифицирования сообщений, передаваемых между кластерами.
Для выполнения данных целей в одном из воплощений настоящего изобретения предлагается кластерный сервер системы мгновенного обмена сообщениями, включающий:
блок хранения, сконфигурированный для хранения первой информации о подписке, то есть информации о том, что пользователь внутреннего кластера подписывается на информирование о состоянии присутствия пользователя внешнего кластера, и второй информации о подписке, то есть информации о том, что пользователь внешнего кластера подписывается на информирование о состоянии присутствия пользователя внутреннего кластера;
блок классификации информации, сконфигурированный для определения, является ли сообщение, передаваемое между пользователем внутреннего кластера и пользователем внешнего кластера, сообщением, относящимся к состоянию присутствия; и
блок передачи информации, сконфигурированный для передачи сообщения в соответствии с первой и второй информацией о подписке, если сообщение является сообщением, относящимся к состоянию присутствия.
Предпочтительно, чтобы в кластерном сервере первая информация о подписке являлась информацией для записи соответствующих отношений между первым пользователем внутреннего кластера и вторым сервером мгновенного обмена сообщениями внешнего кластера, заключающихся в том, что первый пользователь подписывается на информирование о состоянии присутствия пользователя внешнего кластера, подключенного ко второму серверу мгновенного обмена сообщениями; и
вторая информация о подписке являлась информацией для записи соответствующих отношений между первым пользователем и вторым кластерным сервером внешнего кластера; заключающихся в том, что пользователь внешнего кластера, подключенный ко второму кластерному серверу, подписывается на информирование о состоянии присутствия первого пользователя.
Предпочтительно, чтобы в кластерном сервере блок классификации информации был дополнительно сконфигурирован для передачи первого сообщения на второй кластерный сервер в соответствии со второй информацией о подписке, если он определяет, что первое сообщение от первого пользователя к пользователю внешнего кластера является сообщением, относящимся к состоянию присутствия; и
чтобы блок классификации информации был дополнительно сконфигурирован для передачи второго сообщения на первый сервер мгновенного обмена сообщениями, к которому подключен первый пользователь, в соответствии с первой информацией о подписке, если он определяет, что второе сообщение от пользователя внешнего кластера к пользователю внутреннего кластера является сообщением, относящимся к состоянию присутствия, и при этом второй сервер мгновенного обмена сообщениями работает как исходное устройство, передающее второе сообщение.
Предпочтительно, чтобы кластерный сервер дополнительно включал:
блок интерфейса внешнего обмена сообщениями, сконфигурированный для обеспечения интерфейса для обмена сообщениями с внешним кластером; и
блок распределения пользователей, сконфигурированный для выделения соответствующего сервера мгновенного обмена сообщениями пользователю внутреннего кластера;
при этом предпочтительно, чтобы блок передачи информации был дополнительно сконфигурирован для запрашивания через интерфейс внешнего обмена сообщениями данных о третьем кластерном сервере, к которому подключен адресат первого сообщения, и передачи первого сообщения на третий кластерный сервер, если первое сообщение является сообщением, не относящимся к состоянию присутствия;
или, чтобы блок передачи информации был дополнительно сконфигурирован для обнаружения через блок распределения пользователей данных о третьем сервере мгновенного обмена сообщениями, к которому подключен адресат второго сообщения, и передачи второго сообщения на третий сервер мгновенного обмена сообщениями, если второе сообщение является сообщением, не относящимся к состоянию присутствия.
Предпочтительно, чтобы в кластерном сервере блок классификации информации дополнительно был сконфигурирован для определения, является ли первое сообщение сообщением не реального времени, перед передачей первого сообщения.
Предпочтительно, чтобы в кластерном сервере блок передачи информации был дополнительно сконфигурирован для хранения первого сообщения в соответствующей очереди ожидания из сообщений для передачи, если первое сообщение является сообщением не реального времени, сжатия очереди ожидания из сообщений для передачи в составное сообщение и передачи составного сообщения при достижении заданной длины очередью ожидания из сообщений для передачи.
Предпочтительно, чтобы в кластерном сервере блок передачи информации был дополнительно сконфигурирован для разбивки второго сообщения на множество независимых сообщений, если второе сообщение является составным сообщением, перед тем, как блок классификации информации определяет, является ли второе сообщение сообщением, относящимся к состоянию присутствия
Предпочтительно, чтобы кластерный сервер был связан с глобальным сервером, на котором он мог бы запрашивать данные о соответствующем кластерном сервере, к которому подключен пользователь внешнего кластера.
Во втором воплощении изобретения предлагается способ обмена сообщениями между кластерами системы мгновенного обмена сообщениями, содержащий этапы:
получения сообщения, передаваемого между пользователем внутреннего кластера и пользователем внешнего кластера; и
если сообщение является сообщением, относящимся к состоянию присутствия, то - отправки данного сообщения в соответствии с первой предварительно сохраненной информацией о подписке, то есть информацией о том, что пользователь внутреннего кластера подписался на информирование о состоянии присутствия пользователя внешнего кластера, или в соответствии со второй предварительно сохраненной информацией о подписке, то есть информацией о том, что пользователь внешнего кластера подписался на информирование о состоянии присутствия пользователя внутреннего кластера.
Предпочтительно, чтобы при данном способе первая информация о подписке являлась информацией для записи соответствующих отношений между первым пользователем внутреннего кластера и вторым сервером мгновенного обмена сообщениями внешнего кластера, заключающихся в том, что первый пользователь подписывается на информирование о состоянии присутствия пользователя внешнего кластера, подключенного ко второму серверу мгновенного обмена сообщениями; и
вторая информация о подписке являлась информацией для записи соответствующих отношений между первым пользователем и вторым кластерным сервером внешнего кластера, заключающихся в том, что пользователь внешнего кластера, подключенный ко второму кластерному серверу, подписывается на информирование о состоянии присутствия первого пользователя.
Описанное выше техническое решение обеспечивает следующие преимущества кластерного сервера и способа обмена сообщениями между кластерами:
за счет сохранения первой информации о подписке, то есть информации о том, что пользователь внутреннего кластера подписывается на информирование о состоянии присутствия пользователя внешнего кластера, и второй информации о подписке, то есть информации о том, что пользователь внешнего кластера подписывается на информирование о состоянии присутствия пользователя внутреннего кластера; классификации сообщений, передаваемых между пользователем внутреннего кластера и пользователем внешнего кластера; а также просмотра соответствующей предварительно сохраненной информации о подписке в случаях, когда сообщения являются сообщениями, относящимися к состоянию присутствия, - могут быть получены адреса всех получателей сообщений, что позволяет избежать проблемы, связанной с многократным процессированием кластерным сервером большого количества рассылаемых сообщений состояния, негативно влияющим на производительность обработки данных системой; поэтому предлагаемые сервер и способ обеспечивают эффективное использование ширины полос каналов связи между кластерами и общее повышение эффективности обмена сообщениями.
Отношения подписки пользователя внутреннего кластера на информирование о состоянии присутствия пользователя внешнего кластера расширяются, посредством первой информации о подписке, до отношений между пользователем внутреннего кластера и сервером мгновенного обмена сообщениями пользователя внешнего кластера; а отношения подписки пользователем внешнего кластера на информирование о состоянии присутствия пользователя внутреннего кластера расширяются, посредством второй информации о подписке, до отношений между кластерным сервером внешнего кластера и пользователем внутреннего кластера, в результате чего необходимо передавать всего лишь одно общее сообщение о состоянии присутствия между пользователем внутреннего кластера и пользователем внешнего кластера, в результате чего, в свою очередь, уменьшаются суммарные объем и количество сообщений, передаваемых между кластерами, и удается избежать перегрузок в системе.
Кроме того, сообщения дополнительно разделяются на сообщения реального времени и сообщения не реального времени; если полученное сообщение является сообщением не реального времени, оно сначала сохраняется в очереди ожидания из сообщений, предназначенных для передачи одному и тому же адресату; и данная очередь ожидания из сообщений для передачи сжимается в одно составное сообщение, которое будет передано, когда длина очереди ожидания из сообщений для передачи превысит заданное пороговое значение, в результате чего суммарные объем и количество сообщений, передаваемых между кластерами, уменьшаются, и достигается повышение эффективности использования ширины полос каналов связи между кластерами, а также эффективности работы всей системы обмена сообщениями.
Краткое описание чертежей
Фиг.1. Схема структуры системы мгновенного обмена сообщениями, в которой используется кластерный сервер в соответствии с одним из воплощений настоящего изобретения.
Фиг.2. Схема способа конфигурирования системы мгновенного обмена сообщениями, изображенной на фиг.1.
Фиг.3. Схема способа обмена сообщениями между кластерами системы мгновенного обмена сообщениями, изображенной на фиг.1.
Фиг.4. Структура кластерного сервера в соответствии с одним из воплощений настоящего изобретения.
Фиг.5. Схема способа передачи сообщения, не относящегося к состоянию присутствия, системой мгновенного обмена сообщениями, в которой используется кластерный сервер в соответствии с одним из воплощений настоящего изобретения.
Фиг.6. Схема способа передачи сообщения, относящегося к состоянию присутствия, системой мгновенного обмена сообщениями, в которой используется кластерный сервер в соответствии с одним из воплощений настоящего изобретения.
Фиг.7. Блок-схема способа в соответствии со вторым воплощением настоящего изобретения.
Подробное описание изобретения
Чтобы цели, технические решения и преимущества настоящего изобретения были более понятны, ниже приводится подробное описание воплощений настоящего изобретения со ссылками на прилагаемые чертежи.
В воплощениях системы и способа в соответствии с настоящим изобретением кластерный сервер системы мгновенного обмена сообщениями, при получении сообщений от пользователей внутреннего кластера, посылаемых пользователям внешнего кластера, а также при получении сообщений от пользователей внешнего кластера, посылаемых ими пользователям внутреннего кластера, разделяет получаемые им сообщения на сообщения, относящиеся к состоянию присутствия, и сообщения, не относящиеся к состоянию присутствия, в соответствии с типами сообщений, после чего дополнительно разделяет сообщения, относящиеся к состоянию присутствия, и сообщения, не относящиеся к состоянию присутствия, на сообщения реального времени и сообщения не реального времени, в соответствии с характеристиками сообщений, и процессирует классифицированные таким образом сообщения различными способами, в результате чего обеспечивается эффективное использование ширины полос каналов связи между кластерами, повышается эффективность обмена сообщениями, уменьшается суммарное количество сообщений, передаваемых между кластерами, и их длина, что в конечном итоге позволяет избежать перегрузок системы.
Для того чтобы сущность способа и устройства, предлагаемых в воплощениях, были более понятны, дадим сначала определения терминов «сообщение, относящееся к состоянию присутствия» и «сообщение, не относящееся к состоянию присутствия». Так, в системе мгновенного обмена сообщениями «сообщения, относящиеся к состоянию присутствия» означают сообщения, относящиеся к состоянию присутствия пользователя на линии. Сведущим в данной области техники будет понятно, что текущее состояние пользователей систем мгновенного обмена сообщениями, таких как QQ и MSN, постоянно меняется, в связи с чем необходимо часто передавать информацию, относящуюся к состоянию присутствия данного пользователя, его корреспондентам, и в данной информации должно быть указано состояние присутствия данного пользователя. «Сообщения, не относящиеся к состоянию присутствия», как очевидно из самого данного термина, означают сообщения, не относящиеся к состоянию присутствия данного пользователя. «Сообщения реального времени» означают сообщения, которые должны быть переданы в режиме реального времени, а «сообщения не реального времени» соответственно означают сообщения, которые не обязательно должны быть переданы в режиме реального времени.
На фиг.1 показана схема подключения, отображающая структуру системы мгновенного обмена сообщениями, использующей кластерный сервер в соответствии с одним из воплощений настоящего изобретения. Как видно из фиг.1, система мгновенного обмена сообщениями включает:
множество терминалов 10 мгновенного обмена сообщениями, каждый из которых позволяет подключиться к системе по меньшей мере одному пользователю системы мгновенного обмена сообщениями;
множество серверов 20 мгновенного обмена сообщениями, к каждому из которых подключается по меньшей мере один терминал мгновенного обмена сообщениями для предоставления возможности мгновенного обмена сообщениями по меньшей мере одному пользователю;
множество кластерных серверов 30, к каждому из которых подключено по меньшей мере два сервера 20 мгновенного обмена сообщениями, причем серверы 20 мгновенного обмена сообщениями одного и того же кластера подключены к одному и тому же кластерному серверу 30, причем каждый из кластерных серверов 30 предназначен для распределения пользователей по серверам 20 мгновенного обмена сообщениями, подключенным к нему, и обеспечения интерфейсов обмена сообщениями с другими кластерами; и
глобальный сервер 40, предназначенный для хранения информации об отнесении пользователей к кластерным серверам 30, к которым они прикреплены, причем каждый из кластерных серверов 30 связан с глобальным сервером 40, через который он может получить адрес кластерного сервера 30, к которому относится любой пользователь.
В процессе мгновенного обмена сообщениями система обмена сообщениями между кластерами образует кластерную систему, включающую множество серверов баз данных (СБД) и глобальный сервер 40 в качестве центра; при этом глобальный сервер 40 присваивает номер каждому из кластерных серверов, обеспечивая при этом уникальность номера каждого из кластерных серверов системы мгновенного обмена сообщениями, а также присваивает номер каждому из серверов системы мгновенного обмена сообщениями в каждом кластере, обеспечивая уникальность каждого сервера системы мгновенного обмена сообщениями внутри кластера.
Как показано на фиг.2, способ конфигурирования кластерной системы с множеством серверов баз данных (СБД) и с использованием глобального сервера 40 как центра системы мгновенного обмена сообщениями включает этапы:
S201: подключения всех кластерных серверов к глобальному серверу 40 в соответствии с информацией о конфигурации;
S202: получения каждым из кластерных серверов 30 адресов остальных кластерных серверов от глобального сервера 40 и создания сетевых подключений к остальным кластерным серверам 30; и
S203: создания сервером 20 мгновенного обмена сообщениями, входящим в определенный кластер, сетевого подключения к кластерному серверу 30 по месту своего расположения.
Таким образом конфигурируется кластерная система с множеством серверов баз данных (СБД), включающая серверы 20 мгновенного обмена сообщениями, кластерные серверы 30 и глобальный сервер 40. Способ обмена сообщениями между кластерами в такой системе изображен на фиг.3. Данный способ включает этапы, на которых:
S301: пользователь входит в систему на терминале 10 мгновенного обмена сообщениями и кластерный сервер 30, к которому прикреплен пользователь, выделяет ему сервер 20 мгновенного обмена сообщениями;
S302: пользователь обменивается сообщениями с пользователем внешнего кластера и сервер 20 мгновенного обмена сообщениями, к которому прикреплен данный пользователь, запрашивает на кластерном сервере 30, к которому прикреплен данный пользователь, адрес кластера, к которому подключен пользователь внешнего кластера, с которым обменивается сообщениями данный пользователь;
S303: кластерный сервер 30 запрашивает у глобального сервера 40, к какому кластеру прикреплен пользователь внешнего кластера, и отправляет информацию о полученном в результате данной справки адресе на сервер 20 мгновенного обмена сообщениями; и
S304: сервер 20 мгновенного обмена сообщениями передает сообщение на кластерный сервер 30, к которому прикреплен пользователь внешнего кластера, обменивающийся сообщениями с данным пользователем, используя информацию об адресе, полученную кластерным сервером 30, к которому прикреплен данный пользователь.
Способ передачи информации от пользователя внешнего кластера к данному пользователю может содержать аналогичные этапы, поэтому нет необходимости в их повторном описании. Таким образом, с использованием описанного выше способа может быть реализована система взаимного мгновенного обмена сообщениями между кластерами.
В соответствии с воплощениями настоящего изобретения, для обеспечения эффективности и высокой несущей способности системы мгновенного обмена сообщениями, сервер 20 мгновенного обмена сообщениями разделяет сообщения на сообщения, относящиеся к состоянию присутствия, и сообщения, не относящиеся к состоянию присутствия, после чего дополнительно разделяет их на сообщения реального времени и сообщения не реального времени, в соответствии с характеристиками сообщений, при передаче сообщений пользователю внешнего кластера через кластерный сервер 30, к которому прикреплен пользователь внутреннего кластера, или при приеме сообщений от пользователя внешнего кластера, посылаемых пользователю внутреннего кластера, и процессирует сообщения упомянутых различных типов различным образом.
Ниже подробно описана структура кластерного сервера в соответствии с одним из воплощений настоящего изобретения. При этом кластерный сервер, к которому подключен пользователь внутреннего кластера, именуется также как первый кластерный сервер, а кластерный сервер, к которому подключен пользователь внешнего кластера, именуется также как второй кластерный сервер. Сведущим в данной области техники будет очевидно, что число кластерных серверов в системе не ограничено двумя и количество серверов, равное двум, используется для ясности описания (см. фиг.1).
На фиг.4 схематически показана структура кластерного сервера 30 в соответствии с одним из воплощений настоящего изобретения. В контексте настоящего описания данный кластерный сервер соответствует первому кластерному серверу. Как показано на фиг.4, кластерный сервер 30 включает:
блок 31 интерфейса внешнего обмена сообщениями, сконфигурированный для обеспечения интерфейса для обмена сообщениями с внешним кластером;
блок 32 распределения пользователей между серверами мгновенного обмена сообщениями внутри кластера и записи соответствующих отношений между пользователями и серверами мгновенного обмена сообщениями, к которым данные пользователи прикреплены;
блок 33 хранения, сконфигурированный для хранения первой информации о подписке, то есть информации о том, что пользователь внутреннего кластера подписывается на информирование о состоянии присутствия пользователя внешнего кластера, и второй информации о подписке, то есть информации о том, что пользователь внешнего кластера подписывается на информирование о состоянии присутствия пользователя внутреннего кластера; при этом первая информация о подписке сконфигурирована для записи соответствующих отношений между первым пользователем внутреннего кластера и вторым сервером мгновенного обмена сообщениями внешнего кластера, заключающихся в том, что первый пользователь подписывается на информирование о состоянии присутствия пользователя внешнего кластера, подключенного ко второму серверу мгновенного обмена сообщениями; а вторая информация о подписке сконфигурирована для записи соответствующих отношений между первым пользователем и вторым кластерным сервером внешнего кластера, заключающихся в том, что пользователь внешнего кластера, подключенный ко второму кластерному серверу, подписывается на информирование о состоянии присутствия первого пользователя;
блок 36 приема информации, сконфигурированный для приема сообщений, передаваемых между пользователем внутреннего кластера и пользователем внешнего кластера;
блок 34 классификации информации, сконфигурированный для определения, является ли сообщение, передаваемое между пользователем внутреннего кластера и пользователем внешнего кластера, сообщением, относящимся к состоянию присутствия, или нет; и
блок 35 передачи информации, сконфигурированный для передачи сообщений в соответствии с первой или второй информацией о подписке, когда сообщение, передаваемое между пользователем внутреннего кластера и пользователем внешнего кластера, является сообщением, относящимся к состоянию присутствия.
Коммуникационный сервер 30, имеющий описанную выше структуру, может получить адреса всех корреспондентов данного пользователя за счет сохранения первой и второй информации о подписке между данным пользователем и его корреспондентами; кроме того, за счет: классификации сообщений, передаваемых между пользователем внутреннего кластера и пользователями внешних кластеров; просмотра предварительно сохраненной соответствующей информации о подписке; и определения, является ли передаваемое сообщение сообщением, относящимся к состоянию присутствия, - можно решить проблему многократного процессирования большого количества рассылаемых сообщений состояния, что негативно влияет на производительность обработки данных системой; это позволяет также эффективно использовать ширину полос каналов связи между кластерами, то есть в целом повысить эффективность передачи сообщений.
А именно, блок 35 передачи информации передает сообщения следующим образом: если первое сообщение, передаваемое первым пользователем внутреннего кластера через первый сервер мгновенного обмена сообщениями, к которому подключен первый пользователь, является сообщением, относящимся к состоянию присутствия, блок 35 просматривает вторую информацию о подписке и передает первое сообщение на второй кластерный сервер, а если первое сообщение является сообщением, не относящимся к состоянию присутствия, блок 35 посредством блока 31 интерфейса передачи внешних сообщений запрашивает адрес третьего кластерного сервера, к которому подключен адресат первого сообщения, и передает первое сообщение на третий кластерный сервер, причем в данном случае первый сервер мгновенного обмена сообщениями является сервером 201 мгновенного обмена сообщениями внутреннего кластера (фиг.4), а второй кластерный сервер является сервером 301 внешнего кластера (фиг.4).
Если при приеме внутренним кластерным сервером второго сообщения от внешнего кластера определяется, что передающий сервер второго сообщения является вторым сервером мгновенного обмена сообщениями, просматривается первая информация о подписке и второе сообщение передается на первый сервер мгновенного обмена сообщениями; а если второе сообщение является сообщением, не относящимся к состоянию присутствия, с помощью блока распределения пользователей определяется третий сервер мгновенного обмена сообщениями, к которому прикреплен адресат второго сообщения, и второе сообщение передается на третий сервер мгновенного обмена сообщениями.
При такой конструкции кластерного сервера 30, а именно за счет хранения первой информации о подписке и второй информации о подписке, расширения отношений подписки (подписки пользователя внутреннего кластера на получение состояний клиента внешнего кластера) до отношений между пользователем внутреннего кластера и сервером мгновенного обмена сообщениями внешнего кластера и отношений подписки пользователя внешнего кластера на получение состояний присутствия пользователя внутреннего кластера до отношений между кластерным сервером внешнего кластера и пользователем внутреннего кластера, - при изменении состояния присутствия пользователя внутреннего кластера необходимо передавать только общее сообщение на соответствующий кластерный сервер, к которому подключен пользователь внешнего кластера, независимо от того, сколько клиентов внешнего кластера подписалось на получение информации о состоянии присутствия пользователя внутреннего кластера; и также при изменении состояния присутствия пользователя внешнего кластера необходимо только передавать общее сообщение на соответствующий сервер мгновенного обмена сообщениями внутреннего кластера независимо от того, сколько пользователей первого кластера подписалось на получение информации о состоянии присутствия пользователя внешнего кластера, в результате чего повышается эффективность использования ширины полос каналов связи между кластерами, повышается общая эффективность обмена сообщениями, уменьшается суммарное количество и размер сообщений, передаваемых между кластерами, и удается эффективно избежать перегрузок системы.
В дополнение к этому, блок 34 классификации информации кластерного сервера 30 в одном из воплощений настоящего изобретения разделяет сообщения, передаваемые между кластерами, на сообщения, относящиеся к состоянию присутствия, и сообщения, не относящиеся к состоянию присутствия, после чего дополнительно разделяет их на сообщения реального времени и сообщения не реального времени; передача сообщений реального времени их адресатам производится сразу после их получения в соответствии с настоящим способом, а сообщения не реального времени сохраняются в очереди ожидания из сообщений для их отправки одним и тем же адресатам; причем для очереди сообщений задана предельная длина и сообщения в очереди сжимаются в одно составное сообщение для последующей его отправки. При таком способе эффективно уменьшается количество и длина сообщений, передаваемых между кластерами, повышается эффективность использования ширины полос каналов связи между кластерами и общая эффективность обмена сообщениями.
В соответствии с вышесказанным, второе сообщение, полученное блоком 36 приема информации кластерного сервера 30 от внешнего кластерного сервера (как показано на фиг.4), может быть составным сообщением, поэтому блок 36 приема информации дополнительно сконфигурирован так, что он определяет, является ли второе сообщение составным сообщением, а блок 35 передачи информации дополнительно сконфигурирован для разбивки второго сообщения на множество независимых сообщений, после чего производится классификация каждого из независимых сообщений.
Ниже подробно описан способ процессирования сообщений системой мгновенного обмена сообщениями с использованием кластерного сервера в соответствии с одним из воплощений настоящего изобретения. На фиг.5 представлена схема передачи сообщения, не относящегося к состоянию присутствия, системой мгновенного обмена сообщениями, в которой используется кластерный сервер в соответствии с одним из воплощений настоящего изобретения; а на фиг.6 представлена схема передачи сообщения, относящегося к состоянию присутствия, системой мгновенного обмена сообщениями, в которой используется кластерный сервер в соответствии с одним из воплощений настоящего изобретения.
Для лучшего понимания нижеследующего описания отметим, что в соответствии с фиг.5, внутренний кластер называется также первым кластером; пользователи внутреннего кластера называются также первыми пользователями; сервер мгновенного обмена сообщениями и кластерный сервер, к которому прикреплены первые пользователи, называются также первым сервером мгновенного обмена сообщениями и первым кластерным сервером соответственно; кроме того, внешний кластер называется также вторым кластером; пользователи внешнего кластера называются также вторыми пользователями; сервер мгновенного обмена сообщениями и кластерный сервер, к которому прикреплены вторые пользователи, называются также вторым сервером мгновенного обмена сообщениями и вторым кластерным сервером соответственно. Как показано на фиг.5, если сообщение, передаваемое первым пользователем, является сообщением, не относящимся к состоянию присутствия, способ процессирования такого сообщения системой включает этапы, на которых:
S501: первый сервер мгновенного обмена сообщениями запрашивает адрес второго кластерного сервера, к которому прикреплен второй пользователь, и сообщение передается через первый кластерный сервер;
S502: первый кластерный сервер запрашивает на глобальном сервере адрес второго кластерного сервера и сохраняет результат запроса в локальном кэше, что позволяет повысить эффективность обработки информации и снижает нагрузку на глобальный сервер;
S503: первый кластерный сервер посылает результат запроса на первый сервер мгновенного обмена сообщениями;
S504: первый сервер мгновенного обмена сообщениями передает сообщения, предназначенные для передачи, на первый кластерный сервер;
S505: первый кластерный сервер определяет, являются ли сообщения сообщениями реального времени или сообщениями не реального времени; если они являются сообщениями не реального времени, они помещаются в очередь ожидания из сообщений для передачи для их передачи на второй кластерный сервер; и когда очередь ожидания сообщений достигает заданной длины, или по истечении заданного времени, все сообщения в очереди ожидания из сообщений для передачи сжимаются в одно составное сообщение;
S506: первый кластерный сервер передает сообщения реального времени или составное сообщение на второй кластерный сервер;
S507: второй кластерный сервер получает сообщения от первого кластерного сервера. Если какое-либо из полученных сообщений является сжатым составным сообщением, такое комплексное сообщение разбивается на отдельные сообщения; и
S508: если второй кластерный сервер определяет, что адрес второго сервера мгновенного обмена сообщениями, к которому прикреплен адресат, непосредственно указан в полученных сообщениях, то такие сообщения передаются непосредственно на второй сервер мгновенного обмена сообщениями; а если второй кластерный сервер определяет, что адрес второго сервера мгновенного обмена сообщениями, к которому прикреплен адресат, не указан в полученных сообщениях, то производится поиск адреса второго сервера мгновенного обмена сообщениями согласно предварительно сохраненной информации об отношениях подписки между вторым пользователем и первым сервером мгновенного обмена сообщениями, после чего производится передача сообщений.
Путем выполнения описанных выше этапов S501-S508 осуществляется передача сообщений, не относящихся к состоянию присутствия, пользователем внутреннего кластера системы мгновенного обмена сообщениями пользователю внешнего кластера, причем отдельные сообщения, передаваемые на один и тот же кластерный сервер, объединяются в составное сообщение, которое будет передано с задержкой по времени, в результате чего суммарное количество и размер передаваемых сообщений уменьшаются и повышаются эффективность использования ширины полос каналов связи между кластерами и общая эффективность работы системы мгновенного обмена сообщениями.
На фиг.6 показана схема способа процессирования сообщений, относящихся к состоянию присутствия, передаваемых вторым пользователем системы мгновенного обмена сообщениями. Способ содержит этапы, на которых:
S601: первый сервер мгновенного обмена сообщениями запрашивает адрес второго кластерного сервера, к которому прикреплен второй пользователь, и сообщение передается через первый кластерный сервер;
S602: первый кластерный сервер запрашивает на глобальном сервере адрес второго кластерного сервера и сохраняет результат запроса в локальном кэше;
S603: первый кластерный сервер посылает результат запроса на первый сервер мгновенного обмена сообщениями;
S604: первый сервер мгновенного обмена сообщениями передает на первый кластерный сервер сообщение-запрос на подписку первого пользователя на информацию о состоянии присутствия второго пользователя и указывает, что данное сообщение-запрос на подписку является сообщением, относящимся к состоянию присутствия, а также адрес второго кластерного сервера, на который должно быть отправлено данное сообщение-запрос на подписку;
S605: первый кластерный сервер сохраняет первую информацию о подписке, то есть информацию о том, что первый пользователь подписывается на состояние присутствия второго пользователя согласно сообщению-запросу на подписку, причем первая информация о подписке включает информацию о первом пользователе и адрес второго сервера мгновенного обмена сообщениями, к которому прикреплен второй пользователь, на состояние присутствия которого подписался первый пользователь, то есть структура отношения подписки такова, что в ней указывается только соответствующий сервер мгновенного обмена сообщениями и не указываются все данные о втором пользователе внешнего кластера, за счет чего уменьшается объем данных, хранящихся в кластерном сервере, и что более благоприятно для восстановления данных в случае частичного отказа системы;
S606: первый кластерный сервер пересылает запрос на подписку на второй кластерный сервер;
S607: второй кластерный сервер сохраняет вторую информацию о подписке, то есть информацию о том, что первый пользователь подписывается на состояние присутствие второго пользователя в соответствии с запросом на подписку, причем вторая информация о подписке включает информацию о втором пользователе и адрес первого кластерного сервера, к которому подключен первый пользователь, подписывающийся на получение информации о состоянии присутствия второго пользователя, так что структура отношений подписки такова, что в ней указывается только кластерный сервер, а не подробные данные пользователя;
S608: второй кластерный сервер пересылает запрос на подписку первого пользователя на второй сервер мгновенного обмена сообщениями, к которому прикреплен второй пользователь, или выделяет второму пользователю свободный сервер мгновенного обмена сообщениями;
S609 второй пользователь, через второй сервер мгновенного обмена сообщениями, отвечает на сообщение-запрос на подписку и передает ответное сообщение на первый сервер мгновенного обмена сообщениями, к которому подключен первый пользователь, запросивший подписку на состояние присутствия;
S610: при изменении состояния присутствия второго пользователя на второй кластерный сервер со второго сервера мгновенного обмена сообщениями посылается общее сообщение об изменении состояния;
S611: второй кластерный сервер пересылает общее сообщение об изменении на первый кластерный сервер, подписавшийся на состояние присутствия второго пользователя, в соответствии со второй информацией о подписке; и
S612: первый кластерный сервер пересылает полученное общее сообщение об изменении состояния второго пользователя на первый сервер мгновенного обмена сообщениями, к которому прикреплен первый пользователь, в соответствии с первой информацией о подписке.
Кроме того, на этапах S606-S612, когда сообщение-запрос на подписку или сообщение об изменении состояния, пересылаемое между первым и вторым кластерными серверами, является сообщением не реального времени, одиночные сообщения, передаваемые на один и тот же кластерный сервер, собираются в комплексное сообщение, которое передается с задержкой по времени.
Во время выполнения этапов S601-S608, а также этапов S601-S612 кластерный сервер системы мгновенного обмена сообщениями разделяет процессируемые сообщения на сообщения, относящиеся к состоянию присутствия, и сообщения, не относящиеся к состоянию присутствия, в соответствии с типом сообщения, после чего разделяет их на сообщения реального времени и сообщения не реального времени, в соответствии с их характеристиками; по результатам такой классификации различные сообщения передаются по-разному; в результате чего уменьшается количество передаваемых по системе коротких сообщений, повышается эффективность использования ширины полос каналов связи между кластерами, повышается общая эффективность обмена сообщениями и удается избежать перегрузок системы.
В другом воплощении изобретения предлагается способ обмена сообщениями между кластерами системы мгновенного обмена сообщениями, включающей терминал мгновенного обмена сообщениями, сервер мгновенного обмена сообщениями и кластерный сервер. Предлагаемый способ включает этапы:
получения сообщений, передаваемых между пользователем внутреннего кластера и пользователем внешнего кластера; и
отправки сообщений согласно первой предварительно сохраненной информации о подписке, то есть информации о том, что пользователь внутреннего кластера подписывается на информирование о состоянии присутствия пользователя внешнего кластера, или согласно второй предварительно сохраненной информации о подписке, то есть информации о том, что пользователь внешнего кластера подписывается на информирование о состоянии присутствия пользователя внутреннего кластера, если сообщение является сообщением, относящимся к состоянию присутствия.
На фиг.7 показана блок-схема способа, предлагаемого в соответствии с данным воплощением настоящего изобретения и включающего этапы:
S701: получения первым кластерным сервером первого сообщения, передаваемого первым пользователем (пользователем внутреннего кластера) через первый сервер мгновенного обмена сообщениями, к которому подключен данный пользователь;
S702: определения первым кластерным сервером, является ли первое сообщение сообщением, относящимся к состоянию присутствия, или не является таковым, и если сообщение является сообщением, относящимся к состоянию присутствия, выполняется этап S703; если сообщение является сообщением, не относящимся к состоянию присутствия, выполняется этап S704;
S703: просмотра первым кластерным сервером второй предварительно сохраненной информации о подписке, то есть информации о том, что пользователь внешнего кластера подписался на информирование о состоянии присутствия первого пользователя, и передачи первого сообщения на второй кластерный сервер (кластерный сервер внешнего пользователя), причем во второй информации о подписке записаны соответствующие отношения между первым пользователем и вторым кластерным сервером, заключающиеся в том, что второй кластерный сервер является кластерным сервером, подписавшимся на получение информации о состоянии присутствия первого пользователя;
S704: запроса первым кластерным сервером, через блок интерфейса внешнего обмена сообщениями, данных третьего кластерного сервера, к которому прикреплен адресат первого сообщения, и передачи первого сообщения на третий кластерный сервер;
S705: получения первым кластерным сервером второго сообщения, передаваемого с внешнего кластера на внутренний кластер;
S706: определения первым кластерным сервером, является ли второе сообщение сообщением, относящимся к состоянию присутствия, или не является таковым, и если оно является сообщением, относящимся к состоянию присутствия, выполняется этап S707, а если оно является сообщением, не относящимся к состоянию присутствия, выполняется этап S708;
S707: просмотра первым кластерным сервером первой предварительно сохраненной информации о подписке, то есть информации о том, что пользователь внутреннего кластера подписался на информирование о состоянии присутствия пользователя внешнего кластера, и передачи второго сообщения на первый сервер мгновенного обмена сообщениями, к которому прикреплен первый пользователь в соответствии с первой информацией о подписке, причем первая информация о подписке сконфигурирована таким образом, что в ней записаны соответствующие отношения между первым пользователем (пользователем внутреннего кластера) и вторым сервером мгновенного обмена сообщениями внешнего кластера, к которому подключен второй пользователь при подписке первым пользователем на информирование о состоянии присутствия второго пользователя (пользователя внешнего кластера); и
S708: поиска первым кластерным сервером в предварительно сохраненной информации о распределении пользователей данных третьего сервера мгновенного обмена сообщениями, к которому подключен адресат второго сообщения, и передачи второго сообщения на третий сервер мгновенного обмена сообщениями.
На этапах S701-S708 отношения подписки пользователя внутреннего кластера на информирование о состоянии присутствия пользователя внешнего кластера посредством первой информации о подписке расширяются до отношений между пользователем внутреннего кластера и сервером мгновенного обмена сообщениями пользователя внешнего кластера; а отношения подписки пользователем внешнего кластера на информирование о состоянии присутствия пользователя внутреннего кластера посредством второй информации о подписке расширяются до отношений между кластерным сервером внешнего кластера и пользователем внутреннего кластера, в результате чего обеспечивается полное использование ширины полос каналов связи между кластерами и достигается поставленная цель повышения эффективности обмена сообщениями.
Кроме того, в соответствии со способом, предлагаемым в данном воплощении, перед передачей первым кластерным сервером первого сообщения на второй кластерный сервер необходимо определить, является ли первое сообщение сообщением не реального времени; если оно не является сообщением реального времени, первое сообщение помещается в очередь ожидания, составляемую из сообщений для передачи на один и тот же адрес; при превышении суммарным размером поставленных в очередь сообщений заданного порогового значения очередь из сообщений сжимается в одно составное сообщение для передачи, в результате чего суммарные объем и количество сообщений, передаваемых между кластерами, уменьшаются, достигается повышение общей эффективности обмена сообщениями и удается избежать перегрузок в системе.
Подытоживая сказанное выше, отметим, что использование кластерных серверов и способа обмена сообщениями между кластерами в соответствии с воплощениями настоящего изобретения, подразумевающего классификацию сообщений, передаваемых между кластерами, позволяет достичь поставленной цели в виде эффективного использования ширины полос каналов связи между кластерами, повышения эффективности обмена сообщениями и несущей способности всей системы мгновенного обмена сообщениями.
В приведенном выше описании мгновенный обмен сообщениями для краткости иногда именуется как «МОС», сервер базы данных иногда именуется как «СБД», состояние присутствия иногда именуется как «присутствие».
Выше были описаны предпочтительные воплощения изобретения. Следует отметить, что сведущими в данной области техники могут быть предложены различные усовершенствования и модификации в соответствии с концепцией настоящего изобретения и все они попадают в защищаемый масштаб настоящего изобретения.
Изобретение относится к кластерному серверу системы мгновенного обмена сообщениями и способу обмена сообщениями между кластерами. Технический результат заключается в повышении эффективности обмена сообщениями. Кластерный сервер системы мгновенного обмена сообщениями содержит: блок хранения данных, сконфигурированный для хранения первой информации о подписке, являющейся информацией о том, что пользователь внутреннего кластера подписывается на информирование о состоянии присутствия пользователя внешнего кластера, и второй информации о подписке, являющейся информацией о том, что пользователь внешнего кластера подписывается на информирование о состоянии присутствия пользователя внутреннего кластера; блок классификации информации, сконфигурированный для определения, является ли сообщение, передаваемое между пользователем внутреннего кластера и пользователем внешнего кластера, сообщением, относящимся к состоянию присутствия; и блок передачи информации, сконфигурированный для передачи сообщения в соответствии с первой и второй информацией о подписке, если сообщение является сообщением, относящимся к состоянию присутствия. 2 н. и 8 з.п. ф-лы, 7 ил.
1. Кластерный сервер системы мгновенного обмена сообщениями, содержащий сервер мгновенного обмена сообщениями и пользователя, дополнительно содержащий:
блок хранения данных, сконфигурированный для хранения первой информации о подписке, являющейся информацией о том, что пользователь внутреннего кластера подписывается на информирование о состоянии присутствия пользователя внешнего кластера, и второй информации о подписке, являющейся информацией о том, что пользователь внешнего кластера подписывается на информирование о состоянии присутствия пользователя внутреннего кластера;
блок классификации информации, сконфигурированный для определения, является ли сообщение, передаваемое между пользователем внутреннего кластера и пользователем внешнего кластера, сообщением, относящимся к состоянию присутствия; и
блок передачи информации, сконфигурированный для передачи сообщения в соответствии с первой и второй информацией о подписке, если сообщение является сообщением, относящимся к состоянию присутствия.
2. Кластерный сервер по п.1, отличающийся тем, что:
первая информация о подписке является специфически информацией о регистрации соответствующих взаимоотношений между первым пользователем внутреннего кластера и вторым сервером мгновенного обмена сообщениями внешнего кластера, заключающихся в том, что первый пользователь подписывается на информирование о состоянии присутствия пользователя внешнего кластера, подключенного ко второму серверу мгновенного обмена сообщениями; и
вторая информация о подписке является специфически информацией о регистрации соответствующих взаимоотношений между первым пользователем и вторым кластерным сервером внешнего кластера, заключающихся в том, что пользователь внешнего кластера, прикрепленный ко второму кластерному серверу, подписывается на информирование о состоянии присутствия первого пользователя.
3. Кластерный сервер по п.2, отличающийся тем, что:
блок классификации информации дополнительно сконфигурирован для передачи первого сообщения на второй кластерный сервер в соответствии со второй информацией о подписке, если он определяет, что первое сообщение от первого пользователя к пользователю внешнего кластера является сообщением, относящимся к состоянию присутствия;
или блок классификации информации дополнительно сконфигурирован для передачи второго сообщения на первый сервер мгновенного обмена сообщениями, к которому подключен первый пользователь, в соответствии с первой информацией о подписке, если он определяет, что второе сообщение от пользователя внешнего кластера к пользователю внутреннего кластера является сообщением, относящимся к состоянию присутствия, и при этом второй сервер мгновенного обмена сообщениями работает как передающее устройство для передачи второго сообщения.
4. Кластерный сервер по п.3, отличающийся тем, что дополнительно содержит:
блок интерфейса внешнего обмена сообщениями, сконфигурированный для обеспечения интерфейса для обмена сообщениями с внешним кластером; и
блок распределения пользователей, сконфигурированный для выделения соответствующего сервера мгновенного обмена сообщениями пользователю внутреннего кластера;
при этом блок передачи информации дополнительно сконфигурирован для запрашивания третьего кластерного сервера, к которому через блок интерфейса внешнего обмена сообщениями прикреплен адресат первого сообщения, и для передачи первого сообщения на третий кластерный сервер, если первое сообщение является сообщением, не относящимся к состоянию присутствия;
или блок передачи информации дополнительно сконфигурирован для получения доступа к третьему серверу мгновенного обмена сообщениями, к которому адресат второго сообщения получает доступ через блок распределения для пользователей, и для передачи второго сообщения на третий сервер мгновенного обмена сообщениями, если второе сообщение является сообщением, не относящимся к состоянию присутствия.
5. Кластерный сервер по пп.3 или 4, отличающийся тем, что блок классификации информации дополнительно сконфигурирован для определения, является ли первое сообщение сообщением не реального времени, перед передачей первого сообщения.
6. Кластерный сервер по п.5, отличающийся тем, что блок передачи информации дополнительно сконфигурирован для хранения первого сообщения в соответствующей очереди ожидания из сообщений для передачи, если первое сообщение является сообщением не реального времени, и для сжатия очереди ожидания из сообщений для передачи в составное сообщение и передачи составного сообщения при достижении заданной длины очередью ожидания из сообщений для передачи.
7. Кластерный сервер по п.6, отличающийся тем, что блок передачи информации дополнительно сконфигурирован для разбивки второго сообщения на множество независимых сообщений, если второе сообщение является составным сообщением, перед тем, как блок классификации информации определяет, является ли второе сообщение сообщением, относящимся к состоянию присутствия.
8. Кластерный сервер по п.1, отличающийся тем, что кластерный сервер связан посредством канала связи с глобальным сервером, через который осуществляется запрос соответствующим кластерным сервером, с которым соединен пользователь внешнего кластера.
9. Способ обмена сообщениями между кластерами системы мгновенного обмена сообщениями, содержащий этапы:
получения сообщения, передаваемого между пользователем внутреннего кластера и пользователем внешнего кластера; и
если сообщение является сообщением, относящимся к состоянию присутствия, то - отправки данного сообщения в соответствии с первой предварительно сохраненной информацией о подписке, являющейся информацией о том, что пользователь внутреннего кластера подписывается на информирование о состоянии присутствия пользователя внешнего кластера, или в соответствии со второй предварительно сохраненной информацией о подписке, являющейся информацией о том, что пользователь внешнего кластера подписывается на информирование о состоянии присутствия пользователя внутреннего кластера.
10. Способ по п.9, отличающийся тем, что
первая информация о подписке является специфически информацией для регистрации соответствующих взаимоотношений между первым пользователем внутреннего кластера и вторым сервером мгновенного обмена сообщениями внешнего кластера, заключающихся в том, что первый пользователь подписывается на информирование о состоянии присутствия пользователя внешнего кластера, подключенного ко второму серверу мгновенного обмена сообщениями; и
вторая информация о подписке является информацией для записи соответствующих взаимоотношений между первым пользователем и вторым кластерным сервером внешнего кластера, заключающихся в том, что пользователь внешнего кластера, прикрепленный ко второму кластерному серверу, подписывается на информирование о состоянии присутствия первого пользователя.
Фильтр для очистки газов от пыли | 1989 |
|
SU1713621A1 |
CN 101287168 A, 15.10.2008 | |||
СИСТЕМА И СПОСОБ ДЛЯ ПРЕДОСТАВЛЕНИЯ ЧАСТНЫХ УВЕДОМЛЕНИЙ О ПРИСУТСТВИИ | 2003 |
|
RU2300140C2 |
RU 2005124472 A, 10.02.2007 | |||
СИСТЕМА И СПОСОБ ДЛЯ БЛИЗКОГО К РЕАЛЬНОМУ МАСШТАБУ ВРЕМЕНИ СБОРА ДАННЫХ И СООБЩЕНИЯ О ДЕЙСТВИЯХ БОЛЬШОГО ЧИСЛА АБОНЕНТОВ В ОТНОШЕНИИ ПОЛЬЗОВАНИЯ ТЕЛЕВИДЕНИЕМ | 2000 |
|
RU2257014C2 |
Колосоуборка | 1923 |
|
SU2009A1 |
Авторы
Даты
2014-03-10—Публикация
2009-12-24—Подача