Вторая коммуникационная служба

Вторая коммуникационная служба, всегда присутствующая в стеке Darkstar, – служба каналов. Каналы относятся к типу коммуникаций «один ко многим». На концептуальном уровне к каналу может присоединиться любое количество клиентов, а любое передаваемое по каналу сообщение доставляется всем подключенным к нему клиентам. На первый взгляд кажется, что ситуация идеально подходит для технологий одноранговых коммуникаций, которые позволяют клиентам напрямую взаимодействовать друг с другом, не создавая нагрузки на сервер. Однако такие взаимодействия должны контролироваться кодом, который следит за тем, чтобы клиенты не обменивались недопустимыми сообщениями и не мошенничали за счет использования разных клиентских реализаций. Предполагается, что клиент находится под контролем пользователя или игрока, поэтому доверять коду на клиенте нельзя – исходный клиентский код легко подменяется другой, «адаптированной» версией. Следовательно, все сообщения каналов все равно должны проходить через сервер, а их «благонадежность» должна проверяться серверной логикой.

Одна из сложностей, связанных с использованием каналов и сеансов, заключается в том, что они должны соблюдать транзакционную семантику задач. Таким образом, фактическая передача сообщения по сеансовой линии или каналу не может происходить при вызове соответствующего метода send(); она может происходить только при закреплении транзакции той задачи, в которой вызывается этот метод.

С реализацией этих коммуникационных механизмов в нашем распоряжении появляются некоторые компоненты, необходимые для второй части механизма масштабирования. Поскольку все коммуникации должны проходить через абстракции сеансов или каналов Darkstar и поскольку эти абстракции не предоставляют клиенту или серверу доступ к фактическим конечным точкам обмена данными, между взаимодействующими сущностями и фактическим началом/концом передачи данных появляется абстрактная прослойка. Это означает, что конечную точку коммуникаций с сервером можно переместить с одного компьютера системы Darkstar на другой, не влияя на представление клиента о передаче данных. С точки зрения клиента все взаимодействия происходят в конкретном сеансе или канале. С точки зрения игры или логики виртуального мира взаимодействия также осуществляются через один сеанс или канал. Однако инфраструктура нижнего уровня может переместить сеанс или канал с одного компьютера на другой, чтобы обеспечить перераспределение нагрузки по мере ее изменения со временем.

Related posts:

  1. Служба стекового уровня
  2. Коммуникационные службы

Подпишитесь на рассылку по почте:

Введите свой адрес почты, чтобы получать уведомления о новых статьях.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>