Недавно я столкнулся с термином «реактивные сокеты». До этого момента я думал, что веб-сокеты — это путь к полноценному асинхронному стилю.
Итак, что такое реактивные сокеты.
Эта ссылка (http://rsocket.io/) даже говорит о сравнении с веб-сокетами.
Недавно я столкнулся с термином «реактивные сокеты». До этого момента я думал, что веб-сокеты — это путь к полноценному асинхронному стилю.
Итак, что такое реактивные сокеты.
Эта ссылка (http://rsocket.io/) даже говорит о сравнении с веб-сокетами.
RSocket реализует Спецификация реактивных потоков за границей сети. Это протокол связи на уровне приложения со встроенным кадрированием, возобновлением сеанса и противодавлением, который работает по сети.
RSocket не зависит от транспорта. RSocket может работать через Websockets, TCP, HTTP/2 и Aeron.
Веб-сокеты не обеспечивают противодавление на уровне приложений, а только противодавление на уровне байтов на основе TCP. Веб-сокеты также обеспечивают только кадрирование, но не обеспечивают семантику приложения. Разработчик должен создать протокол приложения для взаимодействия с веб-сокетом.
RSocket обеспечивает кадрирование, семантику приложения, противодействие на уровне приложения и не привязан к конкретному транспорту.
Для получения дополнительной информации о мотивах создания RSocket ознакомьтесь с документом мотивации на сайте RSocket.
И WebSocket, и RSocket являются протоколами, которые обеспечивают двунаправленную, мультиплексную, дуплексную связь. Но оба работают на разных уровнях.
WebSocket – это протокол связи низкого уровня, работающий поверх TCP. Он определяет, как поток байтов преобразуется в кадры. Но в самом сообщении WebSocket нет инструкций о том, как его маршрутизировать или обрабатывать. Поэтому нам нужны протоколы обмена сообщениями, которые работают поверх веб-сокета на уровне приложения, чтобы обеспечить двустороннюю связь.
RSocket – это полностью реактивный протокол прикладного уровня, работающий с потоками байтов, такими как TCP, WebSocket, UDP или другими. Он обеспечивает управление потоком приложений в сети для предотвращения простоев и повышения отказоустойчивости. RSocket использует идею асинхронной обработки потока с неблокирующим обратным давлением, при котором неисправный компонент вместо того, чтобы просто сбрасывать трафик, сообщает о своей нагрузке вышестоящим компонентам, заставляя их снизить нагрузку.