Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Сети > Параллельные ЭВМ


Автор: pakulo 22.7.2007, 14:05
Есть у меня программа-сервер, стоит она на одном сервере, преположим под FreeBSD,  и работает с БД Postgres, она нормально работает, но вот в один прекрасный день кол-во пользователей зашкаливает критическую черту, нужно вводить другой сервер. Поэтому и хотел бы для себя сейчас этот вопрос закрыть и возможно во время проектирования сервера это просчитать, что бы в дальнейшем не возникало проблем. 

Буду признателен за любою информацию. 
Просьба в Яндекс и иже подобные не отправлять, искал, коечто нашел, но это скорее всего информация для администраторов, т.е. как эти системы организовывать, но ни как под них писать ПО.

Спасибо!

Автор: witex 22.7.2007, 15:43
Предпологать не надо! А говори точно и что где стоит!
Ваабще первая реалия для тебя это вначале перебрать твоё ПО, для оптимизации уменьшить нагрузку! Во вторых поменять железо на серваке!

А ваабще поставь поставь ограничение на количество пгользователей! А онстальных в режим ожидания! Да и всё зависит от того какие функции у тебя сервер выполняет! Это всё таки важнее для нас информаци счас чтобы совет тебе дать!

Автор: pakulo 22.7.2007, 23:09
witex,  ну на счет разработки и оптимизации своего сервера это не проблема, здесь хоть есть литература, информации хватает.

 
Цитата(witex @  22.7.2007,  15:43 Найти цитируемый пост)
А ваабще поставь поставь ограничение на количество пгользователей!

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

Автор: jonie 23.7.2007, 00:18
скажем, посмотрите сервера jabber как сделаны (тот что ejabber)...исходники открыты....

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

или у Вас проблемы с СУБД ? Есть иные (вплоть до самописных на основе Berkeley DB - кстати для im систем имхо лучше чем "тормозные sql"....))....

p.s. имхо придумывать новые IM системы не надо, есть jabber 8) зачем изобретать велосипеды?

Автор: pakulo 23.7.2007, 11:35
Про велосипед, я знаю, здесь просто немного другая песня... Даже не просто немного, а совсем другая концепция, поэтому готовый продукт взять не выйдет. Исходники серверов джаббера я скачал, скачала даже сервер Iserverd ICQ (кстати, в документации там что-то про параллелизм написано). Но вы ж понимаете, что разобраться в готовом коде - это не один день, да и возможно ли такой специфический вопрос отыскать в коде без документации, я не уверен, вот поэтому и обратился за помощью к общественности smile.


Цитата(jonie @  23.7.2007,  00:18 Найти цитируемый пост)
а вообще можно сделать так? делаете сервер раздатчик (он говорит клиентам куда им предпочттельнее коннектится (на какой ip)), а сам он держит информацию о нагрузке на каждый сервер.... (там, скажем, сделано на mailRU).

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

Автор: jonie 23.7.2007, 11:59
Цитата

Но тогда такой вопрос, как разгрузить БД (если БД будет на одном отдельном сервере), или как сделать синхронизацию (если БД будет на разных машинах).
читайте про оптимизацию под высокие нагрузки, кластеризацию, масштабирование, репликацию и отказоустойчивость PostgreSQL.... или иная СУБД, как я уже замечал.. Это тема не для этого форума имхо...

Автор: pakulo 23.7.2007, 12:03
jonie, ок, понял, спасибо...

Тогда, возможно, будут еще предложения по организации параллельной работы сервера и его программирование smile?

Автор: jonie 23.7.2007, 21:07
если не думать то делаешь протокол связи сервер-сервер (s2s), и сервера функционируют раздельно (хотя и выглядят мб как одно целое)...надо лишь продумать как уведомлять серверN о том что юзер с сервераM отключился (N!=M)...а это уже выбирать память\скорость надо...т.о. возможно слинковывать сервера в масштабные сети и получать гемморой известный как "захват власти при сплите" (irc).
Или же делать реальный кластер из 2-х и более машин...есть системы для кластеризации......

Про паралельные вычисления почитать тоже имхо стоит (стандарт MPI (например, реализация в MPICH)). Там говориться о уведомлениях процессов о действии друг-друга (One2All Broadcast.. Scatter и прочие...)...гугл найдет. Вот там реальные распределенные вычисления.... В общем курс Распределенная Обработка Информации ВУЗовкий....

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)