Size: a a a

2020 May 14

V

Vladimir in pro.jvm
Vladimir Petrakovich
Ну писать на нём hello world на полном серьёзе - затея точно так себе
hello world на полном серьезе уже странно звучит)
источник

VP

Vladimir Petrakovich in pro.jvm
Vladimir
hello world на полном серьезе уже странно звучит)
Да, но эти бенчмарки ровно об этом 😄
источник

SS

Shamil Sabirov in pro.jvm
Denis Pavlyuchenko
как я понимаю из описания протокола (Application protocol providing Reactive Streams semantics), для его использования в java приложение требуется иметь API в виде методов, которые работают с Flux/Mono. Именно это я и имел ввиду
да, но RSocket это немного другое. нет? это какойто аналог gRPC. протокол общения. и есть какието реализации под разные платформы/языки. поправьте если не прав
источник

V

Vladimir in pro.jvm
Vladimir Petrakovich
Да, но эти бенчмарки ровно об этом 😄
тем не менее это говорит о количестве оверхеда
источник

VP

Vladimir Petrakovich in pro.jvm
Vladimir
тем не менее это говорит о количестве оверхеда
источник

V

Vladimir in pro.jvm
micronaut при схожей функциональности раза в 2 выше находится
источник

DP

Denis Pavlyuchenko in pro.jvm
Shamil Sabirov
да, но RSocket это немного другое. нет? это какойто аналог gRPC. протокол общения. и есть какието реализации под разные платформы/языки. поправьте если не прав
да, это что-то типо gRPC. Вот gRPC же генерирует уже определенные методы, их сигнатуру то есть. А тут у фреймворка просто есть требование (хм, я не уверен, можно ли сделать сигнатуру без Mono/Flux) - на реаткивное API.

В любом случае, rsocket построен на netty. Писать блокирующий код не выйдет, ну, или придется использовать созданные руками пулы потоков
источник

V

Vladimir in pro.jvm
Vladimir
micronaut при схожей функциональности раза в 2 выше находится
а голый undertow на 19-м месте
источник

SS

Shamil Sabirov in pro.jvm
Denis Pavlyuchenko
да, это что-то типо gRPC. Вот gRPC же генерирует уже определенные методы, их сигнатуру то есть. А тут у фреймворка просто есть требование (хм, я не уверен, можно ли сделать сигнатуру без Mono/Flux) - на реаткивное API.

В любом случае, rsocket построен на netty. Писать блокирующий код не выйдет, ну, или придется использовать созданные руками пулы потоков
netty только за обработку запросов извне отвечает. и никак не обязывает использовать реактивное программирование
тот же спринг проект могу спокойно делать по умолчанию на embedded tomcat. а потом просто в pom.xml поменял зависимость - и у тебя уже netty.
настройки для tomcat и netty конечно разные. но по коду ничего менять не нужно в принципе...
источник

SS

Shamil Sabirov in pro.jvm
т.е. если обходился раньше без Mono/Flux, то переход на netty не повлияет
источник

DP

Denis Pavlyuchenko in pro.jvm
Shamil Sabirov
netty только за обработку запросов извне отвечает. и никак не обязывает использовать реактивное программирование
тот же спринг проект могу спокойно делать по умолчанию на embedded tomcat. а потом просто в pom.xml поменял зависимость - и у тебя уже netty.
настройки для tomcat и netty конечно разные. но по коду ничего менять не нужно в принципе...
1. хм, я немного не понимаю, про "просто в pom.xml поменял зависимость - и у тебя уже netty". Мы сейчас про какой фреймворк говорим? Спринг бут так не умеет, он чётко разделяет веб серваера для реактивного программирования и сервлетов.
2. я мог обходится без Mono/Flux, когда жил на Томкате, который использовал модель Поток-на запрос (в базовом случае). Но когда я перешел на нетти, который уже живет в евент лупе, мне нужна какая-то другая модель программирования, например, использованее Reactor Netty.
источник

OD

Oleh Dokuka in pro.jvm
Все привет
источник

OD

Oleh Dokuka in pro.jvm
кто тут про RSocket узнавал?
источник

OD

Oleh Dokuka in pro.jvm
Anyways
источник

OD

Oleh Dokuka in pro.jvm
> Rsocket  - он в первую степень для сервер-сервер взаимодействия, или клиент-сервер?

Для обох кейсов
может использоваться также хорошо как для так называемого edge-networ
состоящего из разного набора девайсов общающегося с твоим сервером
так и для сервер сервер
так как сам протокол являеться peer-to-peer
потому сервера могут свободно общаться по созданому соеденению друг с другом
+
это может быть ingress
представь кейс
что нужно опросить девайсы
или проадейтить что то
но клиент об этом не в курсе
типа мобилка или браузер
и вместо того что бы пулить сообщение (к примеру)
сервер может сам пушать данные
или например запрашивать данные
типа (а какой заряд телефона сейчас и тд)
понятное дело клиент может слать эту инфу с интервалом - но что если эта инфа нужно иногда
и не всегда
типа разовая акция
в таком случае клиентский код может обьявить API для хендлинга и сервер может запрашивать данные самостоятельно
Бенефит - клиент не может открыть серверный порт а при этом может вести себя как сервер (вот он peer-to-peer)
источник

DP

Denis Pavlyuchenko in pro.jvm
@OlehDokuka когда я пишу бэкенд на rsocket, я же должен его писать в реактивном стиле? То есть, Mono/Flux API. Или есть какое-то решение, если я хочу писать в блокирующем стиле свои API (если идет речь про request/response модель)
источник

OD

Oleh Dokuka in pro.jvm
Ну, это в процесе доработки. На самом деле можно обойтись и без реактивщины; Никто не запрещает тебе сделать что то на подобии
источник

OD

Oleh Dokuka in pro.jvm
Mono<Payload> requestReponse(Payload p) {
  // do my blocking stuff here
  return Mono.just(responsePayload);
}
источник

OD

Oleh Dokuka in pro.jvm
это все можно отлично задекорировать
источник

DP

Denis Pavlyuchenko in pro.jvm
Oleh Dokuka
Mono<Payload> requestReponse(Payload p) {
  // do my blocking stuff here
  return Mono.just(responsePayload);
}
но в этом случае мы заблокируем все netty-потоки, и серверу придет конец?
источник