Безопасна ли потоковая передача данных через сокет TCP, когда клиент и сервер сбалансированы? - PullRequest
0 голосов
/ 21 июня 2019

Я реализую механизм потоковой передачи данных, который выглядит следующим образом:

Клиент A хочет отправить файл на сервер B через определенный порт. A и B будут обмениваться сериями сообщений (запись и чтение из потока соединения) через канал сокета. A может иметь несколько одновременных запросов к B.

A opens a connection with B.
A -> B: "I want to send a file"
B -> A: "OK, go ahead"
A -> B: "Here's 500KB of data..."
B -> A: "OK, I'm done reading that, send the next chunk"
A -> B: "Here's 500KB of data..."
B -> A: "OK, I'm done reading that, send the next chunk"
...and so on... until:
A -> B: "I'm done"
B -> A: "Ok bye."
A closes connection with B.

Если A и B сбалансированы по нагрузке, это будет безопасно? То есть, если экземпляр A1 соединяется с экземпляром B1, то вышеупомянутая транзакция вся будет между этими двумя экземплярами? То есть сообщения, написанные A1, ни в коем случае не будут отправляться в экземпляр B2?

Для того, чтобы это стоило, я использую java.nio.channels.SocketChannel в режиме блокировки для реализации этого.

...