Веб-сокеты против реактивных сокетов

Недавно я столкнулся с термином «реактивные сокеты». До этого момента я думал, что веб-сокеты — это путь к полноценному асинхронному стилю.

Итак, что такое реактивные сокеты.

Эта ссылка (http://rsocket.io/) даже говорит о сравнении с веб-сокетами.


person Arunkumar Srisailapathi    schedule 09.12.2017    source источник
comment
Не могли бы вы объяснить, почему за этот вопрос проголосовали против?   -  person Arunkumar Srisailapathi    schedule 17.12.2017


Ответы (2)


Что такое RSocket?

RSocket реализует Спецификация реактивных потоков за границей сети. Это протокол связи на уровне приложения со встроенным кадрированием, возобновлением сеанса и противодавлением, который работает по сети.

RSocket не зависит от транспорта. RSocket может работать через Websockets, TCP, HTTP/2 и Aeron.

Чем RSocket отличается от Websockets?

Веб-сокеты не обеспечивают противодавление на уровне приложений, а только противодавление на уровне байтов на основе TCP. Веб-сокеты также обеспечивают только кадрирование, но не обеспечивают семантику приложения. Разработчик должен создать протокол приложения для взаимодействия с веб-сокетом.

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

Для получения дополнительной информации о мотивах создания RSocket ознакомьтесь с документом мотивации на сайте RSocket.

person gregwhitaker    schedule 07.12.2018
comment
gregwhitaker Не могли бы вы помочь понять, что такое противодавление на уровне приложений и противодавление на уровне байтов? Было бы здорово, если бы вы могли объяснить на примере. - person Reena Upadhyay; 07.12.2019
comment
Конечно, противодавление на уровне байтов — это когда получатель говорит мне отправить x байтов. Противодавление на уровне приложения — это когда получатель говорит: «Отправьте мне x количество объектов домена или запроса». - person gregwhitaker; 16.12.2019

И WebSocket, и RSocket являются протоколами, которые обеспечивают двунаправленную, мультиплексную, дуплексную связь. Но оба работают на разных уровнях.

WebSocket – это протокол связи низкого уровня, работающий поверх TCP. Он определяет, как поток байтов преобразуется в кадры. Но в самом сообщении WebSocket нет инструкций о том, как его маршрутизировать или обрабатывать. Поэтому нам нужны протоколы обмена сообщениями, которые работают поверх веб-сокета на уровне приложения, чтобы обеспечить двустороннюю связь.

RSocket – это полностью реактивный протокол прикладного уровня, работающий с потоками байтов, такими как TCP, WebSocket, UDP или другими. Он обеспечивает управление потоком приложений в сети для предотвращения простоев и повышения отказоустойчивости. RSocket использует идею асинхронной обработки потока с неблокирующим обратным давлением, при котором неисправный компонент вместо того, чтобы просто сбрасывать трафик, сообщает о своей нагрузке вышестоящим компонентам, заставляя их снизить нагрузку.

person Sreejith    schedule 08.10.2020
comment
Хотел бы я поставить вам больше одного балла, потому что это объяснение было действительно хорошим. - person Francisco Albert; 27.12.2020