Nurked
@Nurked
Птица-говорун. Писец пером, программец компьютером

Как правильно настроить редирект на сервисы, если они принимают разные параметры?

Есть проблема. У меня есть приложение, написаное на velocity и внутри него есть следующий код:
#set($regular = true)
#if ($regular)
<frame src="webservice1.com/?id=123&name=misha" />
#else
<frame src="webservice2.com/?UserIdentifier=123&UserName=misha" />
#end


Бывает так, что webservice1 ложится медным тазом путём накрывания. В таком случае я иду в этот скрипт и меняю переменню $regular=false

Тупо — но хорошо работает. В таком случае webservice2 начинает принимать запросы от моего приложения.


Проблема в том, что второй сервис не предоставляет полного функционала и народ предпочитает первый, но первый падает.

Список параметров, передаваемый на сервис, одинаковый, но их имена разные. Переписать сервисы возможности нет.


У меня в сети крутится varnish, который ревностно следит за работоспособностью сервисов путём .probe — всё бы с этим хорошо, но я не могу создать нормальный director в varnish потому что я не могу разобрать параметры в прокси-сервере и пересобрать их заново. И вообще не для прокси-сервера это задача — рыться в параметрах.


Я могу написать свою страницу, типа webserviceredirector.vm и из неё перенаправлять, но я не знаю, как сделать что-то типа .probe в velocity. Тоесть пробингом занимается varnish, а перенаправлением java.


Вот теперь у меня вопрос: как всё это скрестить так, чтобы вышел хороший колючий ёжик нормальный редиректор, который будет пробовать сервисы и в случае их падения переключать их (на время пока сервис не поднимется обратно)?
  • Вопрос задан
  • 2901 просмотр
Решения вопроса 1
Nurked
@Nurked Автор вопроса
Птица-говорун. Писец пером, программец компьютером
Отвечая на свой вопрос… Если дело идёт о варнише, как о прокси, то тогда делается так в конфиге
set req.backend = webservice1;
if (req.backend.healthy)
{ 
     #redirect there 
}

set req.backend = webservice2;
if(req.backend.healthy)
{ 
     #change parameters with regex and redirect
}


Плюс страницы были переписаны, чтобы принимать одинаковые параметры и ниипаться больше. Спасибо мне большое.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@1nd1go
Мне кажется тут лучше написать что-то типа service adapter'а, который будет и probe делать (сам), выбирать нужный, и параметры перекидывать. А в src указывать «mysite/service?...»
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы