Поиск хороших способов передачи больших файлов между серверами Java - PullRequest
1 голос
/ 21 июля 2011

Там в проекте есть основной сервер БД, а другие серверы, установленные в разных местах, поддерживают свои собственные локальные базы данных.Мы должны разрешить каждой системе обновлять свою локальную базу данных до любой версии в основной БД.На всех серверах работает среда Java.

Существует много способов передачи файлов: простая веб-страница загрузки, веб-служба, FTP, сокет. Как вы думаете, что лучше подходит для этой ситуации?

Общая процедура выглядит следующим образом:

1, Клиент отправляет строку версии на Сервер.
2, Сервер генерирует исправление и отправляет обратно.
(Поскольку исправлениеможет быть, слишком большой, его следует разделить на части)

И то, о чем я думаю, находится внутри процедуры 2.
Выбор действительно велик.

1, ясначала нужно посчитать строки, которые нужно извлечь, и рассчитать, сколько частей должно быть разделено.

И тогда я сталкиваюсь с выбором, должен ли я просто отправить обратно количество частей или список ссылок Клиенту, и Клиент использует ссылки для запроса каждой части, если соединение основано на веб-запросе, илиЯ могу сдвинуть детали назад одну за другой, если серверы соединены с сокетом, или я могу сделать следующий шаг:

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

И сгенерированные файлы исправлений могут быть сохранены для других Клиентов при запросе той же версии.

Я думаю, что все способы будут работать, но как вы думаете, что лучше?Или вы знаете лучший способ?
Давайте поделимся.

Ответы [ 2 ]

3 голосов
/ 21 июля 2011

Вы можете попробовать использовать Netty для передачи больших файлов с сервера на клиент.

На домашней странице Netty есть довольно хороший пример , как отправлять большие файлы через Интернет.

0 голосов
/ 09 августа 2011

Наконец я здесь, чтобы поговорить о том, как я выбрал.

Я заставил главный сервер отключить действие, которое проверяет входящий запрос.И подготовить данные для отправки сериализованным и упаковать их в один ZIP-файл.Отправьте zip-файл обратно на запрашивающий компьютер в InputStream в качестве ответа.

Затем запрашивающий компьютер разархивирует файл и десериализует и использует их.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...