日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

Java RPC框架如何實現(xiàn)客戶端限流配置

瀏覽:198日期:2022-09-05 09:52:38

關(guān)鍵資源

關(guān)鍵資源總是有限的,也就意味著處理能力也有限,所以當(dāng)面對大量業(yè)務(wù)時,為了保障自己能夠有序的提供服務(wù)最經(jīng)濟的做法就是限制同一時間處理的事務(wù)數(shù)。比如銀行的工作人員,一個工作人員同時只能為一個客戶服務(wù),來多了根本處理不了,不光是一種浪費而且有可以造成混亂的局面導(dǎo)致工作人員無法工作。

網(wǎng)絡(luò)請求漏斗

Java RPC框架如何實現(xiàn)客戶端限流配置

越上層的服務(wù)器處理的事務(wù)越輕,應(yīng)付請求的能力也越強,也就意味著同一請求越上層處理時間越短。為了有效的保護下層服務(wù)器,就需要對發(fā)送給下層的請求量做限流,在下層服務(wù)器可接受的范圍內(nèi)。否則就可能會出現(xiàn)下層服務(wù)器資源耗盡而無法正常提供服務(wù)的情況。

限流場景服務(wù)端限流

如果在服務(wù)端做限流,無論有多少個客戶端,總的提供能力是固定的(感謝@ xuanbg提出的評論,指出服務(wù)端也可以對客戶端做精準的判斷,后續(xù)我再想想實現(xiàn)方案),所以不會因為客戶端數(shù)量過多而導(dǎo)致資源不足,因為處理不過來的請求會被阻塞等待獲取資源。

缺點

缺點也比較明顯,由于服務(wù)提供者整體設(shè)置了最大限流數(shù),此時所有的客戶端共享同一份限流數(shù)據(jù),那么有可能導(dǎo)致有的服務(wù)能分配到資源有些服務(wù)請求分配不到資源導(dǎo)致無法請求的情況。

客戶端限流

客戶端限流解決上服務(wù)端限流提到的問題,它能保證每個客戶端都能得到響應(yīng)。但是從其它方面考慮,必須針對不同的客戶端做不同的限流策略:

請求量大,但時效性不高,此時將限流數(shù)控制小一些會比較合適請求量大,但時效性高,此時將限流數(shù)適當(dāng)調(diào)高響應(yīng)時間長,即慢接口,適當(dāng)降低主流業(yè)務(wù),核心業(yè)務(wù),適當(dāng)調(diào)高非主流業(yè)務(wù),適當(dāng)降低......

缺點

如果客戶端的數(shù)量不固定,那么有可能導(dǎo)致客戶端數(shù)量過多造成大量請求打到服務(wù)端導(dǎo)致處理不了的結(jié)果,所以需要嚴格監(jiān)控客戶端的調(diào)用情況。

配置復(fù)雜,需要針對每個客戶端做相對精準的判斷

RPC實現(xiàn)

限流

這里指的限流是指每秒從客戶端提交到服務(wù)端的請求數(shù)量。

服務(wù)引用注解上增加限流

public @interface RpcReference { boolean isSync() default true; /** * 客戶端最大并發(fā)數(shù) * @return */ int maxExecutesCount() default 10;}

創(chuàng)建動態(tài)代理時將限流參數(shù)傳遞到服務(wù)端

需要修改RpcProxy類,構(gòu)造函數(shù)中增加服務(wù)引用注解參數(shù),然后在invoke方法中從服務(wù)引用注解中獲取限流參數(shù)傳遞給request對象。

public RpcProxy(Class<T> clazz,ReferenceConfig referenceConfig,RpcReference reference) { this.clazz = clazz; this.referenceConfig=referenceConfig; this.reference=reference; this.isSync=reference.isSync(); }public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { ... if (this.reference != null) { request.setMaxExecutesCount(this.reference.maxExecutesCount()); } ... }

AbstractInvoker修改buildRpcInvocation方法

從request對象中獲取限流參數(shù),傳遞給RpcInvocation對象。

public interface RpcInvocation { ... int getMaxExecutesCount();}

AccessLimitFilter修改令牌管理器

按接口分配令牌管理器,令牌管理器存儲在map中共享。如果未初始化則進行令牌管理器的初始化,如果已經(jīng)初始化則直接申請令牌。

public RpcInvocation buildRpcInvocation(RpcRequest request){ RpcInvocation rpcInvocation=new RpcInvocation() { ... @Override public int getMaxExecutesCount() {return request.getMaxExecutesCount(); } }; return rpcInvocation; }

修改invoke方法

將invocation參數(shù)傳遞給acquire方法。

public Object invoke(RpcInvoker invoker, RpcInvocation invocation) { logger.info('before acquire,'+new Date()); AccessLimitManager.acquire(invocation); Object rpcResponse=invoker.invoke(invocation); logger.info('after acquire,'+new Date()); return rpcResponse; }

客戶端服務(wù)引用配置限流

這里配置每秒一個請求

@RpcReference(maxExecutesCount = 1)private ProductService productService;

執(zhí)行結(jié)果

如下圖所示,每次請求相隔了一秒,達到了限流請求的目的。

Java RPC框架如何實現(xiàn)客戶端限流配置

支持方法級限流

以上只支持客戶端接口級別的限流配置,可以再單獨創(chuàng)建一個方法級的注解來配置相關(guān)參數(shù)。

支持服務(wù)端限流

服務(wù)端限流盡管有它的缺點,但為了更好的保護服務(wù)提供者,需要結(jié)合多種業(yè)務(wù)場景來配合客戶端限流一起完善,取長補短共同發(fā)揮作用。

本文源碼

https://github.com/jiangmin168168/jim-framework

