|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
20.10.2014, 11:31 | #1 |
Пользователь
Регистрация: 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. |
20.10.2014, 12:14 | #2 |
Участник клуба
Регистрация: 07.12.2011
Сообщений: 1,025
|
idhttpserver
делай на нем свой сервер, тамже сразу парсь свой файл и добавляв в бд отправлять idhttp +IdMultipartFormData
Не стесняемся, плюсуем!
Последний раз редактировалось Slym; 20.10.2014 в 12:16. |
20.10.2014, 13:24 | #3 |
Участник клуба
Регистрация: 12.09.2012
Сообщений: 1,030
|
Возможно ли сделать на сайте свой подсервер(Программу, работающию на сервере)? Да. Если хостинг это поддерживает, конечно, то PHP в помощь.
Что нужно программисту: Компьютер, Среда программирование, Воображение, Прямые руки, Мозги, Знания этой среды программирования.
Программист-это профессия, а программирование-это моё хобби. |
20.10.2014, 14:03 | #4 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
ftp итак использует tcp
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
20.10.2014, 17:22 | #5 |
Форумчанин
Регистрация: 03.04.2013
Сообщений: 703
|
99% ошибок компьютера сидит в полуметре от монитора.
|
20.10.2014, 18:33 | #6 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,430
|
Crunkordie, абсурдность зашкаливает. Если серверное ПО заносит данные в БД, и только это. То почему бы не поставить веб-сервер с php скриптом, которому по HTTP будут передавать данные клиентские копии ПО?
|
20.10.2014, 23:35 | #7 | |
Пользователь
Регистрация: 18.02.2011
Сообщений: 48
|
Цитата:
Спасибо за совет, буду пробовать. А что лучше, что бы клиент отправлял готовый sql-запрос или просто набор данных, а сервер дальше сам формировал его? Есть ли смысл поднимать веб-сервер, если его можно заменить idhttpserver 'ом ? Последний раз редактировалось Crunkordie; 20.10.2014 в 23:38. |
|
21.10.2014, 00:09 | #8 | ||
Старожил
Регистрация: 30.12.2009
Сообщений: 11,430
|
Цитата:
Цитата:
В случае с idhttpserver'ом, все сами без php. |
||
21.10.2014, 10:21 | #9 |
Пользователь
Регистрация: 18.02.2011
Сообщений: 48
|
Извините, если что-то путаю.
Я хочу полностью отказаться от txt файла в пользу множества маленьких запросов. Т.е. в текстовом файле находится множество строк и каждая из них это будущий sql-запрос. В связи с этим целесообразнее использование idhttp или idtcp? Ни с одним из них ранее не работал, но проблем разобраться с ними думаю не возникнет. Вопрос про многопоточность. Если представить что 200 компьютеров одновременно начнут отправлять данные, как на это реагирует сервер? |
21.10.2014, 11:27 | #10 | |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,430
|
Цитата:
idTCPServer возможно тоже прозрачно многопоточным будет. HTTPServer точно прозрачно многопоточный, и проблем с подключением кучки клиентов не будет. Хотя и просто TServerSocket в этом плане тоже многопоточный. Я бы все же реализовал так: Открыл 5 серверов для прима данных, написал бы 1 инфо-хаб(считай 6 сервер, но раздаёт инфу) Сервера передают на инфо-сервер текущую загруженность своих линий. Клиенты между запросами обращаются к инфо-серверу чтобы точно на менее загруженный отдать очередной запрос. Или ещё проще: все данные на хаб, а тот тупо сам редиректит данные на менее загруженный сервер. |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Клиент-серверная игра Змейка | Anny_Apple | Gamedev - cоздание игр: Unity, OpenGL, DirectX | 4 | 13.03.2014 01:24 |
Клиент-серверная БД в Delphi | jediAlex | БД в Delphi | 1 | 15.10.2009 00:16 |