SpringBoot 集成 WebFlux,请求大模型实现 “打字机” 流式响应效果
一、WebFlux 简介
1.1 Spring MVC 和 Spring WebFlux 的区别?
Spring MVC 和 Spring WebFlux 都是Spring框架中用于构建Web应用程序的模块,它们之间的主要区别在于它们处理并发请求的方式和所采用的编程模型。
1、编程模型:
- Spring MVC: 采用同步的、阻塞的编程模型。每个请求都会在一个单独的线程中处理,线程会一直阻塞直到请求完成。
- Spring WebFlux: 采用异步的、非阻塞的编程模型。它基于Reactive Streams标准,使用反应式编程的理念,可以更有效地处理大量并发请求,减少线程资源的浪费。
2、并发处理:
- Spring MVC: 使用Servlet API中的阻塞IO来处理请求,每个请求需要一个独立的线程,如果线程池中的线程用尽,新的请求就会被阻塞。
- Spring WebFlux: 使用非阻塞IO,通过少量的线程处理大量的并发请求。这可以提高系统的吞吐量,因为不需要为每个请求分配一个独立的线程。
3、适用场景:
- Spring MVC: 适用于传统的同步IO的应用场景,特别是那些对实时性要求不是很高的场景。
- Spring WebFlux: 适用于需要处理大量并发请求、对实时性要求高的场景,比如实时通信、实时数据推送等。
总的来说,如果需要处理大量并发请求,并且对实时性有较高要求,可以选择Spring WebFlux
1.2 Spring MVC 和 Spring WebFlux 是否可以同时存在?
答案:可以同时存在。如官方文档所述: