Более общее решение заключается в использовании системы балансировки нагрузки, то есть: у вас есть N экземпляров приложения, работающего с одинаковыми привилегиями (если возможно, на другом оборудовании), тогда избыточный балансировщик нагрузки выбирает один из тех, которые основаны на фактической нагрузке для каждого запроса/задачи.
Преимущество этого решения, очевидно, в том, что аппаратное обеспечение фактически используется и не сидит где-то в режиме ожидания, ожидая в случае 0,01% для перехода. Затем экземпляр фактически протестирован все время, и будут сообщены ошибки когда они происходят (например, неисправное оборудование), и вы предотвращаете: «О ... резервная копия даже не работает». И вдобавок к этому вы аккуратно балансируете нагрузку между машинами.
Таким образом, приложение работает как сервер, но не использует существующую инфраструктуру сервера? – Thomas
Если я предполагаю, что правильно, всегда существует работающий сервер, если клиент существует. Но это означает, что у него должен быть какой-то слушатель для входящих проверок. Так почему бы не оставить его на главном сервере в первую очередь? Есть ли несколько «главных серверов»? – Dropout
, пожалуйста, посмотрите на аналогичный вопрос данной ссылки http://stackoverflow.com/questions/11904299/heartbeat-mechanism-in-java –