国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Javaweb應用使用限流處理大量的并發請求詳解

Javaweb應用使用限流處理大量的并發請求詳解

2021-02-03 11:25在遠行的路上 Java教程

這篇文章主要介紹了Javaweb應用使用限流處理大量的并發請求詳解,還是挺不錯的,這里分享給大家,供需要的朋友參考。

在web應用中,同一時間有大量的客戶端請求同時發送到服務器,例如搶購、秒殺等。這個時候如何避免將大量的請求同時發送到業務系統。

第一種方法:在容器中配置最大請求數,如果大于改請求數,則客戶端阻塞。該方法有效的阻止了大量的請求同時訪問業務系統,但對用戶不友好。

第二種方法:使用過濾器,保證一定數量的請求能夠正常訪問系統,多余的請求先跳轉到排隊頁面,由排隊頁面定時發起請求。過濾器實現如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class ServiceFilter implements Filter {
    
    private static final int MAX_COUNT = 20;
    
    private AtomicInteger filterCount = 0;
 
    public void doFilter(ServletRequest request, ServletResponse response,
            FilterChain chain) throws IOException, ServletException {
        System.out.println("before"+filterCount);
        if(filterCount > MAX_COUNT) {
            //請求個數太多,跳轉到排隊頁面
            request.getRequestDispatcher("index.jsp").forward(request, response);
        } else {
            //請求個數加1
            filterCount.incrementAndGet();
 
            chain.doFilter(request, response);
            //訪問結束,請求個數減1
            filterCount.decrementAndGet();
        }
    }

此種方式的實現就是限流。可以參考RateLimiter的令牌桶限流策略的實現。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
public class RateLimiterUtils {
    private static Logger logger = LoggerFactory.getLogger(RateLimiterUtils.class);
    private static final ConcurrentHashMap<String, RateLimiter> resourceLimitMap =
            new ConcurrentHashMap<String, RateLimiter>();
    
    /**
     * 限流
     * @param resource 需要限流的對象的標識
     * @return true表示得到了許可,沒有達到限流閥值,false表示得不到許可,達到了限流閥值。
     * @author: hejinen
     * @date:2016年10月19日 上午11:08:49
     */
    public static boolean rateLimit(String resource) {
        RateLimiter limit = getRateLimit(resource);
        return limit.tryAcquire();
    }
    /**
     * 獲取某個需限流對象的RateLimiter,如不存在則創建新的
     * @param resouce 需要限流的對象標識
     */
    public static RateLimiter getRateLimit(String resource) {
        RateLimiter limit = resourceLimitMap.get(resource);
        if(limit == null) {
            synchronized(RateLimiterUtils.class) {
                limit = resourceLimitMap.get(resource);
                double qps = getQpsByResource(resource);
                if(limit == null) {
                    limit = RateLimiter.create(qps);
                    resourceLimitMap.put(resource, limit);
                    LoggerUtil.info(RateLimiterUtils.class, "create rate limiter for key:{0},QPS:{1}", resource,qps);
                }
            }
        }
        return resourceLimitMap.get(resource);
    }
}

總結

以上就是本文關于Javaweb應用使用限流處理大量的并發請求詳解的全部內容,希望對大家有所幫助。有什么問題可以隨時留言,小編會及時回復大家的。感謝朋友們對本站的支持!

原文鏈接:http://blog.csdn.net/lzy_lizhiyang/article/details/47951423

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 久久人人爽爽爽人久久久 | 波多野结衣先锋影音 | 成人在线不卡 | 国产精品福利电影网 | 中文久久 | 黄色片网站在线 | 在线中文| 国产一区二区av | 欧美日韩一区二区三区不卡视频 | 成人亚洲欧美 | 欧洲精品二区 | 在线播放视频一区 | 久久香蕉国产视频 | 久在线 | 伊人伊人伊人 | 一区二区在线视频 | 在线免费视频一区二区 | av免费在线观看网站 | 五月激情综合 | 久久99视频这里只有精品 | 冥王星之恋泰剧在线观看 | av成人毛片 | 亚洲a在线播放 | 国产视频网 | 日本精品久久 | 欧美影院 | 最新国产一区 | 亚洲国产精品欧美一二99 | 午夜色电影 | 欧美激情视频一区二区三区在线播放 | 在线看黄色毛片 | 中文字幕高清在线观看 | 在线观看91 | 亚洲 欧美 日韩 在线 | 一级特黄bbbbb免费观看 | 亚洲色图在线观看 | 久久九 | www.99久| 狠久久 | 91久久国产综合久久 | 蜜月久综合久久综合国产 |