博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
重构系统的套路-提高并发能力
阅读量:6096 次
发布时间:2019-06-20

本文共 744 字,大约阅读时间需要 2 分钟。

hot3.png

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

异步

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

缓存

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

并行

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

转载于:https://my.oschina.net/u/1000241/blog/1805142

你可能感兴趣的文章
聊聊架构设计做些什么来谈如何成为架构师
查看>>
Java并发编程73道面试题及答案
查看>>
iOS知识小集·设置userAgent的那件小事
查看>>
移动端架构的几点思考
查看>>
Tomcat与Spring中的事件机制详解
查看>>
Spark综合使用及用户行为案例区域内热门商品统计分析实战-Spark商业应用实战...
查看>>
初学者自学前端须知
查看>>
Retrofit 源码剖析-深入
查看>>
C#由变量捕获引起对闭包的思考
查看>>
QTP的那些事—WMI+SQL分析查询工具
查看>>
Android中EditText
查看>>
最近笔记本电脑开机启动正常,进入黑屏?
查看>>
【字符串排序】n个数连接得到最小或最大的多位整数
查看>>
内存对齐与ANSI C中struct型数据的内存布局 【转】
查看>>
Jmeter之Http Cookie Manager
查看>>
极速理解设计模式系列:16.迭代器模式(Iterator Pattern)
查看>>
Java刷题知识点之内存溢出和内存泄漏的概念、区别、内存泄露产生原因、内存溢出产生原因、内存泄露解决方案、内存溢出解决方案...
查看>>
Java:正则表达式的详解
查看>>
i2c 协议解析【转】
查看>>
Kali信息收集系列:(都是我以前的笔记整理了一下,就没加水印,习惯就好)...
查看>>