Подтвердить что ты не робот

Хорошая платформа с открытым исходным кодом?

Кто-нибудь знает о хорошем и надежном сервере/платформе для массового обслуживания с открытым исходным кодом?

Я работаю над проектом, который нам нужно обрабатывать миллионы элементов из очереди в день. Моя задача состоит в том, что очередь не является FIFO, что означает, что новые элементы имеют приоритет и могут быть вставлены где-то посередине очереди. Кроме того, для обработки этих элементов мы будем использовать параллельную серверную платформу распространения, поэтому очередь должна быть доступна со многих серверов.

4b9b3361

Ответ 1

Как упоминает @davidnicol, вы можете использовать базу данных; хотя недостаток с базой данных делает большую балансировку нагрузки по многим потокам/процессам, это довольно сложно; вы часто получаете один поток, блокирующий головку очереди, делая отправку немного одиночной.

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

Если вы отправляете маршрут очереди сообщений; то Apache ActiveMQ является самой популярной версией с открытым исходным кодом, и я бы рекомендовал начать с того, что получил самое большое и самое активное сообщество (моя личная любимая метрика для выбора между аналогичными проектами с открытым исходным кодом).

Существуют различные способы реализовать очереди приоритетов с помощью ActiveMQ - основной компромисс заключается в том, что вы можете справиться с задержкой Образец шаблона Resequencer вводит или просто использует селекторы, а различные пулы процессов/потоков для разных диапазонов приоритетов - лучшее решение с низкой задержкой.

В то время как реализация селектора не является самой чистой реализацией очереди очередности - она ​​на практике работает лучше, поскольку она позволяет избежать ожиданий, когда сообщения с более высоким приоритетом будут всплывать; плюс он избегает сообщений с низким приоритетом, которые занимают много времени, чтобы обрабатывать процессоры.

Ответ 2

ActiveMQ - неплохой продукт: легко настраивается, легко развертывается, легко работать. Clusterizable, многие поддерживаемые протоколы и т.д. Мы пытаемся его создать, кажется надежным (с его собственными проблемами, но не так много)

Я пробовал JBoss Messaging, но мне было намного сложнее в использовании и менее зрело (это рефакторинг JBoss MQ, и он не совсем стабилен и закончен...)

[Изменить] Извините, я не читал ваш вопрос с достаточным вниманием... Я проверял спецификацию JMS: он выполняет приоритетное упорядочение сообщения, но в JMS есть только 10 уровней приоритета, а разработчики - не принуждали их уважать (я не проверял, что делает AMQ) Но управление приоритетами также может быть достигнуто с использованием разных очередей... [/Edit]

Ответ 4

Помимо ActiveMQ, который должен работать для ваших требований, вы также можете взглянуть на RabbitMQ или OpenAMQ.

Ответ 5

Мне нравится идея Gaius об амазонах SQS, однако она имеет большую задержку между сообщениями. Некоторые тесты показывают 15-30 секунд сообщение, которое происходит медленнее, чем сообщение min. Поэтому, если скорость является проблемой, вы можете запустить собственный MOM.

Я бы порекомендовал ActiveMQ из Apache. Мы сделали тесты, и его скорости довольно близки к соединениям сокетов. Никогда не использовали его в приложении с крупным масштабом производства.

Ответ 6

Кстати, другой аспект вашего вопроса - это то, что API использовать для обсуждения любой технологии, которую вы выберете.

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

Ответ 7

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