webservies怎样解决10000个用户频繁请求服务问题?

问题描述

webservies怎样解决10000个用户频繁请求服务问题? 问题补充:283433775 写道

解决方案

我换种说法:1. 首先,你的webservice难道要处理很多数据,很慢吗,一般如果很快的话也就毫秒级的事情,一般的网络超时大概在默认20秒这样。2. 其次,对于在满足了webservice很快的前提下,你先达到10000个并发数,那你应用同时访问的数量达到百万级,会有这么大吗,至少我们公司现在的云,百万级的用户,最多也就是千级的并发数。3. 如果你的webservice访问接口里面耗费大量时间的话,你需要程序优化,加入一些模式,或者处理,让用户共享数据,多用户并发,你不能把时间耗费在处理逻辑上,最好只是传递数据上。4. 如果你的应用能达到万级的并发,那么你完全可以假设集群或者云服务,使用多路并发机制,使用多服务器负载均衡来做。
解决方案二:
大家都描述的很正确:首先在架构时应该分析到多少用户,并发请求连接有多少,这个问题归结与你web服务器以及硬件和网络的规划,数量大的话怎么集群,怎么做冗余,热备等。如果你的问题出在web服务这块,C10K的问题的话,从这个角度去分析解决问题。其次,他们都说和webService没有关系,这个是不对的,有关系而且有很大关系。这个问题从你软件层去考虑,分析你做服务端响应以个处理的所耗费的时间,和耗费的资源大小。耗费资源就掠过不说了,就是网络带宽,内存,CPU要跟上,关键还是软件处理方式。在你分析处理时间的时候,如果一个用户一次请求很快,1秒或者小到毫秒,做业务的时候你完全可以同步把业务数据返回。如果时间很长10秒甚至更长,那么你设想当10000并发时是什么情况。这种情况下你的软件业务逻辑就应该设计成异步返回给客户端了。用户请求来的时候没有返回业务数据,而是返回交行数据,告诉客户端请求成功了。至于业务数据,是你的任务在本地完成后push给他(客户端)还是它再次request,可以根据业务分析设计交互流程。很多webService都有多一些慢I/O的任务都留有查询接口,或者取回执行结果这样的设计。大体情况就是这样了,移动10086积分商城都是采用的这种慢I/O的操作。如果你现在系统运行上线,没法改了,那只能加强硬件,增大带宽,加内存,提高CPU,多服务器集群来加快响应速度,祝你好运!
解决方案三:
并不同意楼上的见解。webservice在访问时有个特点,每一个请求都会开启一个新的线程处理,所有10000个并发请求压力还是特别大得。首先从物理上来解决,增加服务器,通过5台服务器连成集群,使用负载均衡,使每台机子分担平均压力。从程序角度来说,你需要使用线程池来管理访问请求线程,只要比较好的管理,然后才能及时释放资源。使用一些比如原型模式等来优化你的程序,也许你的程序中有一句 A a = new A();10000个并发请求要生产10000个A对象,这是在是太浪费了。再者,可以考虑运用超时机制和积极拒绝机制,通过超时机制,可以分散压力,但是会延长处理时间。超时机制,可以在达到一个压力顶峰值时,积极反馈给客户端当前已经超过连接最大数,这个应该在很多地方都见到过。
解决方案四:
并发10000,这个就和webservice没有关系了webservice只是一种基于http的传输协议10000个请求或100个请求,webservice的使用都是一样的

时间: 2024-12-25 03:38:56

webservies怎样解决10000个用户频繁请求服务问题?的相关文章

阻止网页被用户频繁刷新

 一般情况下,用户浏览网页的速度都是几秒十几秒甚至更长时间刷新一页,但有时候又会遇到网页被恶意快速刷新,从而导致正常用户浏览速度缓慢,如何来解决这个问题呢?可以使用如下代码来实现每ip页面访问数量限制: <?php $min_seconds_between_refreshes = 3;#设置刷新的时间 session_start(); if(array_key_exists('last_access', $_SESSION) && time()-$min_seconds_betwee

