У меня есть простое веб-приложение, все запросы к этому приложению основаны на HTTP (RESTfull API и стандартный ajax)
У меня есть haproxy перед моим кластером tomcat.
Итак, теперь у меня есть клиенты, которые http-запрос от моего балансировщика нагрузки и балансировщика нагрузки затем перенаправляют его на мой веб-сервер (tomcat)
У меня вопрос:
Можно ли сделать протокол связи между балансировщиком нагрузки (haproxy) и моим котом намного быстрее, чем http? может tcp? и по-прежнему сохраняйте поток http-запросов моих клиентов прямо на мой балансировщик нагрузки.
РЕДАКТИРОВАТЬ
Если я не ошибаюсь, карта протокола выглядит примерно так:
Клиент - (HTTP) ----> Haproxy - (HTTP) ---> tomcat
Я хотел бы использовать tcp для повышения производительности, например:
Клиент - (HTTP) ----> Haproxy - (TCP) ---> tomcat
Разве вторая карта не намного быстрее первой? но возможно ли это?
Проходящие данные (почти) одинаковы, независимо от того, настроили ли вы HAProxy на HTTP или TCP.
Как вы думаете, это будет быстрее, потому что HAProxy не интерпретирует HTTP-трафик? Я сомневаюсь, что вы сможете ощутить какую-либо разницу в производительности, если вы не используете ACL или иным образом не обеспечиваете дополнительную обработку (от которой вы все равно откажетесь с TCP), и даже тогда я был бы удивлен.
Я думаю, единственное отличие будет заключаться в том, что в режиме TCP HAProxy не будет добавлять X-Forwarded-For
заголовок, поэтому вы потеряете эту информацию, а в режиме HTTP он может блокировать недопустимые или искаженные запросы, поэтому вы добавляете некоторый риск, передавая их.
В Веб-сайт HAProxy предоставляет подробную статистику производительности
Intel C2D E8200 / 2,66 ГГц
82702 HTTP-запросов в секунду, при этом доступно около 20% ЦП
Если у вас возникли проблемы с производительностью, я думаю, вам, возможно, придется поискать в другом месте настройки или предоставить более подробную информацию о проблеме, которую вы наблюдаете.