Неблокирующие HTTP-вызовы в Storm с php - PullRequest
4 голосов
/ 29 марта 2012

Я оцениваю создание веб-сканера с использованием Storm (среда реального времени, а не IDE). My Spout будет доставлять поток URI, которые должны быть вызваны и извлечены в первом Bolt, который написан на php.

Исходя из фона node.js, я знаю, что такую ​​функциональность можно создать неблокирующим способом, используя обратные вызовы. Моей наивной идеей было бы просто настроить множество задач для этого болта, чтобы ресурсы могли быть полностью использованы, пока некоторые таксы ждут ответов. Проблема в том, что php известен тем, что выделяет много ресурсов для каждого процесса, и я понятия не имею, как Storm управляет этим внутренне, и если это хорошая идея.

Возможно ли в этой среде поведение, подобное node.js? Или мне нужно переключиться на другой язык, чтобы этот Болт достиг этого (и если да, то как мне это сделать)?

1 Ответ

1 голос
/ 24 февраля 2013

Я написал веб-сканер, который использует Storm и неблокирующие HTTP-вызовы, хотя и в Java. Мы использовали его в производстве, и он работает довольно хорошо.

У нас есть поток URL, поступающий из носика, который отправляется на гусеничные болты. Каждый болт будет делать неблокирующие HTTP-запросы, по которым я регистрирую обратный вызов, который будет отправлять результаты в выходные коллекторы. То есть да, вы можете делать неблокирующие операции ввода-вывода с помощью Storm.

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

Примечание: выходные коллекторы больше не являются поточно-ориентированными в последних версиях Storm, поэтому обязательно синхронизируйте их при асинхронной генерации файлов.

...