最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2017年11月11日 10:56:12   作者:在遠行的路上  
這篇文章主要介紹了Javaweb應用使用限流處理大量的并發(fā)請求詳解,還是挺不錯的,這里分享給大家,供需要的朋友參考。

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

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

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

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) {
			//請求個數(shù)太多,跳轉到排隊頁面
			request.getRequestDispatcher("index.jsp").forward(request, response);
		} else {
			//請求個數(shù)加1
			filterCount.incrementAndGet();

			chain.doFilter(request, response);
			//訪問結束,請求個數(shù)減1
			filterCount.decrementAndGet();
		}
	}

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

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,如不存在則創(chuàng)建新的
	 * @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應用使用限流處理大量的并發(fā)請求詳解的全部內容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站:javaweb設計中filter粗粒度權限控制代碼示例、Javaweb項目session超時解決方案、Javaweb使用cors完成跨域ajax數(shù)據(jù)交互等,有什么問題可以隨時留言,小編會及時回復大家的。感謝朋友們對本站的支持!

相關文章

  • Spring中的策略模式簡單實現(xiàn)與使用分析

    Spring中的策略模式簡單實現(xiàn)與使用分析

    這篇文章主要介紹了Spring中的策略模式簡單實現(xiàn)與使用分析,去初始化時除了?initMultipartResolver(上傳文件)沒有獲取?Properties?defaultStrategies;默認策略,其他的八大件都會使用到策略模式,需要的朋友可以參考下
    2024-01-01
  • java-spark中各種常用算子的寫法示例

    java-spark中各種常用算子的寫法示例

    這篇文章主要給大家介紹了關于java-spark中各種常用算子的寫法的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-06-06
  • 使用JDBC實現(xiàn)數(shù)據(jù)訪問對象層(DAO)代碼示例

    使用JDBC實現(xiàn)數(shù)據(jù)訪問對象層(DAO)代碼示例

    這篇文章主要介紹了使用JDBC實現(xiàn)數(shù)據(jù)訪問對象層(DAO)代碼示例,具有一定參考價值,需要的朋友可以了解下。
    2017-10-10
  • Java實現(xiàn)ZooKeeper的zNode監(jiān)控

    Java實現(xiàn)ZooKeeper的zNode監(jiān)控

    這篇文章主要介紹了Java實現(xiàn)ZooKeeper的zNode監(jiān)控問題,本文給大家介紹的非常詳細,具有一定的參考借鑒價值 ,需要的朋友可以參考下
    2019-08-08
  • SpringBoot使用GTS的示例詳解

    SpringBoot使用GTS的示例詳解

    這篇文章主要介紹了SpringBoot使用GTS的示例詳解,代碼簡單易懂,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-10-10
  • java集合Collection常用方法解讀

    java集合Collection常用方法解讀

    這篇文章主要介紹了java集合Collection常用方法解讀,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • Java 注解學習筆記

    Java 注解學習筆記

    這篇文章主要介紹了Java 注解的相關資料,幫助大家更好的理解和學習使用Java,感興趣的朋友可以了解下
    2021-03-03
  • Java中將一個列表拆分為多個較小列表的三種不同方法

    Java中將一個列表拆分為多個較小列表的三種不同方法

    有時候我們需要將大集合按指定的數(shù)量分割成若干個小集合,這篇文章主要給大家介紹了關于Java中將一個列表拆分為多個較小列表的三種不同方法,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2023-09-09
  • java 使用BigDecimal進行貨幣金額計算的操作

    java 使用BigDecimal進行貨幣金額計算的操作

    這篇文章主要介紹了java 使用BigDecimal進行貨幣金額計算的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • Spring Boot 基于注解的 Redis 緩存使用詳解

    Spring Boot 基于注解的 Redis 緩存使用詳解

    本篇文章主要介紹了Spring Boot 基于注解的 Redis 緩存使用詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05

最新評論

加查县| 无为县| 唐山市| 绵竹市| 屯门区| 青冈县| 明水县| 博野县| 洛川县| 孟州市| 吉林省| 南华县| 阿坝县| 华阴市| 裕民县| 嵊州市| 双柏县| 阿拉善右旗| 延边| 沭阳县| 河源市| 齐齐哈尔市| 南乐县| 黔江区| 枣庄市| 洛宁县| 长汀县| 竹溪县| 南投市| 丘北县| 壶关县| 宁乡县| 股票| 丹寨县| 常宁市| 如皋市| 勐海县| 中宁县| 五大连池市| 麟游县| 夏津县|