为什么响应式开发ORM大部分推荐Ebean

发布时间:2019-08-02 10:00:50

为什么响应式开发ORM大部分推荐Ebean

推荐回答

作者:知乎用户链接:https://www.zhihu./question/283043084/answer/430735696来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

大概意思就是比jpa快,HikariCP也是性能数一数二的连接池. 作为新事物,一般都喜欢搭配新框架. 响应式web最大的优势就是性能. 所以在选择框架上也偏向小而美高性能的lib.

至于spring webmvc和webflux(响应式)的区别,spring文档中有说明: https://docs.spring.io/spring/docs/5.0.7.RELEASE/spring-framework-reference/web-reactive.html#webflux-framework-choice

这里有一个更好的视频: Servlet vs Reactive Stacks in Five Use Cases   推荐这个视频.

传统的servlet mvc请求是一个线程一个请求,所以在高并发情况下对服务器压力比较大. 而webflux采用了类似nodejs的event loop模型. http请求的处理流程的任意一步都是不能block的. 在传统的servlet mvc模型中,很多方法都是阻塞的,例如IO(数据库读写,文件读写,网络读写). 在reactive中就不允许了. 所以spring-data项目有提供不同于CrudRepository的抽象-ReactiveRepository,因为JDBC是阻塞的,如图所示:

<img src="https://pic1.zhimg./v2-9b9ac4348acecd96507252c8bc02f0a8_b.jpg" data-caption="" data-size="normal" data-rawwidth="670" data-rawheight="496" data-default-watermark-src="https://pic1.zhimg./v2-9b9ac4348acecd96507252c8bc02f0a8_b.jpg" class="origin_image zh-lightbox-thumb" width="670" data-original="https://pic1.zhimg./v2-9b9ac4348acecd96507252c8bc02f0a8_r.jpg">

注意, 我们的dao方法返回的不是Car,而是Flux<Car>,Flux/Mono 你可以认为是nodejs的Promise. 在webflux中,当你调用io方法时,你不是真的在读写io,你只是声明.(想想SQL).

总之, 如果你不清楚reactive开发的优势和原理, 那么你就不需要它,也别用它. jdbc还没支持非阻塞api呢

以上问题属网友观点,不代表本站立场,仅供参考!