derdmitry
Июнь 9, 2011 16:40:31
Используем xmlrpc, передаем довольно большой объем данных (порядка 50к-100к сложных объектов). При этом используется промежуточный сервер. В процессе передачи/получения данных расходуется очень много ресурсов памяти и процессора…
Какие есть альтернативные способы передачи массивов данных?
Lexander
Июнь 9, 2011 16:58:51
json, protobuf
Если позволяют обстоятельства, уменьшить размер пакетов.
o7412369815963
Июнь 9, 2011 17:23:42
каков объем данных?
можно использовать веб сервер, в качестве отдачи и проксирования.
закачку через wget / urllib
derdmitry
Июнь 9, 2011 17:36:37
Объем данных 200-500 Мб.
Есть три проекта на pylons.
Их связывает центральный узел(pylons.controllers.XMLRPCController), который по запросу собирает данные со всех проектов и отдает запросившему.
При этом расход памяти доходит доходит до 500-700 Мбайт и занимает от 300 секунд.
Выборка и обработка данных, до передачи, на начальном узле из базы занимает 1-2 с.
Lexander
Июнь 9, 2011 22:26:31
Тогда действительно wget.
Но в качестве протокола использовать FTP.
Пусть скрипт сохраняет локально файл и возвращает FTP-ссылку, которую с помощью wget получает центральный узел.
o7412369815963
Июнь 10, 2011 13:12:08
Lexander
Тогда действительно wget.
Но в качестве протокола использовать FTP.
Пусть скрипт сохраняет локально файл и возвращает FTP-ссылку, которую с помощью wget получает центральный узел.
почему ftp? у него есть докачка?
Lexander
Июнь 10, 2011 17:23:54
o7412369815963
почему ftp?
Исходя из размера файлов для минимизации накладных расходов (см. описание протокола).
o7412369815963
у него есть докачка?
Докачка - это свойство сервера, а не протокола.
Разве вы никогда не видели сервера с докачкой по ФТП?
o7412369815963
Июнь 11, 2011 08:29:42
Lexander
Докачка - это свойство сервера, а не протокола.
Разве вы никогда не видели сервера с докачкой по ФТП?
Не только сервера, но и клиента. Неа не видел, хотя шибко и не рассмартивал. В базовом наборе команд докачки нет.
Кстати, раз пошла такая тема, тогда стоит рассмотреть nfs и ssh. Я как раз их использую для передачи файлов (особенно если передача в пределах локальной сети, для неё не нужна докачка таких смешных объемов).
Lexander
Июнь 11, 2011 17:29:59
Согласен.
Ed
Июнь 12, 2011 00:24:27
o7412369815963
Lexander
Докачка - это свойство сервера, а не протокола.
Разве вы никогда не видели сервера с докачкой по ФТП?
Не только сервера, но и клиента. Неа не видел, хотя шибко и не рассмартивал. В базовом наборе команд докачки нет.
Поищите тут описание команды REST:
http://www.ietf.org/rfc/rfc959.txt