Запрос
|
v
nginx
|
v
backend -----------------> service
Запрос приходит на nginx, mod_perl овый backend идет за контентом к service.
Если service тормозит, то на backend'е выстраиваются толпы апачей и всем плохо.
Но дело в том, что nginx знает с какими параметрами backend будет вызывать service
И вызов service можно сделать из nginx. А бекенд возьмет данные из кеша nginx'а
Запрос
|
v
nginx -----------------> service
| ^
| |
v |
backend
В этом случае при торможении service бекенду плохо не будет - все "зависшие" соединения останутся на nginx, который справляется со множеством соединений гораздо лучше апача...
Схема словами:
1) Приходит запрос на nginx.
2) Nginx знает из запроса с какими параметрами должен сходить backend к service.
3) Nginx прокачивает свой кэш нужным запросом
4) Nginx передает запрос backend'у
5) Backend идет за контентом не к service, а к nginx в его кэш.
6) Если в кэше не оказалось данных от service, схема вырождается в первую и фатальных ошибок не происходит.
Вот, что мне хочется.
Эээ, простите, а зачем тогда вообще в этой схеме backend если nginx все может(сможет) сам?