redis来共享各个服务器的session,并同时通过redis来缓存一些常用的资源,加快用户获得请求资源的速度(转)

    时间过得真快,再次登录博客园来写博,才发现距离上次的写博时间已经过去了一个月了,虽然是因为自己找了实习,但这也说明自己对时间的掌控能力还是没那么的强,哈哈,看来还需不断的努力啊!(这里得特别说明一下本人面试的一些感受:做我们IT这一行,一定要使自己精于某个领域,再不断的去涉猎其他的领域,更重要的是学会找出各个领域的相融点,这跟我们学习书本一样,用'Java'和'计算机网络'来举下例子,我们知道Java中的socket编程,对于面向连接的编程来说(包括我们每次在网页上向服务器请求资源时),

求助IIS服务器单用户并发请求的问题

问题描述 求助IIS服务器单用户并发请求的问题 我有一个页面,有两个ajax异步请求,在同一时间(先后)请求一个站点,第一个请求是耗时的请求,要一分钟返回消息:第二个请求是即时消息,只用一秒. 页面程序执行结果是,在第一个耗时请求返回消息后,第二个请求才会被asp.net接收到,这样的用户体验非常糟糕. 我尝试配置IIS的最大工作进程数,调节至1000(默认为1),以增加w3wp的数量来提高并发处理效率.但是执行效果仍然是"即时请求"排列在"耗时请求"之后执行,即I

jsp-struts配置通配Action,拦截用户JSP请求,返回WEB-INF中的JSP页面

问题描述 struts配置通配Action,拦截用户JSP请求,返回WEB-INF中的JSP页面 小弟想把JSP页面放在WEB-INF页面下,然后配置一个Action拦截所有的JSP请求,然后在 result中返回WEB-INF页面下的JSP,有一个基本的写法如下,但是跑不通,请各位大神看看. <package name="mr" extends="struts-default"> <action name="*"> &l

用Promise解决多个异步Ajax请求导致的代码嵌套问题(完美解决方案)

问题 前端小同学在做页面的时候,犯了个常见的错误:把多个Ajax请求顺序着写下来了,而后面的请求,对前面请求的返回结果,是有依赖的.如下面的代码所示: var someData; $.ajax({ url: '/prefix/entity1/action1', type: 'GET' , async: true, contentType: "application/json", success: function (resp) { //do something on response

防止用户频繁刷新页面

防止用户频繁刷新页面,可以起到一点点的作用. 方法1,session技术:    程序代码 <%  Dim SplitReflashPage  Dim DoReflashPage  dim shuaxin_time  DoReflashPage=true  shuaxin_time=10  ReflashTime=Now()  if (not isnull(session("ReflashTime"))) and cint(shuaxin_time)>0 and DoRef

多公众号开发-微信开发者模式下,调用同一接口 怎么区分不同公众号的用户的请求

问题描述 微信开发者模式下,调用同一接口 怎么区分不同公众号的用户的请求 多微信公众号开发者模式下调用 同一个后台(同一个接口) ,怎么区分(用户)来自那一个公众号的请求 解决方案 通过参数来区分,不同的公众号提供不同的参数值 解决方案二: 请阅读文档,用户有open ID的

解决拦截器对ajax请求的拦截实例详解_jquery

解决拦截器对ajax请求的的拦截 拦截器配置: public boolean preHandle(HttpServletRequest request, HttpServletResponse response,Object obj) throws Exception { //获取判定登陆的session是否存在 String token = (String) request.getSession().getAttribute("token"); String postId = (St

雅虎累积收到来自美国政府部门1.2万到1.3万次用户数据请求

继前不久与美国国家安全局的"棱镜(PRISM)"机密监视计划划清界线之后,雅虎公司CEO玛丽莎·梅耶尔(Marissa Mayer)日前表示,公司在2012年12月1日至2013年5月31日期间累积收到来自美国政府部门1.2万到1.3万次用户数据请求.梅耶尔指出,这些数据请求中不仅包括依据<外国情报监督法案>(FISA)所发出的请求,还有刑事调查方面的请求,例如欺诈.杀人以及绑架等案件的数据请求.雅虎表示他们与大多数公司一样不能合法披露FISA的请求数量,因为这些数据都属于