Проблема "снежного кома"
От: Аноним  
Дата: 06.07.04 16:59
Оценка:
Собственно, думаю, как грамотно побороть сабж. Ситуация такая:

Есть сервер на клиентской машине, слушающий входящие подключения. Есть сеть таких серверов. Каждый сервер держит на своей машине список других серверов в сети (P2P, в общем).

Серверу приходит пакет, содержащий IP нового клиента. Сервер должен добавить этот IP в список клиентов и переслать этот IP всем серверам в сети (естественно, кроме того, который прислал ему этот пакет).

Получается проблема "снежного кома": уже на втором шаге на наш сервер может еще раз придти пакет с этим-же IP (от третьего сервера, например). Это не проблема: сохраняем пул обработанных запросов и если этот пакет уже был отправлен остальным серверам — просто ничего не делаем.

Проблема в другом: кол-во гоняемых по сети пакетов. По первым прикидках из расчета 10 серверов получаем максимальное кол-во гоняемых туда/сюда пакетов около 80 (!).

Вопрос: что можно сделать, чтобы существенно сократить кол-во пересылаемых пакетов с учетом необходимости иметь на каждом сервере актуальный список клиентов? Сеть одноранговая и главного сервера нет, т.е. нет централизованной обработки пула клиентов.

Как быть?

З.Ы. Пакеты маленькие и очень нежелательно их раздувать за счет включения в них маршрута прохождения пакета.
З.З.Ы. Протокол — TCP. UDP не предлагать — задача стоит именно на TCP.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.