2013-03-08 3 views
6

Попытка горизонтально масштабировать экземпляр Redis, работающий как сервер задач для Python-RQ.Горизонтальное масштабирование или строгание Python-RQ или Redis с Python

Насколько я знаю, лучший способ сделать это было бы добавить сегментирование логику (скорее всего, с помощью Consistent Hashing) в обычае ConnectionPool и/или Connection класса. Я предпочел бы использовать библиотеку для механизма Consistent Hashing - поскольку это похоже на то, что, вероятно, должно быть доступно и, скорее всего, лучше/более проверено на битву, чем домашнее решение.

Что было бы хорошим шаблоном, чтобы сделать что-то вроде этого? Есть ли какая-то библиотека, на которую я должен смотреть? Есть ли что-то, что мне не хватает, что я должен принимать во внимание?

Большое спасибо!

ответ

2

Думаю, вам нужно иметь пару вещей в виду.

Первый вопрос о том, где ваше узкое место и почему вы должны указать способ архитектуры разделов на ваш сервер Redis под одной парадигмой Python-Rq. Я думаю, что Redis имеет достаточно performance, чтобы полагать, что загрузочное окно должно быть в вашем количестве рабочих и количестве рабочих мест, которые вы хотите обрабатывать в данный момент времени.

Вы можете сказать: сколько времени я могу подождать, пока это задание не будет обработано? Если вы можете определить это значение, задержка. У вас будет ключ для добавления/большего количества узлов в вашу архитектуру.

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

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

+0

Да, я думаю, что это важная часть проблемы, которую нужно учитывать. Тем не менее, я не думаю, что он отвечает на мой вопрос: как разрешить приложение горизонтально масштабироваться с помощью RQ? Какую технику я должен придерживаться, чтобы сделать это? –

+0

Но какой ресурс вы хотите масштабировать в своем приложении? – pfreixes

Смежные вопросы