一次请求对应一次返回,QPS累加1,那么如果一次请求没有返回或者是异步调用,QPS是否要累加?更简单点,当接口没有返回值时,我是否可以无止境的调用,接口的极限处理能力是多少?
我们通常都说异步的性能要比同步好,单从流程上分析,少了返回信息处理时间,肯定是能够提升接口性能,但是如果你只想到这一点说明你还是不理解高并发。
一次请求除了业务处理需要耗时,数据返回的时候也是要耗时的,途径的每一个网络设备都可能成为高并发的功能要素。
通常我们说做高并发设计,其实是在解决业务在一定流量的前提下的业务可用性性问题。当你的QPS是100,业务接口可用性为4个9,当QPS提升到1000,业务接口可用性下降为3个9,当QPS是10000,业务接口可用性下降为2个9,当QPS是100000,业务接口可用性下降为1个9。哈哈现在就很严重了,因为每10次调用就会有1次失败,这个体验是非常差的。当然这个时候并不能说明我们的业务接口是因为不可用造成的服务等级下降,那是因为流量上来了,因为你的接口在正常流量下服务等级是非常高的。这个时候如果你不想增加机器投入,就得限流和降级,让部分请求直接失败或者友好的提示。哈哈如果你的业务是需要达到金融级别的安全等级,限流和降级是不能从根本上解决问题的,这个时候你只能向老板申请添加机器,加大硬件投入,通过集群来提升QPS。当然并不是所有的业务都可以通过加机器来解决问题的,有些需要应用自己进行业务逻辑优化,这个时候就需要通过业务架构来梳理业务逻辑,并优化业务逻辑来确保服务边界合理,无状态等,来确保水平扩展也能比较明显的提升性能。
所以说如果你能从一次简单的请求能够分析出这么多与高并发场景和要素,就说明你是真的懂高并发,并能够比较快的解决一些高并发的问题。
游侠——高级技术专家 架构师 业务负责人
文能执笔论天下,武能拿刀切蛋糕
如果觉得喜欢作者的观点,欢迎关注并点赞,谢谢!