1、频繁读的请求
优化思路:
增加缓存(所有人看到的数据一样,适合做缓存),常用redis进行缓存,
带来问题:
易增加网络IO消耗,网络存在抖动时,缓存无效,且在网络恢复后,大量请求,易把redis击穿;
解决方案:
在java层加本地缓存,设定过期时间(一般5s),
整体思路:
硬盘的读->内存读->网络缓存->本地缓存
2、频繁的写请求
优化思路:
使用kafak消息队列,将并发写操作,换成串行操作,将实时一致性,换成最终一致性
带来问题:
对mysql写造成一定压力,写动作持续时间长,导致主从同步差,读性能降低
解决方案:
针对多条数据变更,但实际是操作一条数据,进行合并写的操作
3、写完之后马上读数据,数据的强一致性
该业务不适合用缓存,采用分库形式,分散写数据的压力