8

Tôi đã xem Spring Tips: Functional Reactive Endpoints with Spring Framework 5.0 và đọc một chút về lò phản ứng mùa xuân nhưng tôi hoàn toàn không thể hiểu được nó.Lò phản ứng lò xo & netty vs tomcat http

Lợi ích của việc có điểm cuối trả về Flux/Mono trường hợp (jacksonified) thay vì thẳng lên các đối tượng dto (jacksonified), cho rằng tôi có lò phản ứng netty và spring đang hoạt động? Ban đầu tôi giả định rằng các luồng phản ứng sẽ, trong ngữ cảnh yêu cầu/phản hồi http, hoạt động giống như các ổ cắm web trong đó máy chủ đẩy dữ liệu đến người nhận bằng một kênh mở nhưng điều này dường như không đúng.

Ngoài ra, điều gì thực sự làm tốt hơn trong lập trình phản ứng hơn là tomcat?

Tôi xin lỗi nếu những câu hỏi này có vẻ ngu ngốc nhưng tôi không hoàn toàn hiểu mục đích của hướng khung mới này. Tại sao nó lại đến, nó hoạt động ra sao và nó giải quyết vấn đề gì?

Trả lời

7

Tôi đặc biệt khuyên bạn nên xem bản trình bày gần đây trong Devoxx Bỉ "Reactive Web Application with Spring 5" by Rossen Stoyanchev.

Trong đó ông nói về cách thức khiển Web Reactive (trình bày dưới đây) trên bề mặt trông giống như Spring MVC HTTP Servlet Yêu cầu/Đáp ứng điều khiển nhưng nó thực sự không

@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(); 
} 

ông nói về cách Servlet 3.1 mặc dù không chặn không thực sự hoạt động để phản ứng đầy đủ và cách mã keo kết nối Servlet 3.1 và Reactive Streams được thực hiện như một phần của Spring 5 thay đổi cho các thùng chứa web tương thích Servlet 3.1 (Jetty và Tomcat).

Và tất nhiên, anh ấy đang chạm vào các máy chủ tuân thủ không phản ứng đầy đủ (Netty, Undertow) được hỗ trợ để chạy Dòng phản ứng.

1

Không có nghĩa là Netty tốt hơn tomcat. Việc triển khai khác nhau. Tomcat sử dụng java NIO để triển khai thực hiện đặc tả servlet 3.1. Trong khi đó, Netty sử dụng NIO cũng như giới thiệu api tùy chỉnh. Nếu bạn muốn hiểu rõ hơn về cách servlet 3.1 triển khai ở Netty, hãy xem video này https://youtu.be/uGXsnB2S_vc

Các vấn đề liên quan