Здравствуйте, мне нужно реализовать сетевую программу которая взаимодействует со своими копиями на других хостах, т.е. в целом получается некая распределенная система. Схему работы я представляют так:
- Считываем конфиг, из него получаем адреса узлов с которыми будем взаимодействовать и другие настройки
- Открываем прослушивающий сокет, на который будут поступать запросы от других "копий"
- Проверяем доступность узлов(т.е. запущенны ли на других узлах "копии")
- Основной цикл работы:
-- происходит блокировка на функции select() в ожидании входящих соединений, или истечение времени ожидания
-- Если есть новое соединение обрабатываем
-- Если истекло время ожидания, сами начинаем взаимодействовать с другими узлами по определенному алгоритму
-- Проверяем доступность других узлов(мало ли может кто отвалился)
И все бы неплохо, если реализовать это в лоб, но я хочу реализовать это в виде модульной системы, чтобы было удобно развивать код отсюда ряд вопросов:
Как спроектировать модульную систему?
Есть ли какие нибудь подходы?
Книги, статьи почитать на эту тему?
Писать все это дело планирую на С++