
Spring MVC 构建于 Servlet API 之上,使用的是同步阻塞式 I/O 模型,什么是同步阻塞式 I/O 模型呢?就是说,每一个请求对应一个线程去处理。
Spring WebFlux 是一个异步非阻塞式的 Web 框架,它能够充分利用多核 CPU 的硬件资源去处理大量的并发请求。
@RestController public class HelloWebFluxController { @GetMapping("/hello") public String hello() { return "Hello, WebFlux !"; } @GetMapping("/user") public Mono<User> getUser() { User user = new User("张三","18"); return Mono.just(user); } } 1 v2orz 2020-08-10 17:45:23 +08:00 web 应用使用没啥问题 维护成本有点高 数据库、消息队列如果没有异步驱动的话,收益不明显 |
2 xjlnjut730 2020-08-10 17:49:18 +08:00 目前来看用处不大,没必要替换。适用场景比较少。风险就是遇到问题不知道怎么处理。 引用知乎的说法: 如果想要发挥出 WebFlux 的性能,需要从 Dao 到 Service,全部都要是 Mono 和 Flux,目前官方的数据层 Reactive 框架只支持 Redis,Mongo 等几个,没有 JDBC 。 要想发挥出 WebFlux 的性能就得将代码全改成响应式的,而 JDBC 目前是没支持的(至少 MySQL 还没支持),而响应式的程序不好调试和编写(相对于同步的程序),所以现在 WebFlux 的应用场景还是相对较少的。 https://zhuanlan.zhihu.com/p/95967277 |
3 wc951 2020-08-10 17:57:21 +08:00 via Android webflux 是不是可以用来实现 api 网关 |
4 earther01 2020-08-10 17:59:19 +08:00 太难了,响应式编程开发难度太大。之前想从 zuul 升级成 springcloudgateway,研究一两天还是放弃了 |
6 gz911122 2020-08-10 18:01:46 +08:00 没有意义 还不如用 vertx 呢, 如果真的有需求的话 |
7 wysnylc 2020-08-10 19:07:00 +08:00 用 webflux 之前得先改 jdbc |
8 Yanickkk 2020-08-10 19:10:48 +08:00 用了好几年了……大坑没有,小坑现在也几乎没有了, 以前有的小坑: - websocket 帧大小无法设置 - 特定条件下的 connection refuse ...... --- 不过一般你遇见的时候社区的 ISSUE 已经提了,不过要考虑是不是容易更新版本在生产环境下。 |
9 th00000 2020-08-10 19:16:46 +08:00 异步非阻塞式的 Java web 框架可以考虑 Vert.x |
10 chihiro2014 2020-08-11 03:02:17 +08:00 没有啥大问题,现在国外 Webflux 还是挺流行的,如果会响应式开发的话。 毕竟很多大公司都在往这个方面发展。 可以看看这个视频 https://www.bilibili.com/video/BV1Cp4y1S7Yx |
11 zzl22100048 2020-08-11 07:40:03 +08:00 via iPhone webflux 的 jdbc 已经出来 |
12 MephistoLynn 2020-10-11 17:18:58 +08:00 查查 R2DBC 吧,早就有响应式的关系型持久层框架了 |
13 layxy 2023-06-13 09:18:48 +08:00 感觉还是等 java 的'协程'出来吧,这个生态目前不健全,性能提升不明显 |