(vertx)异步非阻塞在业务中有什么优势?

杜龙少
  • 27

比如 Vertx 一些异步非阻塞框架,在使用的时候会要求不要阻塞线程,但是对于大部分业务来说,肯定是要处理时间的,这点可能就是阻塞了线程。

如果不阻塞原来的线程,那么就得开一个新的线程(池)处理,但是线程池同样也需要处理时间,也得需要设置线程上限。

对于这些情况来说,这些异步框架的优势是什么?解决了什么问题?

回复
阅读 1.3k
1 个回答
zxdposter
  • 1.2k

stackoverflow:spring-mvc-async-vs-spring-webflux

webflux 与 Vertx 使用的是相同的思想,所以这里也能适用。

异步非阻塞框架能够提高系统的吞吐量。

在传统的同步请求,很多地方都是需要同步去实现,比如读取流返回流,这意味着当面临大量并发时,需要很多的线程去处理。

异步框架中,等待的部分都存在于缓存中,不处理的时候并不需要生成线程,这说明你能用更少的线程处理更多的请求。

但是异步不能提高系统的性能,只是能提高系统的容量和资源利用率。

如果你亲自处理过异步的业务,你会有更加深的体会。比如现实生活中的仓库,就是一个异步的例子,仓库货物的消费者和生产者并不直接接触,他们不用同步对方的信息,只专注于自己手里的工作,生产者和消费者不需要单点连接,有效的提高了各自的效率。

试想一下,一个生产者面临非常多的消费者时,怎么能够专心的从事生产,每来一个消费者,都需要单独开一个线程去对接,必然对效率有所影响。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