Правильный способ масштабирования приложения торнадо Python - PullRequest
3 голосов
/ 26 декабря 2011

Я ищу способ масштабирования одного экземпляра приложения торнадо для многих. У меня есть 5 серверов, и я хочу запускать на каждом из 4 экземпляров приложения. Главная проблема, которую я не знаю, как решить - это правильно установить связь между экземплярами. Я вижу следующие подходы, чтобы сделать это:

  • Используйте memcached для обмена данными. Я не думаю, что этот подход хорош, потому что большой трафик будет идти на сервер с memcached. Поэтому в будущем могут возникнуть проблемы, связанные с торговлей людьми.
  • Открытые сокеты между каждым экземпляром. Для меня будет слишком сложно поддерживать такой способ общения.
  • Используйте такие инструменты, как ZeroMQ . Я не знаком с этой технологией. Это может быть способ масштабировать приложение между серверами?

Ответы [ 2 ]

2 голосов
/ 26 декабря 2011

Я на самом деле смотрю на нечто подобное, и мысль, которую я придумал, заключается в следующем.Используйте модуль многопроцессорной обработки Python (http://docs.python.org/library/multiprocessing.html), чтобы таким образом связать процессы на отдельных серверах.Затем используйте сервер memcached для конкретных данных сеанса.(SessionIDs, IP-информация, информация, используемая для привязки сеанса к конкретному пользователю и к потоку активности, который они используют). Остальные - данные, полученные из экземпляра БД.

0 голосов
/ 27 мая 2016

Что вы можете сделать, это для каждого сервера, на котором вы запускаете экземпляр memcached и экземпляр tornado. Сделайте экземпляры memcached "Master replicate" друг с другом, используя repcached, чтобы каждый экземпляр торнадо мог получить доступ к данным memcached со своего компьютера. Четыре сервера для экземпляров торнадо и memcached и пятый для запуска haproxy для балансировки нагрузки остальных.

www.haproxy.org /

repcached.lab.klab.org /

...