服务的性能瓶颈

影响服务的性能因素有很多,我这里简单聊一下。
通常随着业务扩展数据量增加和并发增大,会出现接口吞吐量降低,接口访问时间增加,数据库压力过大,出现宕机或者性能明显降低。
首先优化点可以考虑代码层面:
1、代码是否存在I/O循环调用、方法使用不当(比如简单for、增强for抑或stream流使用)等问题。
2、代码中逻辑是不是太过复杂,一个搜索接口中又调用其他搜索接口,查看是否可以拆分成多个单搜索(这个需要和业务方进行沟通)
3、sql是否存在容易导致索引失效的问题,导致全表搜索。这个网上关于此问题有很多(比如模糊查询中全模糊、前模糊会导致索引失效,union和union all等等)
数据库方面可以考虑:
1、使用读写分离或者分片
读写分离,一般的使用是写主库,读从库。
这里可能会有数据一致性问题,处理方法的话:
1、通过双写主从
2、非强一致性业务场景,可以适当放弃一致性要求,提高性能。页面缓存,分布式数据缓存
3、强一致性的功能可以直接在主库进行读写。根据不同功能,选择接口是否需要一致性。
4、页面直接给提示,数据提交需要一定时间(eg:60s)让用户等待再刷新。
2、使用缓存
这个是比较行之有效的方案,这个我认为是优先于读写考虑的。

服务的性能瓶颈