Серверное приложение+дб |
Здравствуйте, гость ( Вход | Регистрация )
Серверное приложение+дб |
weldpua2008 |
17.1.2009, 3:04
Сообщение
#1
|
Новичок Группа: Новичок Сообщений: 3 Регистрация: 17.1.2009 Пользователь №: 493 Спасибо сказали: 0 раз(а) Репутация: 0 |
Привет всем
Нужно написать серверное приложение к которому будит обращаться клиенты. В общем это информационный сервер который информирует пользователей в локальной сети о каких-то событиях и о остатке на счету. Клиентскую часть Я собираюсь реализовывать на qt4. Возможности - просмотреть текущий остаток на счету, отправлять на сервер информацию о подключении пользователя(alive) каждые 10-60 сек и в этот момент спрашивать сервер - нет ли сообщений, если есть - вывести их(замегать, пикнуть) Серверная часть - тут Я теряюсь... ОС будет - Linux or FreeBSD, но FreeBSD скорее всего. На чем писать?Я пробовал на ANSI C++ - сложно, Сложно у Меня получалось работать с Mysql... Попробовал qt4 - очень легко... Но что мудрые скажут про qt4 для серверного приложения? Серверная часть должна: авторизировать пользователя,узнать его ip/mac и записать (один раз за подключение)... выполнять запросы: узнать остаток на счету узнать какие сообшения для этого пользователя узнать какие сообшения для всех пользователей И отослать это клиенту |
|
|
Litkevich Yuriy |
17.1.2009, 5:10
Сообщение
#2
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
Но что мудрые скажут про qt4 для серверного приложения? один из пользователей эксперементально установил, что высоконагруженный сервер на Qt4 - реальность:вообще сервер работает быстро и надёжно) сколько бы не подключалось клиентов, пакеты им приходят моментально!)
|
|
|
weldpua2008 |
17.1.2009, 23:16
Сообщение
#3
|
Новичок Группа: Новичок Сообщений: 3 Регистрация: 17.1.2009 Пользователь №: 493 Спасибо сказали: 0 раз(а) Репутация: 0 |
А что посоветуете почитать по теме разработки серверов?
Задача: Что бы данный сервер мог обслуживать до 2000 человек(2-х кратный запас). Идея у меня такая: Клиентское ПО подключается к серверу и авторизуется на нем (сервер раз в 1минуту обновляет кеш пар логин пароль из базы данных) если авторизация н раз безуспешная - надо блокировать доступ к серверу с этого ип на 5-ть минут(внешним скриптом)... Если успешная делаем INSERT into ... в общем то пользователь в онлайне, так мы избавляемся от того что пользователи бесконеное количество раз авторизируются...Дальше сервер говорит когда ему подключится в следующий раз ( запросить данные)... Так же для контроля нагрузки сервер сам будет определять когда клиенту забирать инфу Типо имеем эмпирические значения, если пользователей 1000 в онлайне, то можно подключатся(получать инфу из базу данных) только 20-ти одновременно, а остальным позже... И держать у Себя счетчики на 2 мин вперед... так: Отослал управляющее сообщение пользователю запросить данные через 1 минуту, счетчик со значением 59(например) увеличил на единицу, если счетчик имеет значение больше максимального - смотрим следующий счетчик... Максимальное значение = чел в онлайне/ 60 допустим... Хотя может Я сильно усложняю?... Если пользователь обратился за упр информацией, то проверяем внутренний счетчик - не превысило ли количество одновременных запросов информации критическое количество...Ну может взломали клиентское ПО и решили заДДОСИТЬ...Или Я не знаю, произошел кратковременный сбой в сети, и ...блин надо почитать про это внимательно будет... клиенты еще не отвалились от сервера(когда это произойдет?), и повторили свои запросы за н секунд, а сервер должен их отработать...и та очередь которую сервер сформировал - будет нарушена... Дальше надо получить все сообщения для пользователя из базы данных, думаю что так будет оптимально: SELECT `all`,`user`,`system`,`ostatok` from `massage` WHERE `user`='user' LIMIT 1; и отдавать... Вот нарыл статейку: http://www.opennet.ru/base/dev/server_way.txt.html Но никак не могу найти простые примеры. Я имею ввиду не исходники apache2,mysql ... т.д. Есть в doc-ах по qt4/3 пример Threaded Fortune Server Example, но насколько Я понял это Мне не подойдет... ЗЫ: Я вот только не пойму Threaded Fortune Server Example справится ли такой вариант? или ему нужно слишком много ресурсов? |
|
|
Andrew Selivanov |
19.1.2009, 17:16
Сообщение
#4
|
Участник Группа: Участник Сообщений: 249 Регистрация: 9.10.2007 Из: Москва Пользователь №: 3 Спасибо сказали: 15 раз(а) Репутация: 6 |
А что посоветуете почитать по теме разработки серверов? <...>тут было много текста<...> Не вдаваясь в дебри технических подробностей могу посоветовать тебе следующее: Выкинь нахрен все придуманные фичи и реализуй только главный функционал. Иначе ты просто запутаешься и потонешь. Старый, добрый: "От простого к сложному". По поводу сервера - не придумывай количество заранее. Абстрактные 2000 человек - они у тебя могут за минуту набрести а могут и не набрести. И 2000 пользователей/минута - ну это не слишком большая циферка для браузинга. Подумай сколько реально данных будет передаваться по сети и выбираться из базы... не слишком много скорее всего. Если ты скорость обновления в два раза снижаешь... то и нагрузка падает... так что про минуту на обновление тоже можно пока забыть. Не ставь искусственных рамок сам себе - иначе рискуешь остаться с нерешённой задачкой. PS: думаю qt подойдёт, если особо в нем не стопориться. Сообщение отредактировал Andrew Selivanov - 19.1.2009, 17:17 |
|
|
weldpua2008 |
20.1.2009, 0:47
Сообщение
#5
|
Новичок Группа: Новичок Сообщений: 3 Регистрация: 17.1.2009 Пользователь №: 493 Спасибо сказали: 0 раз(а) Репутация: 0 |
Не вдаваясь в дебри технических подробностей могу посоветовать тебе следующее: Выкинь нахрен все придуманные фичи и реализуй только главный функционал. Иначе ты просто запутаешься и потонешь. Старый, добрый: "От простого к сложному". Ну дык самое простое это какая модель треды/форк/FSM... - Я сейчас просто знаю, что это есть, а что будет оптимально могли б старожилы подсказать... +Как реализовать... 1000 онлайн сессий Я не случайно указал и то что это не основное условие тоже...У клиента будет висеть включенная прога которая будет переодически о чем-о ему сообщать + в ней он сможет увидеть остаток на счету и пополнится... |
|
|
Tonal |
20.1.2009, 10:54
Сообщение
#6
|
Активный участник Группа: Участник Сообщений: 452 Регистрация: 6.12.2007 Из: Новосибирск Пользователь №: 34 Спасибо сказали: 69 раз(а) Репутация: 17 |
Я бы всё таки посоветовал Apache + PHP/Python.
Там на порядок проще работать и с базами и с сетью. К тому же сразу можешь сделать веб-морду. |
|
|
Текстовая версия | Сейчас: 29.11.2024, 1:58 |