2012-03-29 6 views
4

Я оцениваю создание веб-браузера с использованием Storm (среда реального времени, а не IDE). Мой носик доставит поток URI, который должен быть вызван и найден в первом болте, который написан на php.Неблокирующие HTTP-вызовы в Storm с php

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

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

ответ

1

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

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

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

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