似乎理解“异步”对性能的重要作用了

以前看到别人说通过异步可以提高性能总觉得无法理解。 如果一个业务本身是同步的,即使把系统的通信方式做成异步,发消息的系统不是还要等处理消息的系统弄完自己才能继续吗? 总的响应时间能有什么变化?

最近看了听了一些东西,突然明白了:
异步方式并不能直接减少单个业务的处理时间,但它可以减少无谓的阻塞,从而把浪费了的等待时间用起来,总体上提高TPS后,单个业务的处理时间也就会快起来。

比如说,你如果发一个同步请求,如果请求要持续一段时间(如长时间I/O),那处理方就得阻塞着来等你发完; 处理方应答时,如果应答要持续一段时间,那你这个请求方也得阻塞着。这浪费太多时间了,如果改成异步就不用了: 你把请求发到队列里,发的时候对方可以处理别的事情。

Leave a Comment

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.