在web應用中,同一時間有大量的客戶端請求同時發送到服務器,例如搶購、秒殺等。這個時候如何避免將大量的請求同時發送到業務系統。
第一種方法:在容器中配置大請求數,如果大于改請求數,則客戶端阻塞。該方法有效的阻止了大量的請求同時訪問業務系統,但對用戶不友好。
第二種方法:使用過濾器,保證一定數量的請求能夠正常訪問系統,多余的請求先跳轉到排隊頁面,由排隊頁面定時發起請求。過濾器實現如下:
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(); } }
分享名稱:Javaweb應用使用限流處理大量的并發請求詳解-創新互聯
文章URL:http://www.yijiale78.com/article34/hhdpe.html
成都網站建設公司_創新互聯,為您提供網站維護、微信公眾號、自適應網站、網站策劃、標簽優化、用戶體驗
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