电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Java RPC框架如何實現客戶端限流配置

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

關鍵資源

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

網絡請求漏斗

Java RPC框架如何實現客戶端限流配置

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

限流場景服務端限流

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

缺點

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

客戶端限流

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

請求量大,但時效性不高,此時將限流數控制小一些會比較合適請求量大,但時效性高,此時將限流數適當調高響應時間長,即慢接口,適當降低主流業務,核心業務,適當調高非主流業務,適當降低......

缺點

如果客戶端的數量不固定,那么有可能導致客戶端數量過多造成大量請求打到服務端導致處理不了的結果,所以需要嚴格監控客戶端的調用情況。

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

RPC實現

限流

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

服務引用注解上增加限流

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

創建動態代理時將限流參數傳遞到服務端

需要修改RpcProxy類,構造函數中增加服務引用注解參數,然后在invoke方法中從服務引用注解中獲取限流參數傳遞給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對象中獲取限流參數,傳遞給RpcInvocation對象。

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

AccessLimitFilter修改令牌管理器

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

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

修改invoke方法

將invocation參數傳遞給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; }

客戶端服務引用配置限流

這里配置每秒一個請求

@RpcReference(maxExecutesCount = 1)private ProductService productService;

執行結果

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

Java RPC框架如何實現客戶端限流配置

支持方法級限流

以上只支持客戶端接口級別的限流配置,可以再單獨創建一個方法級的注解來配置相關參數。

支持服務端限流

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

本文源碼

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

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

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Java
相關文章:
主站蜘蛛池模板: 高压直流电源_特种变压器_变压器铁芯-希恩变压器定制厂家 | 成都办公室装修-办公室设计-写字楼装修设计-厂房装修-四川和信建筑装饰工程有限公司 | 中央空调温控器_风机盘管温控器_智能_液晶_三速开关面板-中央空调温控器厂家 | 沥青车辙成型机-车托式混凝土取芯机-混凝土塑料试模|鑫高仪器 | 小学教案模板_中学教师优秀教案_高中教学设计模板_教育巴巴 | 法兰螺母 - 不锈钢螺母制造厂家 - 万千紧固件--螺母街 | 行业分析:提及郑州火车站附近真有 特殊按摩 ?2025实地踩坑指南 新手如何避坑不踩雷 | 活动策划,舞台搭建,活动策划公司-首选美湖上海活动策划公司 | 罗氏牛血清白蛋白,罗氏己糖激酶-上海嵘崴达实业有限公司 | 橡胶弹簧|复合弹簧|橡胶球|振动筛配件-新乡市永鑫橡胶厂 | 骨灰存放架|骨灰盒寄存架|骨灰架厂家|智慧殡葬|公墓陵园管理系统|网上祭奠|告别厅智能化-厦门慈愿科技 | 快速门厂家批发_PVC快速卷帘门_高速门_高速卷帘门-广州万盛门业 快干水泥|桥梁伸缩缝止水胶|伸缩缝装置生产厂家-广东广航交通科技有限公司 | 上海恒驭仪器有限公司-实验室平板硫化机-小型平板硫化机-全自动平板硫化机 | 温州食堂承包 - 温州市尚膳餐饮管理有限公司 | 无锡装修装潢公司,口碑好的装饰装修公司-无锡索美装饰设计工程有限公司 | 标准件-非标紧固件-不锈钢螺栓-非标不锈钢螺丝-非标螺母厂家-三角牙锁紧自攻-南京宝宇标准件有限公司 | 加气混凝土砌块设备,轻质砖设备,蒸养砖设备,新型墙体设备-河南省杜甫机械制造有限公司 | 泡沫消防车_水罐消防车_湖北江南专用特种汽车有限公司 | 粉末包装机,拆包机厂家,价格-上海强牛包装机械设备有限公司 | 水平垂直燃烧试验仪-灼热丝试验仪-漏电起痕试验仪-针焰试验仪-塑料材料燃烧检测设备-IP防水试验机 | 武汉高低温试验箱_恒温恒湿试验箱厂家-武汉蓝锐环境科技有限公司 | 代做标书-代写标书-专业标书文件编辑-「深圳卓越创兴公司」 | 台式低速离心机-脱泡离心机-菌种摇床-常州市万丰仪器制造有限公司 | 高低温老化试验机-步入式/低温恒温恒湿试验机-百科 | 送料机_高速冲床送料机_NC伺服滚轮送料机厂家-东莞市久谐自动化设备有限公司 | 百方网-百方电气网,电工电气行业专业的B2B电子商务平台 | 济南展厅设计施工_数字化展厅策划设计施工公司_山东锐尚文化传播有限公司 | 散热器-电子散热器-型材散热器-电源散热片-镇江新区宏图电子散热片厂家 | 威客电竞(vk·game)·电子竞技赛事官网 | 工程管道/塑料管材/pvc排水管/ppr给水管/pe双壁波纹管等品牌管材批发厂家-河南洁尔康建材 | 广州云仓代发-昊哥云仓专业电商仓储托管外包代发货服务 | 全自动包装秤_全自动上袋机_全自动套袋机_高位码垛机_全自动包装码垛系统生产线-三维汉界机器(山东)股份有限公司 | 北京燃气公司 用户服务中心 | 软文发布平台 - 云软媒网络软文直编发布营销推广平台 | 压接机|高精度压接机|手动压接机|昆明可耐特科技有限公司[官网] 胶泥瓷砖胶,轻质粉刷石膏,嵌缝石膏厂家,腻子粉批发,永康家德兴,永康市家德兴建材厂 | Magnescale探规,Magnescale磁栅尺,Magnescale传感器,Magnescale测厚仪,Mitutoyo光栅尺,笔式位移传感器-苏州连达精密量仪有限公司 | 工业雾炮机_超细雾炮_远程抑尘射雾器-世纪润德环保设备 | 储能预警-储能消防系统-电池舱自动灭火装置-四川千页科技股份有限公司官网 | 贴片电容-贴片电阻-二三极管-国巨|三星|风华贴片电容代理商-深圳伟哲电子 | 防火门-专业生产甲级不锈钢钢质防火门厂家资质齐全-广东恒磊安防设备有限公司 | 闪蒸干燥机-喷雾干燥机-带式干燥机-桨叶干燥机-[常州佳一干燥设备] |