这次咱们从根源聊:16招搞定高并发架构设计( 四 )

一般有两种做法:

一种是在程序启动的时候从外部数据源初始化大量的不怎么变的数据到内存中,在内存中形成面向搜索友好的数据结构(比如哈希表),提供快速的数据访问,之后所有的请求都无需请求数据源,采用定时拉取或监听变动消息的方式同步变动。一种是利用分布式缓存做计算结果的缓存,具有比较短的过期时间,可以挡掉大量重复请求,对于搜索条件组合较多的请求命中率差。当然,缓存除了使用空间换时间之外,一般还会利用存储介质的性能差异来提升性能,所以我们看到通过内存缓存数据比较常见。缓冲

和缓存相近但又截然不同的概念是缓冲。IO操作一般都会使用缓冲区,在我们实现业务的时候也可以利用这种思想。

对非时间敏感的调用进行适当蓄水,甚至合并,一次性提交到后端服务,比如玩一个抓红包的游戏,用户在屏幕上点点点来抓红包,是否真的有必要每次都向数据库更新红包余额呢?

还是可以在服务端缓冲一下,10次更新一次余额甚至整个游戏只提交一次?

还比如,我们需要对内存中的一些数据做处理,处理的时间会比较久,在处理的时候显然不能持续服务业务了。

推荐阅读