场景(按时间顺序进行)
1. 客户发送请求 1 到tomcat1,
2. tomcat1 去查询缓存(图片中的3),发现没有命中
3. 这时候去去查询db(图片中的4),
4. 返回 (图片7)
5. 另一个客服发送同样的请求到 tomcat2,(图片中的2)
6, 查询缓存,未命中(图片5)
7. 查询db (图片6)
8. 返回 (图片8)
问题
当并发请求的时候,当步骤4正在进行的时候, 步骤7 就是一个重复的查询,可能步骤7刚开始进行的时候,步骤4完成了,那步骤7就是无用的,响应降低。
好的方式应该是步骤6 结束后,去查询db 前,发现已经有同样的查询正在进行了,那就不应该再次进行查询,应该等待上一个查询结束,直接从cache里面获取结果。
我的问题是,在分布式的系统里面,如何避免这种重复查询啊。哪位朋友指点一下,谢谢了。