Форум сайта python.su
Привет.
Есть задача над которой думаю уже несколько дней и человеческого решения найти так и не могу.
Есть сервер балансировки нагрузки, он запущен на всех серверах в кластере, его задача - отдавать нагрузку сервера в момент времени.
Есть клиент который каждый n секунд обращается к серверу балансировки на каждом железном серваке, и формирует данные (список) нагрузки каждого сервера.
Есть веб сервер который относительно данных сформированных предыдущим клиентов распределяет юзверей по серверам.
Итак вопрос: данные по нагрузке хочется держать в памяти (вопрос к вам нужно ли это). Как это сделать?
Думал над тем чтобы запускать все 3 сервиса потоками из одной программы и данные держать в какой-то переменной, но опять таки не нашел как потоки могут обмениваться данными.
Офлайн
эти данные можно держать в отдельном процессе или на другом хосте, а юзать их через сеть (мемкеш). при этом не обязательно что-б запрос одного пользователя обрабатывался на конкретной машине.
Офлайн
o7412369815963насколько значительно вырастет время обращения по сравнению с вариантом когда эти данные будут держатся в памяти?
эти данные можно держать в отдельном процессе или на другом хосте, а юзать их через сеть (мемкеш).
Офлайн
pochechyevхз., но для конечного пользователя будет не ощутимо.o7412369815963насколько значительно вырастет время обращения по сравнению с вариантом когда эти данные будут держатся в памяти?
эти данные можно держать в отдельном процессе или на другом хосте, а юзать их через сеть (мемкеш).
Офлайн
o7412369815963взять готовое насколько я понимаю дорого, очень дорого.
судя по идее - это система для большой нагрузки, если так то сервер балансировки нужно описать на с++, а лучше взять готовое решение.
Офлайн
o7412369815963я парился и не смог понять, как использовать глобальную переменную если разнести классы которые будут выполнятся в разных потоках по разным файлам (модулям) ?
если данными нужно обмениваться между потоками одного процесса, то можно использовать глобальную переменную.
Офлайн
pochechyevа что на счет бесплатного и открытого, вон тот же апачь может и проксировать и балансироватьo7412369815963взять готовое насколько я понимаю дорого, очень дорого.
судя по идее - это система для большой нагрузки, если так то сервер балансировки нужно описать на с++, а лучше взять готовое решение.
по поводу плюсов - будем смотреть по нагрузке, возможно буду переписывать тонкие места на Сях
Офлайн
pochechyevсоздаешь переменную в отдельном модуле и импортируешь это модуль/переменную куда надоo7412369815963я парился и не смог понять, как использовать глобальную переменную если разнести классы которые будут выполнятся в разных потоках по разным файлам (модулям) ?
если данными нужно обмениваться между потоками одного процесса, то можно использовать глобальную переменную.
Офлайн