常听到有人说,把我们系统改造一下,支持异步协议,这样性能会提高。事情真的会是这样么?真相是是什么呢?
把你的系统比作一个桶,无论你用何种方法往你倒水,桶能装的水的容量是不变的。系统也类似,无论你用同步还是异步,吞吐量不会有本质变化。唯一的好处,同步变成异步,可能会使客户端,服务端双方去掉不必要的同步等待。使得双方都能继续做其他的事情,也可以继续接收请求,也可以处理业务,然而系统容量就这么多,不可能通过这方式转化来提供吞吐量。相反,如果异步设计不好,还可能导致性能(延迟,吞吐量)都有所降低,因为有时候异步实现也是有代价的。
那异步有什么好处呢?在假设服务器处理能力绰绰有余的情况下,使用异步协议能使得客户端能最大发挥它能能力,这是因为减少了等待响应时间。但客户端便成相对来说麻烦。在服务器端,异步使得SLA得以实现,可以很好提供的服务质量
异步是个神话,但不必要迷恋这个神话。妄图通过异步使得系统响应时间从180秒到90秒,是不可能的,得到的可能也许是系统响应变成200秒