首页
题库
面试
求职
学习
竞赛
More+
所有博客
搜索面经/职位/试题/公司
搜索
我要招人
去企业版
登录 / 注册
首页
>
试题广场
>
为server端设计一个请求控制模块。
[问答题]
下图所示,server接收调用方发送的请求(request)并转发给handler处理。每个调用方有名称(name)和优先级(weight),所有调用方发送同一种请求,而且有可能短时间内发送大量请求(请求尖峰)。Handler每秒最多能够处理N个请求。现在需要为server设计一个请求控制模块,要求:
a) 调用方weight值越高的请求,平均等待时间越低
b) 减小请求尖峰的冲击
c) 不能导致handler压力过大
添加笔记
邀请回答
收藏(64)
分享
纠错
2个回答
添加回答
2
推荐
大漠苍鹰
a),可使用优先级队列进行辅助,weight越大的优先级越高。由于所有请求都是同一种请求,所以可以将其统一封装管理。
在Java中可以使用 PriorityQueue<T> 进行处理,队列中存放待执行的请求。该优先级队列的元素需要继承Comparable接口用来实现比较,实现的时候用weight进行比较。
b)为减小尖峰的冲击,可以使用线程池,即运用线程池,将可执行的线程的最大值规定下来,当尖峰来临时,线程池可根据待执行的队列中的任务数量调用线程,当线程池中的所有线程都处于busy状态的时候,剩下的任务在队列中等待。直到有空余线程的时候,再从队列中取出任务进行操作。
该方法也可用于C)问题中,避免handler压力过大,对请求处理的线程数量进行限制,使得handler的处理能力高于最大任务量即可。
编辑于 2015-02-03 20:11:12
回复(1)
0
sss534534
weight 定义为处理所需时间,按照段作业优先方式,使得平均等待时间最短
发表于 2014-12-09 19:40:01
回复(0)
这道题你会答吗?花几分钟告诉大家答案吧!
提交观点
问题信息
人人网
系统设计
来自:
人人网2015研发笔试卷D
上传者:
凯宇
难度:
2条回答
64收藏
13343浏览
热门推荐
相关试题
用代码实现在页面的固定区域内实现图...
人人网
2011
Javascript
前端工程师
评论
(17)
来自
人人网2011前端工程师笔试卷
大规模的字典中,需要词与词中间的搭...
查找
分布式
系统设计
百元难题
评论
(0)
系统设计题:设计一个服务调度管理器...
百度
高级算法
系统设计
评论
(1)
市场与销售的区别在哪里?
市场营销
评论
(1)
扫描二维码,关注牛客网
意见反馈
下载牛客APP,随时随地刷题