Очереди: Beanstalk vs. MemcacheQ

Очереди чрезвычайно полезны в ликвидации узких мест в производительных пайплайнах. В данном случае это не трубопровод, а технологическая цепочка, где общая производительность определяется производительностью самого медленного звена. Очередь сообщений, или задач, позволяет как бы организовать перемычку, исключив медленное звено, отложив его задачу на потом, отдельному обработчику (воркеру).

Традиционно использование очередей иллюстрируется фоновой отправкой почты, особенно массовой рассылкой. Но есть и другие задачи, например обслуживание кэша, которое обычно производится заодно с его использованием, что не очень хорошо для производительности. Думаю, любой разработчик при желании найдет в своих пайплайнах узкие места, которые захочет зашунтировать, отложив их выполнение на потом.

Я не рассматриваю php-шный Gearman. Возможно, для него и есть адекватные задачи, но уж всяко не в хайлоаде. Тут адекватны легкие движки очередей, два из которых обозначены в заголовке. Я не занимался их сравнительным тестированием. Но есть весьма серьезные аргументы в пользу MemcacheQ. У Beanstalk есть клиенты для почти всего, что можно пожелать — и php, и ruby, и Node.js, и .Net/C#, и Lua… Но, зато, MemcacheQ можно пользоваться вообще без клиентов. Поскольку он основан на протоколе memcache, Nginx умеет транслировать запросы к нему сам, либо с помощью подключаемого модуля memc.

И уж это точно на порядок быстрее, чем вызывать тяжелый бэкграунд, вроде php, с драйверами в придачу.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *