迅析 所提供的统计功能,在技术上采用了三级缓存+数据实体落地的原理。 ### 三级缓存: #### 第一级: 我们使用了 Memcache 作为第一级缓存,Memcache 是一个高性能的分布式内存对象缓存系统,通过在内存中缓存数据和对象来减少读取数据库的次数,能够很好的减轻数据库读取负载。当收到第一次统计请求后,系统会自动创建 Mencache 数据与后续请求进行内存数据交换。 #### 第二级: 而由于 Memcache 本身较为适合储存短 value ,因此当请求数量过多过快时,容易造成阻塞,拖慢统计速度。因此我们使用了 Redis 与 Memcache 进行数据交换,构建了一个并发队列(此处不赘述并发队列的处理顺序问题)作为二级缓存。通过缓存队列机制,请求端发送请求后无需等待统计程序执行完毕即可获得返回数据,极大提升统计速度。 #### 第三级: 而后,我们又将 Redis、Memcache 与 KVDB 构造了数据交换,进行整体临时储存。经实际测试,KVDB 的性能可以达到 10w QPS ,无状态对等的分布式架构,可靠快速。 逻辑关系图: ![](https://box.kancloud.cn/aae3256e236c5b371c73ee4b5316bbcf_751x752.png =550x550) * * * * * ### 数据实体落地: 我们将经过三级缓存保留下来的数据,由系统自动同步备份至 Mysql 与腾讯云对象储存 COS 作为最终数据落地保存。