首页
题库
面试
求职
学习
竞赛
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收藏
13341浏览
热门推荐
相关试题
用 js、html、css实现一...
人人网
2011
Javascript
前端工程师
评论
(6)
来自
人人网2011前端工程师笔试卷
用代码实现在页面的固定区域内实现图...
人人网
2011
Javascript
前端工程师
评论
(17)
来自
人人网2011前端工程师笔试卷
有一台带一个千兆网卡的服务器A,会...
阿里巴巴
系统设计
评论
(34)
来自
阿里巴巴2015实习生笔试题
Linux中,一个端口能够接受tc...
人人网
网络基础
Linux
计算机网络
测试
后端开发
客户端开发
前端开发
数据
运维/技术支持
评论
(35)
来自
人人网2015研发笔试卷D
扫描二维码,关注牛客网
意见反馈
下载牛客APP,随时随地刷题