Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.10.2014, 11:31   #1
Crunkordie
Пользователь
 
Регистрация: 18.02.2011
Сообщений: 48
Вопрос Клиент-серверная архитектура. Оптимальное решение задачи.

Здравствуйте.
Есть программа-клиент, которая собирает некую информацию (txt файл размером ~20 кб). Таких программ установлено на более чем 200 компьютерах.
Сейчас схема следующая:
1.Клиент собирает информацию в txt-файл и отправляет его по FTP
2.Сервер собирает все файлы, обрабатывает и записывает в БД
3.Сервер формирует отчет о собранной информации.

Передача данных с использованием txt-файлов и FTP сильно тормозит работу сервера.

Возможно ли как-нибудь ускорить эту схему исключив txt и ftp и использовать, например, tcp? Может есть что-нибудь проверенное?

P.s. файлы отправляются один раз в день.

Последний раз редактировалось Crunkordie; 20.10.2014 в 11:46.
Crunkordie вне форума Ответить с цитированием
Старый 20.10.2014, 12:14   #2
Slym
Участник клуба
 
Регистрация: 07.12.2011
Сообщений: 1,025
По умолчанию

idhttpserver
делай на нем свой сервер, тамже сразу парсь свой файл и добавляв в бд
отправлять
idhttp +IdMultipartFormData
Не стесняемся, плюсуем!

Последний раз редактировалось Slym; 20.10.2014 в 12:16.
Slym вне форума Ответить с цитированием
Старый 20.10.2014, 13:24   #3
саша40
Участник клуба
 
Регистрация: 12.09.2012
Сообщений: 1,030
По умолчанию

Возможно ли сделать на сайте свой подсервер(Программу, работающию на сервере)? Да. Если хостинг это поддерживает, конечно, то PHP в помощь.
Что нужно программисту: Компьютер, Среда программирование, Воображение, Прямые руки, Мозги, Знания этой среды программирования.
Программист-это профессия, а программирование-это моё хобби.
саша40 вне форума Ответить с цитированием
Старый 20.10.2014, 14:03   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

ftp итак использует tcp
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 20.10.2014, 17:22   #5
Fahman
Форумчанин
 
Аватар для Fahman
 
Регистрация: 03.04.2013
Сообщений: 703
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
ftp итак использует tcp
Не знал....
99% ошибок компьютера сидит в полуметре от монитора.
Fahman вне форума Ответить с цитированием
Старый 20.10.2014, 18:33   #6
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,430
По умолчанию

Crunkordie, абсурдность зашкаливает. Если серверное ПО заносит данные в БД, и только это. То почему бы не поставить веб-сервер с php скриптом, которому по HTTP будут передавать данные клиентские копии ПО?
Человек_Борща вне форума Ответить с цитированием
Старый 20.10.2014, 23:35   #7
Crunkordie
Пользователь
 
Регистрация: 18.02.2011
Сообщений: 48
По умолчанию

Цитата:
Сообщение от Slym Посмотреть сообщение
idhttpserver
делай на нем свой сервер, тамже сразу парсь свой файл и добавляв в бд
отправлять
idhttp +IdMultipartFormData
Хотелось вообще избавиться от текстовых файлов.

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
почему бы не поставить веб-сервер с php скриптом, которому по HTTP будут передавать данные клиентские копии ПО?
Спасибо за совет, буду пробовать. А что лучше, что бы клиент отправлял готовый sql-запрос или просто набор данных, а сервер дальше сам формировал его? Есть ли смысл поднимать веб-сервер, если его можно заменить idhttpserver 'ом ?

Последний раз редактировалось Crunkordie; 20.10.2014 в 23:38.
Crunkordie вне форума Ответить с цитированием
Старый 21.10.2014, 00:09   #8
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,430
По умолчанию

Цитата:
Спасибо за совет, буду пробовать. А что лучше, что бы клиент отправлял готовый sql-запрос или просто набор данных, а сервер дальше сам формировал его?
Клиент отправляет данные, и как они в БД лежат не его дело.

Цитата:
Есть ли смысл поднимать веб-сервер, если его можно заменить idhttpserver 'ом ?
Если для вас не проблема написать php скрипт сервеной части, но смысл есть.

В случае с idhttpserver'ом, все сами без php.
Человек_Борща вне форума Ответить с цитированием
Старый 21.10.2014, 10:21   #9
Crunkordie
Пользователь
 
Регистрация: 18.02.2011
Сообщений: 48
По умолчанию

Извините, если что-то путаю.
Я хочу полностью отказаться от txt файла в пользу множества маленьких запросов. Т.е. в текстовом файле находится множество строк и каждая из них это будущий sql-запрос. В связи с этим целесообразнее использование idhttp или idtcp? Ни с одним из них ранее не работал, но проблем разобраться с ними думаю не возникнет.
Вопрос про многопоточность.
Если представить что 200 компьютеров одновременно начнут отправлять данные, как на это реагирует сервер?
Crunkordie вне форума Ответить с цитированием
Старый 21.10.2014, 11:27   #10
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,430
По умолчанию

Цитата:
Если представить что 200 компьютеров одновременно начнут отправлять данные, как на это реагирует сервер?
idHTTPserver в этом плане прозрачно многопоточный. Нормально отработает.
idTCPServer возможно тоже прозрачно многопоточным будет.

HTTPServer точно прозрачно многопоточный, и проблем с подключением кучки клиентов не будет. Хотя и просто TServerSocket в этом плане тоже многопоточный.

Я бы все же реализовал так:
Открыл 5 серверов для прима данных,
написал бы 1 инфо-хаб(считай 6 сервер, но раздаёт инфу)

Сервера передают на инфо-сервер текущую загруженность своих линий.
Клиенты между запросами обращаются к инфо-серверу чтобы точно на менее загруженный отдать очередной запрос.

Или ещё проще: все данные на хаб, а тот тупо сам редиректит данные на менее загруженный сервер.
Человек_Борща вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Клиент-серверная игра Змейка Anny_Apple Gamedev - cоздание игр: Unity, OpenGL, DirectX 4 13.03.2014 01:24
Клиент-серверная БД в Delphi jediAlex БД в Delphi 1 15.10.2009 00:16