搜索 | 会员  
常用的后台性能优化六种方式:缓存化+服务化+异步化
来源: CIO之家的朋友们   作者:CIO之家的朋友  日期:2021/9/15  类别:编程语言  主题:JAVA  编辑:Vivian
常用的后台性能优化六大方式01.缓存化缓存可以称的上是性能优化的利器,使用缓存时需要考虑缓存命中率、缓存升级、数据一致性、缓存穿透及雪崩、Value过大等问题

常用的后台性能优化六大方式

01. 缓存化

缓存可以称的上是性能优化的利器,使用缓存时需要考虑缓存命中率、缓存升级、数据一致性、缓存穿透及雪崩、Value过大等问题,可以通过mutiGet将屡次请求合并一次、异步访问等方式来提升缓存读取的性能。

02. 硬件更新

硬件问题对性能的影响不容忽视。

举一个例子:一个DB集群经常有慢SQL报警,业务排查下来发现SQL都很简单,该做的索引优化也都做了。后来DBA同学帮忙定位到问题是硬件过旧导致,将机械硬盘更新成固态硬盘之后报警立马消失了,效果立竿见影!

03. 业务逻辑优化

业务逻辑优化经常会容易被忽略,但效果却往往比数据库调优、JVM调优之类的来的更显著。

举一个例子,12306春运抢火车票的场景,因为访问的人多,客户点击“查票”之后系统会非常卡,进度条非常慢,作为客户,我们会习惯性的再去点“查票”,可能会连续点个好几次。假设平均一个客户点5次,则后台系统负载就添加了5倍!而其中80%的请求是重复请求。这个时候我们可以通过产品逻辑的方式来优化,比方,在客户点击查询之后将“按钮置灰”,或者者通过JS控制xx秒只能只能提交一次请求等,有效的阻拦了80%的无效流量。

04. 服务化

做服务化最基础的是按业务做服务拆分,避免跨业务间的互相影响,数据和服务同时拆分。同一个业务内部我们还按计算密集型/IO密集型的服务拆分、C端/B端服务拆分、核心/非核心服务拆分、高频服务单独部署等准则做拆分。

05. 异步化

异步化可以利用线程池、消息队列等方式实现。

使用线程池的时候肯定要注意核心参数的设置,可以通过监控工具去观测实际创立、活跃、空闲的线程数,结合CPU、内存的使用率情况来做线程池调优。

另一种是通过NIO实现异步化,一切网络IO皆可异步:RPC框架、Servlet 3.0提供的异步技术、Apache HttpAsyncClient、缓存异步接口等等。

06. 利用搜索引擎

复杂查询以及少量聚合计算不适合在数据库中做,可以利用搜索引擎来实现,另外搜索引擎还可以帮我们很好的处理跨库、跨数据源检索的场景。


德仔网尊重行业规范,每篇文章都注明有明确的作者和来源;德仔网的原创文章,请转载时务必注明文章作者和来源:德仔网;
头条那些事
大家在关注
我们的推荐
也许感兴趣的
干货
了解一下吧