локальной сети с рандомным портом. И есть клиент, который должен создать список найденных серверов.
Сам вопрос в этом: как мне найти эти сервера? Подключаться через [1;MAX_PORT] портов и проверять, есть ли это сервером моего приложения?
А дерандомизировать порт нельзя?
твое приложение может разослать UDP бродкаст на хорошо известный серверам порт, сервера получают от тебя пакет сообщают информацию о себе.
Есть такая наука "service discovery" - существует центральный реестр всех серверов в виде "zuzu = 10.10.10.55:6152". Каждый сервер имеет имя. Все клиенты ищут это имя. Имя написано у сервака в конфиге. При старте сервак лезет в "реестр" и говорит: "я zuzu, 10.100.10.55:7171" и старая запись переписывается этой. Если в регистре запись протухла (20 минут не обновлялась) - сервера ("сервиса") нет. Например есть некий сервис "bububu" и известно что ему может быть посвящено до 10 физических демонов. Тогда договариваемся что у них имена в диапазоне "bububu0"..."bububu9". Клиенты лезут в service discovery и ищут первое существующее (или берут рандомом любое из всех в этом диапазоне) Похоже на DNS, ага. Можно заюзать некий redis (key=value хранилово). Херачим туда "zuzu=10.10.10.29:8171" ключики и ищем их. Таймаут на хранение ключа. Адрес данного service discovery server (этого redis) тоже лежит в конфиге каждого сервака - каждый сервант при старте знает куда себя прописывать и под каким именем.
Обсуждают сегодня