Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 29, 2009 11:50:26

pochechyev
От:
Зарегистрирован: 2008-02-29
Сообщения: 199
Репутация: +  0  -
Профиль   Отправить e-mail  

Данные в памяти.

Привет.
Есть задача над которой думаю уже несколько дней и человеческого решения найти так и не могу.
Есть сервер балансировки нагрузки, он запущен на всех серверах в кластере, его задача - отдавать нагрузку сервера в момент времени.
Есть клиент который каждый n секунд обращается к серверу балансировки на каждом железном серваке, и формирует данные (список) нагрузки каждого сервера.
Есть веб сервер который относительно данных сформированных предыдущим клиентов распределяет юзверей по серверам.

Итак вопрос: данные по нагрузке хочется держать в памяти (вопрос к вам нужно ли это). Как это сделать?

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



Офлайн

#2 Дек. 29, 2009 12:45:59

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Данные в памяти.

эти данные можно держать в отдельном процессе или на другом хосте, а юзать их через сеть (мемкеш). при этом не обязательно что-б запрос одного пользователя обрабатывался на конкретной машине.

Офлайн

#3 Дек. 29, 2009 12:52:40

pochechyev
От:
Зарегистрирован: 2008-02-29
Сообщения: 199
Репутация: +  0  -
Профиль   Отправить e-mail  

Данные в памяти.

o7412369815963
эти данные можно держать в отдельном процессе или на другом хосте, а юзать их через сеть (мемкеш).
насколько значительно вырастет время обращения по сравнению с вариантом когда эти данные будут держатся в памяти?



Офлайн

#4 Дек. 29, 2009 16:16:24

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Данные в памяти.

pochechyev
o7412369815963
эти данные можно держать в отдельном процессе или на другом хосте, а юзать их через сеть (мемкеш).
насколько значительно вырастет время обращения по сравнению с вариантом когда эти данные будут держатся в памяти?
хз., но для конечного пользователя будет не ощутимо.

если данными нужно обмениваться между потоками одного процесса, то можно использовать глобальную переменную.

судя по идее - это система для большой нагрузки, если так то сервер балансировки нужно описать на с++, а лучше взять готовое решение.

Офлайн

#5 Дек. 29, 2009 17:54:23

pochechyev
От:
Зарегистрирован: 2008-02-29
Сообщения: 199
Репутация: +  0  -
Профиль   Отправить e-mail  

Данные в памяти.

o7412369815963
судя по идее - это система для большой нагрузки, если так то сервер балансировки нужно описать на с++, а лучше взять готовое решение.
взять готовое насколько я понимаю дорого, очень дорого.
по поводу плюсов - будем смотреть по нагрузке, возможно буду переписывать тонкие места на Сях



Офлайн

#6 Дек. 29, 2009 18:00:05

pochechyev
От:
Зарегистрирован: 2008-02-29
Сообщения: 199
Репутация: +  0  -
Профиль   Отправить e-mail  

Данные в памяти.

o7412369815963
если данными нужно обмениваться между потоками одного процесса, то можно использовать глобальную переменную.
я парился и не смог понять, как использовать глобальную переменную если разнести классы которые будут выполнятся в разных потоках по разным файлам (модулям) ?



Офлайн

#7 Дек. 29, 2009 22:06:04

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Данные в памяти.

pochechyev
o7412369815963
судя по идее - это система для большой нагрузки, если так то сервер балансировки нужно описать на с++, а лучше взять готовое решение.
взять готовое насколько я понимаю дорого, очень дорого.
по поводу плюсов - будем смотреть по нагрузке, возможно буду переписывать тонкие места на Сях
а что на счет бесплатного и открытого, вон тот же апачь может и проксировать и балансировать

Офлайн

#8 Дек. 29, 2009 22:07:16

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Данные в памяти.

pochechyev
o7412369815963
если данными нужно обмениваться между потоками одного процесса, то можно использовать глобальную переменную.
я парился и не смог понять, как использовать глобальную переменную если разнести классы которые будут выполнятся в разных потоках по разным файлам (модулям) ?
создаешь переменную в отдельном модуле и импортируешь это модуль/переменную куда надо

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version