Противодавление на уровне приложений VS Собственное управление потоком TCP


person affo    schedule 27.03.2018    source источник


Ответы (1)


Я думаю, что в основе вашего вопроса лежит предположение о том, что TCP - это единственная внешняя связь в потоковом конвейере.

Предположим, ваш поток обменивается данными по нескольким каналам ввода-вывода, таким как файловый ввод-вывод, запросы к базе данных и стандартный вывод на консоль:

//Read Data from File --> DB Query --> TCP Server Query --> Slow Function --> Console

Реализация akka-stream обеспечит асинхронную поддержку с обратным давлением по всему конвейеру. Следовательно, akka-stream должен обеспечивать обратное давление на уровне приложения для вызова длительно выполняемых функций, запросов к базам данных, чтения файлов, записи в консоль и т. Д.

Вы правы, что реализация akka раздела TCP Server потока полагается на "родном противодавлении" TCP. Из документации:

... используя Akka Streams, вы избавляетесь от необходимости вручную реагировать на сигналы обратного давления, поскольку библиотека делает это прозрачно для вас.

person Ramón J Romero y Vigil    schedule 28.03.2018
comment
Спасибо за ваш ответ! Это именно то, что я имел в виду с Is i, чтобы абстрагироваться от идеи асинхронной связи вне сети и вне протокола TCP. Однако я очень ценю это! - person affo; 29.03.2018