любое предложение по кластерному клиент-серверу комм. подход? - PullRequest
1 голос
/ 16 января 2010

Допустим, я создаю клиент-серверное программное обеспечение. основной сервер подключается к агентам на разных серверах. агенты - это клиент поиска, и каждый из них выдаст довольно большой массив из 64-битных целых чисел, и, наконец, главный сервер (родительский) отсортирует его для получения окончательного результата.

Какой подход лучше / быстрее,

  1. используя сокет для получения всех данных от клиента, или
  2. использовать сокет для отправки состояния клиента и запроса идентификатора, результат затем сохраняется в временном плоском файле с этим идентификатором (тогда главному серверу потребуется доступ к этому временному файлу, расположенному на клиентском svr)?

Ответы [ 2 ]

2 голосов
/ 16 января 2010

Я бы не использовал временный временный файл на клиенте, поскольку доступ к нему по сети не будет быстрее, чем запись его содержимого непосредственно через сокет на сервер. Однако вы можете захотеть разработать свой протокол для отправки данных небольшими порциями, на которые вы получаете ответы от сервера, чтобы вам не нужно было повторно отправлять все данные, если ваше соединение разрывается во время отправки. Еще одним преимуществом этого является то, что вы позволяете серверу отменить передачу по ответу, выполнив ответ, закрыв соединение, если оно по какой-то причине больше не хочет.

1 голос
/ 16 января 2010

Принцип KISS - ваш друг здесь.

Если ваша цель - производительность - тогда вы должны делать это с сокетами и хранить все в памяти

Если вы хотите сделать его быстрым и простым в реализации - я бы просто пошел с простыми HTTP-запросами и поместил бы файлы на общий диск сервера (я бы сказал, это в 3 раза быстрее для реализации).

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