Здравствуйте, у меня есть вопрос, который после того, как я осмотрелся около двух дней, я не смог решить, поэтому я напишу его здесь как можно яснее, чтобы он мог помочь и другим.
Сценарий такой :
- У нас есть приложение, которое будет обрабатывать около 200 тыс. Устройств по протоколу amqp с использованием кластера Rabbitmq.
- Мы думали о наличии 1 Exchange с 200 тыс. Очередей и примерно 6 «ключами маршрутизации» каждая для устройств.
- Эти очереди должны быть устойчивыми и ленивыми, так как мы не хотим терять сообщения.
- Мы используем зеркальные узлы, поскольку нам нужна высокая доступность.
Тест:
- Я создал кластер из 5 узлов и репликации 2
"definition": {
"ha-mode": "exactly",
"ha-params": 2,
"ha-sync-mode": "automatic",
"ha-sync-batch-size": 1
}
Я также создал 50k длительных, ленивых очередей с ключами маршрутизации.
def create_one_queue(queue_name, threadName, channel):
channel.queue_declare(queue=queue_name, durable=True, arguments={'x-queue-mode': 'lazy'})
for bind in BINDINGS:
channel.queue_bind(exchange=EXCHANGE, queue=queue_name, routing_key=bind.format(queue_name))
print("[{}]Created Queue {}".format(threadName, queue_name))
def create_queues(threadName, base):
channel = get_channel()
for i in range(0, 1000):
try:
queue_name = str(i + base)
create_one_queue(queue_name, threadName, channel)
except Exception as e:
print(e)
3. When I tried to keep growing and arrive to 200k nodes start to crash without running out of resources.
Links
I already took a lok to the followings posts:
https://www.rabbitmq.com/ha.html#ways -to-configure
https://www.cloudamqp.com/blog/2018-01-09-part3-rabbitmq-best-practice-for-high-availability.html
RabbitMQ - сколько очередей RabbitMQ может обрабатывать на одном сервере?
https://serverfault.com/questions/378165/rabbitmq-reasonable-performance-scale-expectations
http://rabbitmq.1065348.n5.nabble.com/How-many-queues-can-one-broker-support-td21539.html
https://www.quora.com/RabbitMQ/Can-rabbitMQ-or-zeroMQ-handle-1mil-queues
но я вижу противоречия (cloudamqp предлагает использовать несколько очередей, но в в других местах указано, что вы можете прибыть в 1 миллион очередей)
Вопросы
- Как возможно, что кластер начнет трещать sh, если у меня не заканчиваются ресурсы?
- Мой подход неверен?
- Есть какие-нибудь советы по улучшению конфигурации моего кластера?
Большое спасибо