Как обрабатывать массовые вызовы БД при перезагрузке сервера?
Это вопрос дизайна.
У меня есть веб-приложение, которое использует веб-сокет, который поддерживает соединение с моим сервером. Когда пользователь подключается к веб-сокету, сервер вызывает Mysql DB для поиска информации о пользователе и кэширования информации о пользователе в течение 10 минут в памяти, поэтому, если пользователь обновляет страницу много раз в течение 10 минут, серверу не нужно снова вызывать DB.
Я использую один сервер, и обычно в любой момент времени через Интернет-сокет подключается 5 тысяч пользователей.
Когда происходит сбой и перезапуск сервера websocket, все клиенты будут пытаться переподключиться к websocket, как только сервер вернется к работе. Между тем, поскольку сервер был перезапущен, все кэшированные данные исчезли, сервер должен извлекать данные для всех пользователей из БД одновременно, а БД не справляется с обработкой большого числа одновременных вызовов.
Как мне справиться с таким сценарием? Один из способов, который я могу придумать, - это иметь другую службу кэширования, которая не будет аварийно завершать работу одновременно с сервером веб-сокетов.