Здесь лежат три отдельных исполняемых файла, для того, чтобы сбилдить проект я с помощью vscode и расширения cmake tools просто через command pallete делал clean rebuild. Создастся папка с билдом как отдельная папка наравне с источниками(balancer, client, server).
Клиент и сервер - это просто чтобы проверить работоспособность балансировщика. Клиент запускается с аргументом - сколько раз в секунду он отправляет сообщения. Сервер запускается с аргументом - на каком он будет сидеть порте.
Файл конфигурации - любой файл(можно даже без расширения), но я по привычке с винды делал файлы конфигурации .txt. Выглядеть он должен как-то так:
config:
port=8888
servers=8889, 8890, 8891
N=10
лишние строки будут игнорироваться(будет выводиться предупреждение в консоль)
Путь к файлу конфигурации указывается как аргумент при запуске балансировщика.
Если запускать все три программы выглядеть это будет примерно так:
Балансировщик
~/testovoe/build/balancer/balancer ./config
Клиент
~/testovoe/build/client/client 5
Сервер
~/testovoe/build/server/server 8889
Прерываются работы всех трех программ сочетанием клавиш control+C
Распределяются пакеты при помощи системы round robin, по сути просто вне зависимости от работоспособности серверов на них отправляются пакеты по очереди (на первый, потом на второй, потом на третий и т.д.)