`
56553655
  • 浏览: 202916 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

郎中锋:ResourceLimit 实用指南

阅读更多



 前段时间分析社区最近发生的故障,发现了一些共性的东西,基本都是由于一些服务提供方的接口问题导致的。

随着服务化的推进,外部服务接口的调用会越来越多,如何在外部接口异常的情况下保持自身系统的稳定是我们必须要思考的问题。

最近花了点时间研究exodus2里面使用的ResourceLimit ,觉得非常适合用于解决我们现在所面临的问题,在阿甘的指导下整理了份文档。

希望能对大家有帮助,十一之后我会整理一套相对完备的解决方案,在社区产品中做试点,希望各位应用负责人多多支持。(附件是word文档)

 

ResourceLimit 实用指南

一,    遇到的问题

在日常的故障中,我们经常遇到一类问题:由于一两个关键接口出问题,而导致整个应用的连接数被耗光,进而导致整个应用荡掉的情况。生意经就出过类似的故障,由于依赖的DW Hession接口超时,导致线程堵住,这个接口的最大访问线程数没做限制,进而占用了系统所有的请求线程,导致整个应用不可用。

解决上面的问题,需要我们自己主动的对那些核心的,访问量高的,容易出问题的接口和功能点做访问资源限制,这也是设计ResourceLimit 的初衷。通过限制核心类的某个方法可使用的最大并发请求线程数去解决上面的问题。

二,解决方案

    原理比较简单,设计一个拦截器,对指定的类和方法进行拦截计数,如果并发请求的线程数小于配置的值,则响应请求,否则ResourceLimit会抛出异常 ,调用方可以捕获并处理这个异常,也可以不做处理,这样便可释放被占用的请求线程资源,保证在接口超时或者发生异常的情况下线程不会都堵在这,确保其他功能和整个应用的可用性。

    随着服务化的推进,每个应用的服务化接口越来越多,对接口资源限制的需求越来越强烈,最近百科产品的很多故障都是因为服务提供方的接口问题而间接导致的。通过上面这种方式可以把故障减小到服务接口所涉及到的那块功能点,且影响的范围只涉及并发访问的那几个用户。很大程度上可以保证我们系统的健壮性。

      系统大体的设计思路如下图:

   

 

 

,如何使用

部署很简单,只需要做简单的spring配置即可,不涉及代码修改。

(1)    首先配置拦截的资源,即拦截的类

   <bean id="batchPostOfferResourceLimit" class="com.alibaba.china.biz.common.quota.SynchronizedResource">

        <property name="resourceCount">

            <value>10</value>             //允许的最大并发线程数

        </property>

        <property name="resourceName">

            <value>BatchPostOffer</value//资源名称--只要唯一即可

        </property>

      </bean>

(2)    配置拦截的方法

   <bean id="batchPostOfferResourceLimitInterceptor" class="com.alibaba.china.biz.common.quota.ResourceLimitIntercepter">

        <property name="methodName">

            <value>doUploadExcel</value>

        </property>

        <property name="synchronizedResource">

            <ref bean="batchPostOfferResourceLimit"/>

        </property>

</bean>

(3)    把拦截器加入到该类的spring配置中

<!-- 批量发布Offer(通过Excel上传),使用了资源限制器 -->

       <bean id="batchOfferAO" class="org.springframework.aop.framework.ProxyFactoryBean"

              parent="baseAO">

              <property name="interceptorNames">

                     <list>

                            <value>batchPostOfferResourceLimitInterceptor</value> //拦截器名称

                            <value>batchOfferAOTarget</value//代理的Target bean

                     </list>

              </property>

   </bean>

以上就是使用拦截器的全部代码。

使用的时候,有一点大家要注意,

(1)    最大并发线程数不可设置太大,因为:太大==没有,拦截就没啥意义了。

(2)    最大并发线程数也不可设置太小,太小会导致该接口的很多请求被block住,对响应时间有影响。因此最好结合接口的访问频率,做一个并发数评估,合理设置并发数大小。

 

四,参考资料

具体的使用代码细节大家可以参考exodus2中的src/conf/exodus2/bean/biz-quota.xml的配置。

Java拦截器模式请参考:http://sakyone.iteye.com/blog/471434

  • 大小: 38.1 KB
1
0
分享到:
评论

相关推荐

    淘宝技术架构分享.rar

    郎中锋,即“八神”,作为淘宝中文网站技术部的一员,为我们揭示了B2C商城的技术内幕。 首先,架构的核心概念是可扩展性。淘宝的技术架构必须能够应对流量的剧烈波动,比如在“双十一”等大型促销活动期间,系统...

    送你一匹马

    - 中锋:保卫处巡逻队队员,篮球主力,对师琪有好感并公开表白。 - 毛豆:与师琪一同出差,可能对师琪有感情,但显得较为犹豫。 2. 故事情节概述: - 中锋以其凶悍的性格进入保卫处巡逻队,同时对师琪产生了恋情...

    幼儿园教案2021-中班美术:格子布.doc

    2. 学习使用中锋画竖、横线条:中锋用笔是中国传统水墨画的重要技巧,让孩子学会让笔尖垂直于纸面,这样画出的线条更稳定,有利于形成格子布的规整效果。 活动准备: 教学中提供范例可以激发孩子们的模仿欲望,提高...

    PersonNotes:个人笔记集中营,快中锋的形式记录技术性Notes ..:books::hot_beverage::keyboard_selector::headphone:

    记事本笔记

    超实用柳体字帖.doc

    ”这句话揭示了点的书写方法,强调了中锋运笔和收笔的技巧。点分为方点和圆点,方点要有力度,行笔中锋,有顿挫;圆点则要求圆润,稍呈长条形,避免像篆书中的点那样过于饱满。在布局上,点与点之间需相互呼应,单个...

    An Introduction to Decision Tree

    ### 决策树简介 决策树(Decision Tree)是一种常用的数据挖掘方法,广泛...通过上述案例分析,我们可以看出决策树是一种非常实用的机器学习方法,它不仅可以用于预测和分类,还可以帮助人们理解数据中的模式和规律。

    07界外球战术.ppt

    2. 中锋与大前锋掩护进攻:这涉及中锋和大前锋之间的挡拆配合,中锋为大前锋设置掩护,帮助其摆脱防守者,创造突破或投篮的空间。 3. 掩护后连续切入配合:一名球员掩护后,另一名球员利用这个空档进行连续的切入,...

    04半场人盯人防守战术.ppt

    1. **反掩护通过中锋进攻**:外围球员通过掩护移动来创造空间,让中锋得到接球机会,进而进行连续进攻。 2. **利用中锋掩护进攻**:中锋为队友提供掩护,帮助队友摆脱防守,形成进攻机会。 此外,**移动进攻法**是...

    FM09潜力值高的人

    - 位置:左中场(LM) / 中锋(CF) / 攻击型中场(AM) - 特性:盘带者(Dribbler) 2. **Steven Defour** - **比利时** - 国籍:比利时 - 年龄:20岁 - 潜力值:8星 - 初始数值:73 - 位置:攻击型中场(AM) / 右...

    小学英语双语阅读系列伟大运动员:威尔特张伯伦素材202003021249

    7. 中锋(Center):在篮球比赛中,中锋通常是球队的内线支柱,负责篮板球、防守和篮下进攻。张伯伦作为中锋,其身高和身体素质使他在篮下的统治力无人能敌。 8. 体育与教育结合:通过双语阅读材料,学生不仅可以...

    毛笔字基本笔画入门.pdf

    长横:逆锋起笔,向下顿笔,提笔右上行,中锋行笔,稍向上提笔,顿笔向右下回锋。 短横:向左逆锋起笔,向右下顿笔,提笔折锋向右,蓄势后向右行笔,提笔向右下顿笔,提笔回锋收笔。 凸横:向左逆锋起笔,向右下...

    softmax_variants:适用于softmax变体的PyTorch代码

    中锋失利:温彦东,张凯鹏,李志峰和乔巧。 一种用于深度人脸识别的判别性特征学习方法。 ECCV 2016 Cosface损失:王浩,王一彤,周正,邢吉,狄宏恭,周静超,李志峰和刘伟。 CosFace:用于深脸识别的大余量余弦...

    NBA2K10 霍华德MP存档

    德怀特·霍华德,绰号“超人”,是NBA历史上最具统治力的中锋之一,以其出色的篮板球、盖帽和篮下进攻能力著称。这个存档可能包含了他的高级别属性、技能和成就,让玩家可以直接体验到一个强大角色的游戏乐趣,无需...

    美术欣赏:奔马.doc

    3. **了解水墨画技巧**:活动要求孩子们了解水墨画中“中锋”和“侧锋”线条的区别。中锋行笔产生的线条饱满、有力,而侧锋则线条变化丰富,更具表现力。这种线条的不同运用是中国水墨画的一大特色。 4. **音乐与...

    壶趣小学美术湘美六年级下册PPT教案.pptx

    - 干湿中锋、淡墨中锋、淡墨侧锋、浓墨等是中国传统绘画中的技法,课件中提及这些技法,旨在让学生了解如何用不同的笔法表现出茶壶的质感和形态。 6. **艺术欣赏与创作**: - 通过对名家作品的欣赏,学生可以学习...

    英语晨读精华-高清PDF

    - **Week1 Day2《姚明:新式中锋》**: 介绍姚明在篮球界的地位及其对篮球运动的影响,适合对中国体育有兴趣的学习者。 - **Week1 Day3《吹牛》**: 通过幽默的方式讲述了一个关于吹牛的故事,帮助学习者了解英语中的...

    永字八法-毛笔字练习.doc

    2. **勒(横)**:类似于控制马匹的缰绳,起笔逆锋,然后向下顿笔,接着提笔向右上行,保持中锋行笔,最后回锋收笔。 - 长横:逆锋起笔,向下顿笔,提笔右上行,中锋行笔,稍向上提笔,顿笔向右下回锋。 - 短横:...

    医学数据集(YOLOV5目录格式):足球场上运动员身份位置检测(5类别,包含训练集、验证集)

    【数据集介绍】足球场上运动员身份位置数据,5类别:中锋、后卫等等5类别 【数据总大小压缩后】397 MB(数据分为分为训练集和验证集) 训练集datasets-images-train:2095张图片和2095个标签txt文件组成 验证集...

    2011年小学区赛 信息学真题

    具体规则为:a和b只能打前锋,c和d只能打后卫,e不能打中锋,而f和g只能打中锋。同时还需要满足前锋至少175cm,中锋至少173cm的条件。参赛队伍由2名前锋、1名中锋和2名后卫组成。 **知识点**: - **组合数学**:...

    小学毛笔字基本笔画PPT教案.pptx

    4. **中锋行笔**:毛笔字的魅力在于中锋行笔,即笔尖始终沿着笔画的中心线移动,保证线条的饱满和稳定。 5. **提笔**:在行笔过程中,适时提笔可以调整笔画的粗细和节奏,增加书法的韵律感。 6. **回锋收笔**:在...

Global site tag (gtag.js) - Google Analytics