Высокая надежность веб-сервиса

Я хочу создать веб-сервис, который будет очень надежен для стороннего веб-сервиса. Высокая надежность здесь означает, что любой отдельный запрос от стороннего веб-сервиса будет успешно обработан моим веб-сервисом. Сторонняя служба не имеет механизма повторной попытки для неудачного запроса и не может изменить формат своего запроса (http POST с полями и значениями в теле).

Я не рассматриваю отказоустойчивое решение, такое как несколько узлов за балансировщиком нагрузки, удовлетворяющих требованиям, потому что один узел может выйти из строя, и балансировщик нагрузки все еще может направить запрос к нему до его удаления из пула.

Я рассматриваю возможность использования чего-то вроде Amazon SQS, который получает запрос от стороннего запроса и передает его моему веб-сервису, поскольку SQS имеет механизм повторных попыток. Однако трудности здесь заключаются в том, что SQS требует, чтобы содержимое было заполнено в параметре «Сообщение», и это не может быть достигнуто сторонней службой.

Может ли быть решение?


person James Chen    schedule 06.07.2013    source источник


Ответы (2)


Единственное реальное решение для обеспечения завершения запроса, которое я могу придумать, - это добавить оболочку к стороннему веб-сервису, чтобы он ДЕЙСТВИТЕЛЬНО имел механизм повторных попыток. Любое другое решение, включая HA, будет иметь точку отказа. Учтите, что в случае сбоя службы Amazon SQS у вас все равно будет сторонняя веб-служба, которая будет запрашивать информацию у неработающей службы и завершаться ошибкой.

person Daniel Widrick    schedule 06.07.2013

Я не рассматриваю отказоустойчивое решение, такое как несколько узлов за балансировщиком нагрузки, удовлетворяющих требованиям, потому что один узел может выйти из строя, и балансировщик нагрузки все еще может направить запрос к нему до его удаления из пула.

Как вы думаете, на что похожа архитектура SQS? У них есть передние концы за балансировщиками нагрузки. Если внешний интерфейс выйдет из строя, эти запросы не будут выполнены. SQS по-прежнему отличается высокой доступностью, потому что если вы повторите запрос, он, скорее всего, будет успешным. Чтобы не показывать ошибки пользователям, вы должны встроить повторные попытки на стороне клиента.

person tster    schedule 19.07.2013