Существует ли общий или установленный алгоритм для одноранговых узлов в сети для выбора уникального «сетевого канала» (или любой другой формы полусекретного идентификатора)?
Я работаю в среде SecondLife. Я пытаюсь выяснить, как заставить множество идентичных одноранговых объектов согласовать номер «канала», который позволяет им формировать сеть, не мешая другим существующим сетям того же типа объектов.
Все объекты создаются примерно в одно и то же время и имеют доступ к (общему) системному времени.
Подходы, о которых я думал:
На основе времени создания. Канал получен (по md5) из времени unix. Проблема заключается в части "примерно в одно и то же время". Они могут быть созданы прямо на пороге новой секунды.
Случайное ожидание. Заставьте объекты ждать случайное количество времени и объявите (случайно сгенерированный) номер канала, выбранный первым, кто проснется. Проблема в том, что система имеет низкую степень детализации по времени, и до того, как объявление будет обработано, может проснуться более одного объекта.
Объедините 1 и 2. Объявите метку времени с высоким разрешением после ожидания случайного количества и получите канал из объявленной метки времени с наименьшим значением.
Это должно быть что-то более умное, чем думали люди, чем я. Есть ли лучший способ сделать это?