8

Я смотрел Spring Tips: Functional Reactive Endpoints with Spring Framework 5.0 и немного читал о весеннем реакторе, но я не могу это понять.Весенний реактор и нетто против tomcat http

Каковы преимущества возврата конечных точек Flux/Mono экземпляров (вместо дросселированных), а не прямо вверх по объектам (с разъемами), учитывая, что у меня активен чистый и весенний реактор? Первоначально я предполагал, что реактивные потоки в контексте http-запроса/ответа будут работать больше как веб-порты, в которых сервер передает данные в приемник открытым каналом, но это, похоже, не так.

Также что делает netty лучше в реактивном программировании, чем tomcat?

Прошу прощения, если эти вопросы кажутся глупыми, но я не совсем понимаю цель этого нового направления каркаса. Почему это произошло, как это работает и какие проблемы он разрешает?

ответ

7

Предлагаю вам посмотреть недавно представленную в Devoxx Belgium "Reactive Web Application with Spring 5" by Rossen Stoyanchev.

там он говорит о том, как Реактивная Web Controller (представленный ниже) на поверхности выглядит как Spring MVC HTTP Servlet запрос контроллер/Response, но на самом деле это не

@GetMapping("https://stackoverflow.com/users/{id}") 
public Mono<User> getUser(@PathValiable Long id) { 
    return this.userRepository.findById(id); 
} 

@GetMapping("/users") 
public Flux<User> getUsers() { 
    return this.userRepository.findAll(); 
} 

он говорит о том, Servlet 3.1, хотя неблокирование действительно не работает для полной реактивности и как код клея, соединяющий Servlet 3.1 и Reactive Streams, реализован как часть изменений Spring 5 для веб-контейнеров, совместимых с Servlet 3.1 (Jetty и Tomcat).

И, конечно же, он трогает полностью. Реактивные неблокирующие серверы (Netty, Undertow) поддерживаются для запуска реактивных потоков.

1

Неправильно означает, что Netty лучше, чем tomcat. Реализация различна. Tomcat использует java NIO для реализации спецификации сервлета 3.1. Между тем, netty также использует NIO, но вводит пользовательский api. Если вы хотите получить представление о том, как сервлет 3.1 реализован в Netty, посмотрите это видео https://youtu.be/uGXsnB2S_vc