后端服务实战之性能优化

您所在的位置:网站首页 项目优化思路 后端服务实战之性能优化

后端服务实战之性能优化

2023-09-03 21:47| 来源: 网络整理| 查看: 265

本文简单介绍下后端服务开发中常用的一些性能优化策略。

1、代码

优化代码实现是第一位的,特别是一些不合理的复杂实现。如果结合需求能从代码实现的角度,使用更高效的算法或方案实现,进而解决问题,那是最简单有效的。

2、数据库

数据库的优化,总体上有3个方面:

1)  SQL调优:除了掌握SQL基本的优化手段,使用慢日志定位到具体问题SQL,使用explain、profile等工具来逐步调优。

2)  连接池调优:选择高效适用的连接池,结合当前使用连接池的原理、具体的连接池监控数据和当前的业务量作一个综合的判断,通过反复的几次调试得到最终的调优参数。

3)  架构层面:包括读写分离、主从库负载均衡、水平和垂直分库分表等方面,一般需要的改动较大,需要从整体架构方面综合考虑。

3、缓存 分类

本地缓存(HashMap/ConcurrentHashMap、Ehcache、RocksDB、Guava Cache等)。

缓存服务(Redis/Tair/Memcache等)。

设计关键点

1、什么时候更新缓存?如何保障更新的可靠性和实时性?

更新缓存的策略,需要具体问题具体分析。基本的更新策略有两个:

1)  接收变更的消息,准实时更新。

2)  给每一个缓存数据设置5分钟的过期时间,过期后从DB加载再回设到DB。这个策略是对第一个策略的有力补充,解决了手动变更DB不发消息、接收消息更新程序临时出错等问题导致的第一个策略失效的问题。通过这种双保险机制,有效地保证了缓存数据的可靠性和实时性。

2、缓存是否会满,缓存满了怎么办?

对于一个缓存服务,理论上来说,随着缓存数据的日益增多,在容量有限的情况下,缓存肯定有一天会满的。如何应对?

1)  给缓存服务,选择合适的缓存逐出算法,比如最常见的LRU。

2)  针对当前设置的容量,设置适当的警戒值,比如10G的缓存,当缓存数据达到8G的时候,就开始发出报警,提前排查问题或者扩容。

3)  给一些没有必要长期保存的key,尽量设置过期时间。

3、缓存是否允许丢失?丢失了怎么办?

根据业务场景判断,是否允许丢失。如果不允许,就需要带持久化功能的缓存服务来支持,比如Redis或者Tair。更细节的话,可以根据业务对丢失时间的容忍度,还可以选择更具体的持久化策略,比如Redis的RDB或者AOF。

缓存问题

1、缓存穿透

       描述:缓存穿透是指缓存和数据库中都没有的数据,而用户不断发起请求,如发起为id为“-1”的数据或id为特别大不存在的数据。这时的用户很可能是攻击者,攻击会导致数据库压力过大。

      解决方案:

1)  接口层增加校验,如用户鉴权校验,id做基础校验,id



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3