Я уже некоторое время использую RabbitMQ (AMQP) с моими проектами ruby, в любом случае, я только что слышал о кластеризации RabbitMQ, любой может рассказать мне об этом простыми словами, мне нужно знать разницу между запуском обычного сервера RabbitMQ и кластеризация RabbitMQ, зачем она мне нужна и как ее реализовать.
Мне нужно, чтобы мое решение было масштабируемым и обрабатывало так много запросов, я думал о следующей реализации и хотел бы знать, как реализовать такую вещь:
HA proxy->3 Clustered RabbitMQ instances
Какой самый быстрый способ, наряду с лучшим выбором веб-сервера ruby, обрабатывает запрос и просто анализирует его и отправляет в соответствующую очередь.
С моей текущей реализацией я использую Тонкий сервер и делаю что-то вроде следующего, но ищу лучшую архитектуру, которая является более быстрой и более масштабируемой:
require "bunny"
require "thin"
@amqp ||= Bunny.new(:logging => false)
@amqp.start
@direct_exchange ||= @amqp.exchange('')
app = Proc.new do |env|
req = Rack::Request.new(env).params
command = req['command'].strip rescue "no command"
number = req['number'].strip rescue "no number"
if command =~ /\A(create|c|r|register)\z/i
@direct_exchange.publish(number, :key => "create")
elsif command =~ /\A(update|u)\z/i
@direct_exchange.publish(number , :key => "refresh")
end
[200, {'Content-Type' => "text/plain"} , command ]
end
Rack::Handler::Thin.run(app, :Port => 4001)
Я уверен, что есть лучшая реализация.
Любая помощь / подсказка будет принята с благодарностью.
Заранее спасибо