软件性能设计:异步神话?
?? 常听到有人说,把我们系统改造一下,支持异步协议,这样性能会提高。事情真的会是这样么?真相是是什么呢?
?? 把你的系统比作一个桶,无论你用何种方法往你倒水,桶能装的水的容量是不变的。系统也类似,无论你用同步还是异步,吞吐量不会有本质变化。唯一的好处,同步变成异步,可能会使客户端,服务端双方去掉不必要的同步等待。使得双方都能继续做其他的事情,也可以继续接收请求,也可以处理业务,然而系统容量就这么多,不可能通过这方式转化来提供吞吐量。相反,如果异步设计不好,还可能导致性能(延迟,吞吐量)都有所降低,因为有时候异步实现也是有代价的。
那异步有什么好处呢?在假设服务器处理能力绰绰有余的情况下,使用异步协议能使得客户端能最大发挥它能能力,这是因为减少了等待响应时间。但客户端便成相对来说麻烦。在服务器端,异步使得SLA得以实现,可以很好提供的服务质量
?? 异步是个神话,但不必要迷恋这个神话。妄图通过异步使得系统响应时间从180秒到90秒,是不可能的,得到的可能也许是系统响应变成200秒
1 楼 SINCE1978 2011-02-12 10个任务同步执行、每个任务平均耗时1秒一共需10秒。异步执行、如果最耗时任务花3秒则一共需3秒。 2 楼 javamonkey 2011-02-14 在CPU“有能力”同时” 异步执行这10个任务的时候,你算的对的。 3 楼 SINCE1978 2011-02-15 永远不要去质疑CPU “有没有能力”,只要知道可以有就行了
只要知道饭店可以有蛋炒饭我们就可以直接点
而不是因为害怕没有干脆不点菜是不是?
如果你要吃油炸雪糕,那才要认真考虑没有怎么办的问题。 4 楼 javamonkey 2011-02-15 风险就在这,客户不再提供升级硬件的钱,说把同步改成异步就可以增加吞吐量。你如何回答