Не удалось найти ничего по этой теме.
У меня есть серверное приложение Windows TCP C ++, которое я хочу время от времени обновлять.
Как вы, очевидно, понимаете, это создает проблему - сервер должен работать круглосуточно с точки зрения пользователей.
При обновлении также желательно сохранить текущие TCP-соединения с пользователями.
Я думал о модульной системе, поэтому, например, модуль обработки сокетов будет находиться в «sockets.dll», логика сервера - в «logic.dll».
Путь к такому подходу выглядит как открытие ящика Пандоры;
- Как я буду делать фактическую «замену» модулей? Представьте себе, что рабочие потоки X продолжают отправлять данные из одного модуля в другой - при замене мне понадобится (легкий и быстрый) способ остановить / приостановить их; сигналы могут быть?
- Версия протокола или даже подпись функций могут измениться при обновлении. Как справиться с этим?
- Другие проблемы, такие как незаметные логические ошибки.
- Кто знает, возникнут и другие проблемы.
Помимо вышесказанного у меня есть проблемы, например, как мне обновить скажем 10 серверов? Я имею в виду, они все связаны друг с другом, общаются.
Если обновление вводит модификацию протокола, это может вызвать огромные проблемы, и в этом случае мне потребуется обновить весь кластер (серверов) в целом; отключить всю операцию? Это не звучит правильно, вообще! Как я могу это сделать? Какую концепцию (ы) я здесь упускаю и как мне это / их узнать?
Что я могу с этим поделать?
Чтобы ты делал? Вы сделали такую вещь?
Знаете ли вы какой-либо механизм / статья / проект / источник-пример / и т. Д. ', Который решает проблему?
Любой ценный совет высоко ценится!