生产环境可以用 springboot webflux 吗?有什么风险? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Vimax
V2EX    Java

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

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

    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
    Yanickkk
        8
    Yanickkk  
       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     Solana     5383 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 40ms UTC 06:52 PVG 14:52 LAX 22:52 JFK 01:52
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86