文中代碼是依賴上述項目的,如果有不明白的可下載源碼

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標簽: Java
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
综合国产精品| 国产传媒在线| 亚洲欧美成人综合| 日本在线成人| 精品免费av一区二区三区| 9999国产精品| 久久久久久久久丰满| 亚洲深夜av| 日韩精品社区| 国产精品一线| 日韩av在线播放网址| 欧美日韩亚洲在线观看| 麻豆精品99| 国产精品久久久一区二区| 亚洲一区资源| 欧美一区不卡| 免费一二一二在线视频| 久久影视一区| 国产欧美一区二区精品久久久 | 一本一本久久| 中文视频一区| 亚洲精品小说| 99riav国产精品| 久久午夜精品一区二区| 婷婷精品在线观看| 成人羞羞在线观看网站| 91欧美极品| 亚洲人成亚洲精品| 蜜桃久久久久| 黄色av日韩| 日韩免费福利视频| 国产一区二区三区黄网站 | 黄色欧美日韩| 欧美欧美黄在线二区| 亚洲精品麻豆| 成人一二三区| 亚洲丝袜美腿一区| 久久三级视频| 欧美www视频在线观看| 日韩av网站在线观看| 亚洲免费成人| 久久精品av| 亚洲女同中文字幕| 999国产精品视频| 日韩高清中文字幕一区二区| 亚洲精品黄色| 一级欧美视频| 综合激情视频| 国产精品白丝久久av网站| 中文日韩欧美| 噜噜噜躁狠狠躁狠狠精品视频 | 狠狠久久伊人| 欧美亚洲一区二区三区| 最新国产拍偷乱拍精品| 人在线成免费视频| 亚洲精品88| 精品久久福利| 国产中文欧美日韩在线| 国产精品一区二区三区av | 日韩中文字幕亚洲一区二区va在线| 黑森林国产精品av| 精品亚洲成人| 国产成人精品免费视| 综合日韩av| 国产99久久久国产精品成人免费| 国产精品99一区二区三区| 日韩成人精品一区| 日韩国产网站| 日本va欧美va精品发布| 国产日韩免费| 国产一区调教| 国产专区一区| 噜噜噜躁狠狠躁狠狠精品视频| 亚洲性图久久| 久久www成人_看片免费不卡| 欧美午夜不卡影院在线观看完整版免费| 欧美日韩国产v| 少妇精品导航| 精品一区二区三区中文字幕| 日韩国产在线观看一区| 日韩av在线免费观看不卡| 加勒比视频一区| 久久久影院免费| 亚洲三级网址| 久久夜夜操妹子| 久久一二三区| 精品一区二区三区的国产在线观看 | 国产日韩在线观看视频| 国产精品99一区二区三| 亚州精品视频| 国产一区精品福利| 午夜在线视频一区二区区别| 国产精品magnet| 先锋亚洲精品| 成人一区而且| 久久香蕉精品| 亚洲伦乱视频| 视频国产精品| 免费观看久久av| 7777精品| 视频一区日韩精品| 精品91久久久久| 国产专区精品| 欧美精品二区| 欧美在线黄色| 视频一区二区三区在线| 国际精品欧美精品| 久久国际精品| 日本精品黄色| 国产高潮在线| 国产精品亚洲四区在线观看 | 99国产精品免费视频观看| 六月丁香综合在线视频| 亚洲永久精品唐人导航网址| 精品一区免费| 国产精品一二| 日韩天堂在线| 国产精品日本欧美一区二区三区| 久久高清国产| 国产欧美一级| 国产精品极品| 少妇久久久久| 红桃视频亚洲| 国产午夜一区| 99久久亚洲精品蜜臀| 欧产日产国产精品视频| 在线天堂中文资源最新版| 亚洲激情不卡| 国产精品网站在线看| 97精品97| 亚洲三级av| 精品国产麻豆| 99久久亚洲精品| 日本亚洲三级在线| 91av亚洲| 欧美一区激情| 自由日本语亚洲人高潮| 欧美影院视频| 中文字幕日韩亚洲| 99tv成人| 免播放器亚洲| 日韩高清不卡在线| 精品久久久久久久| 夜夜精品视频| 国产精品白丝久久av网站| 给我免费播放日韩视频| 黄色亚洲免费| 国产成人精品一区二区免费看京| 欧美日中文字幕| 日韩欧美中文字幕一区二区三区| 国产欧美日韩一区二区三区四区| 视频一区中文字幕精品| 亚洲三级观看| 91精品国产91久久久久久黑人| 美国三级日本三级久久99| 久久精品人人| 日韩福利视频导航| 在线观看免费一区二区| 精品视频高潮| 亚洲主播在线| 红杏一区二区三区| 亚洲69av| 午夜久久福利| 精品一区二区三区在线观看视频| 亚洲作爱视频| 日韩成人综合| 另类小说一区二区三区| 亚洲精品九九| 美女尤物久久精品| 在线一区电影| 久久精品电影| 精品欧美一区二区三区在线观看| 国产精品99久久免费观看| 亚洲午夜久久| 亚洲欧美久久久| 欧美在线影院| 久久精品中文| 欧美男人天堂| av在线资源| 在线手机中文字幕| av资源新版天堂在线| 国产一区二区三区久久久久久久久| 久久精品 人人爱| 欧美性www| 91嫩草精品| 国产日韩欧美在线播放不卡| 日欧美一区二区| 日韩av网站在线免费观看| 亚洲a级精品| 日本精品国产| 国产精区一区二区| 国产成人免费视频网站视频社区| 国产精成人品2018| 麻豆久久久久久| 成人台湾亚洲精品一区二区| 92国产精品| 欧美一级专区| 国产亚洲人成a在线v网站| 国产精品一线| 日韩三区免费|