V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Vimax
V2EX  ›  Java

生产环境可以用 springboot webflux 吗?有什么风险?

  •  2
     
  •   Vimax · 2020-08-10 17:34:19 +08:00 · 4996 次点击
    这是一个创建于 1571 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Spring MVC 构建于 Servlet API 之上,使用的是同步阻塞式 I/O 模型,什么是同步阻塞式 I/O 模型呢?就是说,每一个请求对应一个线程去处理。

    Spring WebFlux 是一个异步非阻塞式的 Web 框架,它能够充分利用多核 CPU 的硬件资源去处理大量的并发请求。

    如果在已有项目中,增加使用 WebFlux 替代 Spring MVC 会有兼容或者其他风险吗?

    @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);
        }
    
    
    }
    
    13 条回复    2023-06-13 09:18:48 +08:00
    v2orz
        1
    v2orz  
       2020-08-10 17:45:23 +08:00
    web 应用使用没啥问题

    维护成本有点高


    数据库、消息队列如果没有异步驱动的话,收益不明显
    xjlnjut730
        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
    wc951
        3
    wc951  
       2020-08-10 17:57:21 +08:00 via Android
    webflux 是不是可以用来实现 api 网关
    earther01
        4
    earther01  
       2020-08-10 17:59:19 +08:00
    太难了,响应式编程开发难度太大。之前想从 zuul 升级成 springcloudgateway,研究一两天还是放弃了
    accacc
        5
    accacc  
       2020-08-10 17:59:41 +08:00
    @wc951 spring cloud gateway 就是用的 webflux 框架
    gz911122
        6
    gz911122  
       2020-08-10 18:01:46 +08:00
    没有意义
    还不如用 vertx 呢, 如果真的有需求的话
    wysnylc
        7
    wysnylc  
       2020-08-10 19:07:00 +08:00
    用 webflux 之前得先改 jdbc
    yannxia
        8
    yannxia  
       2020-08-10 19:10:48 +08:00
    用了好几年了……大坑没有,小坑现在也几乎没有了,
    以前有的小坑:
    - websocket 帧大小无法设置
    - 特定条件下的 connection refuse
    ......

    ---

    不过一般你遇见的时候社区的 ISSUE 已经提了,不过要考虑是不是容易更新版本在生产环境下。
    th00000
        9
    th00000  
       2020-08-10 19:16:46 +08:00
    异步非阻塞式的 Java web 框架可以考虑 Vert.x
    chihiro2014
        10
    chihiro2014  
       2020-08-11 03:02:17 +08:00
    没有啥大问题,现在国外 Webflux 还是挺流行的,如果会响应式开发的话。
    毕竟很多大公司都在往这个方面发展。
    可以看看这个视频
    https://www.bilibili.com/video/BV1Cp4y1S7Yx
    zzl22100048
        11
    zzl22100048  
       2020-08-11 07:40:03 +08:00 via iPhone
    webflux 的 jdbc 已经出来
    MephistoLynn
        12
    MephistoLynn  
       2020-10-11 17:18:58 +08:00
    查查 R2DBC 吧,早就有响应式的关系型持久层框架了
    layxy
        13
    layxy  
       2023-06-13 09:18:48 +08:00
    感觉还是等 java 的'协程'出来吧,这个生态目前不健全,性能提升不明显
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1115 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 22:41 · PVG 06:41 · LAX 14:41 · JFK 17:41
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.