Некоторые твердые ответы здесь.Я думаю, что больше оборудования - это путь.Наличие слишком большого количества клиентов или трафика обычно - хорошая проблема.
Однако, если вам абсолютно необходимо ограничить число клиентов, есть несколько вариантов.
Наиболее масштабируемые решенияЯ видел вращение вокруг распределенной системы кэширования, такой как Memcached, и использования целых чисел для подсчета.
Выясните, с какой скоростью ваша система может обрабатывать трафик.Либо в целом, либо для каждого клиента.Затем поместите счет в memcached, который представляет эту скорость.Каждый раз, когда вы получаете запрос, уменьшайте значение.Периодически увеличивайте счетчик, чтобы пропускать больше трафика.
Например, если вы можете обрабатывать 10 запросов в секунду, ставьте счетчик 50 каждые 5 секунд, максимум до 50. Таким образом, вы не 'Не пополняйте его все время, но вы также можете справиться с небольшим разрывом, ограниченным окном.Вам нужно будет поэкспериментировать, чтобы найти хорошую частоту обновления.Ключ для этого счетчика может быть либо глобальным ключом, либо основанным на идентификаторе пользователя, если вам нужно ограничить этот способ.
Приятной особенностью этой системы является то, что она работает во всем кластере, и механизм, который пополняет счетчики, не обязательно должен находиться на одном из ваших текущих серверов.Вы можете посвятить этому отдельный процесс.Загруженные серверы должны только проверить это и уменьшить его.
Несмотря на это, я бы сначала изучил другие варианты.Удушение ваших клиентов - это обычно хороший способ раздражать их.Скорее всего, НЕ лучшая идея.:)