今天在脉脉上看到一道蚂蚁的面试题,尝试解答一下
理解题目
首先题目的场景是高并发场景下,大量的请求先查询缓存,缓存查询不到的情况下,直接请求DB(DB存在该条数据),这个场景通常叫做“缓存击穿”,这样可能会给DB造成很大的压力。
解决这个问题的思路就是用另外一个结构来对高并发的流量进行削峰,最简单的方式就是引入一个新的线程池来处理这些请求。
尝试解答
package com.practice.jdk;
import org.apache.commons.lang3.StringUtils;
import java.util.HashMap;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
import java.util.logging.Logger;
public class Demo {
private Logger logger = Logger.getLogger(Demo.class.g