Нужно ли использовать очереди в node.js
Я слышал, что в python и php на бекенде используются очереди, в питоне это например rabbitmq. Нужно ли использовать подобные очереди или node.js в виду своей ассинхронности в таком не нуждается?
Ответы (1 шт):
Ассинхронность и очередь это разные понятия. Асинхронностью называют вызов метода не блокируя вызывающий поток. Очередь - выполнение команд последовательно. Любой вызов может заблокировать вызываемый объект (таблицу, переменную, файл, ...). Для чего служит очередь в этом случае. Она служит только для последовательного выполнения (который сам может при не умелом обращении заблокировать объекты).
Пример. Мясорубка - у вас несколько клиентов закидывают продукты в неё. Асинхронность в данном примере это то что клиенты не дожидаются окончания работы просто делают заказы и оставляет контакты для дальнейших действий. Очередь - это оператор мясорубки который не торопливо последовательно обрабатывает заказы. Так вот из примера видно что даже у вас процесс асинхронный он не гарантирует не переполнение мясорубки. Тоже самое и с оператором (что если дурак) очередь не гарантирует также не переполнение мясорубки. Вывод - надежный оператор нужен в случаях когда у вас клиентов много и мясорубка сама не справляется с заказами в остальных случаях никто вам не запрещает пользоваться синхронностью, когда клиент ожидает окончание работы.