(vertx)异步非阻塞在业务中有什么优势?
比如 Vertx 一些异步非阻塞框架,在使用的时候会要求不要阻塞线程,但是对于大部分业务来说,肯定是要处理时间的,这点可能就是阻塞了线程。
如果不阻塞原来的线程,那么就得开一个新的线程(池)处理,但是线程池同样也需要处理时间,也得需要设置线程上限。
对于这些情况来说,这些异步框架的优势是什么?解决了什么问题?
比如 Vertx 一些异步非阻塞框架,在使用的时候会要求不要阻塞线程,但是对于大部分业务来说,肯定是要处理时间的,这点可能就是阻塞了线程。
如果不阻塞原来的线程,那么就得开一个新的线程(池)处理,但是线程池同样也需要处理时间,也得需要设置线程上限。
对于这些情况来说,这些异步框架的优势是什么?解决了什么问题?
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
stackoverflow:spring-mvc-async-vs-spring-webflux
webflux 与 Vertx 使用的是相同的思想,所以这里也能适用。
异步非阻塞框架能够提高系统的吞吐量。
在传统的同步请求,很多地方都是需要同步去实现,比如读取流返回流,这意味着当面临大量并发时,需要很多的线程去处理。
异步框架中,等待的部分都存在于缓存中,不处理的时候并不需要生成线程,这说明你能用更少的线程处理更多的请求。
但是异步不能提高系统的性能,只是能提高系统的容量和资源利用率。
如果你亲自处理过异步的业务,你会有更加深的体会。比如现实生活中的仓库,就是一个异步的例子,仓库货物的消费者和生产者并不直接接触,他们不用同步对方的信息,只专注于自己手里的工作,生产者和消费者不需要单点连接,有效的提高了各自的效率。
试想一下,一个生产者面临非常多的消费者时,怎么能够专心的从事生产,每来一个消费者,都需要单独开一个线程去对接,必然对效率有所影响。