springflux的初步体验

webFlux和MVC的区别
Spring WebFlux 是一个无阻塞的Web 框架,它能够充分利用多核CPU 的硬件资源去处理大量的并发请求
Spring MVC 构建于Servlet API 之上,使用的是同步阻塞式I/O 模型,每一个请求对应一个线程去处理。

核心领域模型
Publisher :发布者
Mono:返回0 或1 个元素
Flux:返回0-n 个元素

WebFlux 还支持服务器推送(SSE ->Server Send Event)
类似于定时的推送,个人感觉不是很实用,内部还是一个定时器来实现的,可以的话还是会用websocket

优点
webflux 内部使用的是响应式编程(Reactive Programming),基于异步和事件驱动,可以让我们在不扩充硬件资源的前提下,提升系统的吞吐量和伸缩性(并不能使接口的响应时间缩短)
不足
从Dao 到Controller,全部都要是响应式的Mono 和Flux。目前官方的数据层Reactive 框架只支持Redis,Mongo 等少数几个,没有依赖JDBC的mysql等库•都是异步导致编程难度高,debug 困难

WebFlux 应用场景

  • WebFlux 不是Spring MVC 的替代方案
  • webflux 强调的是异步非阻塞,spring mvc 强调的是同步阻塞
  • WebFlux 并不保证应用能运行的更快,但是它主打的是横向扩展和低内存消耗,不需要创建很多线程
  • 如果依赖了大量阻塞式持久化API 和网络API,建议使Spring MVC
  • 适合应用在IO 密集型的服务中
  • 比如写文件的日志收集、微服务网关这样的应用中
  • 磁盘IO 密集型,网络IO 密集型,使用异步非阻塞式编程模型,能够显著地提升吞吐量

发表评论?

0 条评论。

发表评论


注意 - 你可以用以下 HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>