Spring 5.0新功能:反应式Web框架
极客时间编辑部
讲述:丁婵大小:1.21M时长:02:39
Spring 框架 5.0 版本在 2017 年 9 月 28 日发布,新特性中包含了一个新的反应式 Web 框架 Spring WebFlux,它构建在 Reactor 3.1 项目之上,同时支持注解和函数式风格编程。
对此,InfoQ 采访了 Pivotal 高级工程师罗森·斯托扬彻夫(Rossen Stoyanchev),讨论了他对 Spring 5.0 强调反应式编程的看法。
罗森表示,通过 Java 8 的 CompletableFuture,Java 开发人员已经熟悉了采用连续(continuation)风格的 API 来组合异步逻辑的好处。在最近几年间,出现了一些用于组合异步逻辑的库,比如 RxJava 和 Reactor,它们提供了与 CompletableFuture 类似的收益,但它们处理的是流式值并且支持回压(backpressure,在 Reactive Streams 规范中所定义的)。
Spring 5.0 借助 Web 框架 Spring WebFlux,能够让应用拥抱这种异步编程模型。这个 Web 框架本身的核心协议是完全异步的,内部采用了非阻塞的 I/O,在异步运行时环境上支持 Reactive Streams 回压功能。这些运行时环境包括 Netty、Undertow 以及像 Tomcat 和 Jetty 这样的 Servlet 容器(基于 Servlet 3.1 非阻塞 I/O)。
这种方式所带来的最重要的好处就是能够结合事件轮询风格的执行模型来组合异步逻辑,这样就能以更少的硬件资源处理更多的并发请求,在高负载场景下,它的作用会更加明显。
同时,罗森表示,Spring 5.0 引入的变化对已有应用不会带来影响,因为新功能是与 Spring MVC 并存的。Spring 5.0 努力在 Spring MVC 和 Spring WebFlux 之间提供一致的体验,开发人员可以在两者之间做出选择。这两个 Web 框架通过灵活的控制器方法签名,支持相同的注解编程模型。
除此之外,Spring WebFlux 还提供了可选的、函数式的 Web 端点编程模型,将其与 Java 8 lambdas 和内置的 Kotlin 扩展协同使用是很有吸引力的。
对于希望采用 Spring 5.0 反应式编程模型的开发人员,罗森建议,开发人员应该先明确,从编写命令式风格的逻辑转移到使用声明式、异步的 API 时,有一个很大的学习曲线。另外,由于调用栈不再唯一,异步和非阻塞的代码会更难调试。
所以,如果开发者刚刚开始接触的话,建议从小范围开始,留出足够的时间去学习和适应。同时,在决定开始之前,要衡量和证明性能方面所能带来的收益,慎重选择最适合、并且能够从非阻塞并发中获益最多的应用。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
该免费文章来自《极客视点》,如需阅读全部文章,
请先领取课程
请先领取课程
免费领取
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
精选留言
由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论