重构系统的套路-提高并发能力

Posted xiguain

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了重构系统的套路-提高并发能力相关的知识,希望对你有一定的参考价值。

提高系统并发能力,总结起来有三点:异步,缓存,并行。

异步

比如我们在某段业务逻辑中加了一个同步写kafka的操作,tp99瞬间多了30毫秒,这样在整个监控曲线看起来非常扎眼,于是我们需要将这个同步改成异步。
对于老系统需要在业务进行梳理,如果业务场景中不关心返回值,这样完全可以做成异步。
如果业务关心返回值,比如订单逻辑,很多下游服务需要传入本次主订单ID与下游服务进行连接,这样写主订单就必须变成了一个同步逻辑,但是主要关心的还是这个OrderId,我们可以建立一个OrderId生成器,这样单独的一个OrderId服务性能更好,可以将整个业务逻辑串起来。

缓存

为了提升整个逻辑链路的响应时间,我们应该将数据离访问更近,这样响应更快。
有了缓存,我们可能产生某种依赖,将尽可能多的数据放入缓存,而没有好好的进行梳理和分析。
这样缓存数据可能越来越大,内存成本越来越高,当一段促销造成的流量越来越大,如果没有进行合理的扩容,则会造成想不到的问题。
比如我们的营销活动放到redis做缓存,每个营销活动其实是有很多聚合信息,并且每个活动有失效期的,这样比较适合缓存场景的,但是某天产品同学的运营策略变了,在双11我们需要提前做一些预热,这样用户领取的优惠券的周期就变长了,如果简单的是放到了redis,其实整体的活动信息在高峰来时,原有的redis容量就造成了一定的性能影响。

并行

下游的服务我们通过建立线程池,进行异步处理,于是我们需要关心设置合理的线程池。
梳理系统的代码,将很多同步的for,while的循环改成基于Future的同步模型,提升整体并行度,达到一定的性能提升。







以上是关于重构系统的套路-提高并发能力的主要内容,如果未能解决你的问题,请参考以下文章

如何提高nfs的并发处理能力

数字资产高并发撮合币币场外交易所系统开发

并发编程高并发相关技术

高并发葵花宝典

高并发场景下,百万级订单量系统的分库分表重构经历

C# .net5 api并发怎么样