服务端运算量大,请教个服务端设计方案?

datahandler2 2019-05-14 12:21:16
多个终端调用服务端的一个计算接口,要求服务端计算每个请求后能及时返回计算结果。服务端接口打算以webApi供多个终端调用,因为服务端的每个请求计算量比较耗CPU,觉得挂载在IIS部署,觉得不是很合适。。。请问要如何设计服务端?
...全文
1385 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
吉普赛的歌 2019-05-19
  • 打赏
  • 举报
回复
楼主到底在做什么计算??如此花费时间??
datahandler2 2019-05-19
  • 打赏
  • 举报
回复
引用 11 楼 MasterFan2 的回复:
[quote=引用 5 楼 胖叔叔写代码 的回复:][quote=引用 4 楼 tiancaolin 的回复:]
[quote=引用 3 楼 胖叔叔写代码 的回复:]
[quote=引用 2 楼 tiancaolin 的回复:]
[quote=引用 1 楼 胖叔叔写代码 的回复:]
[quote=引用 楼主 tiancaolin 的回复:]
多个终端调用服务端的一个计算接口,要求服务端计算每个请求后能及时返回计算结果。服务端接口打算以webApi供多个终端调用,因为服务端的每个请求计算量比较耗CPU,觉得挂载在IIS部署,觉得不是很合适。。。请问要如何设计服务端?

把计算拉出去做成其他程序,这样你也可以多点布置,然后通过mq交互数据,实现计算和web容器分离。[/quote]
那WebApi在接收终端请求后,把任务提交到运算程序,WebApi这层不是要Thread.Sleep 一直等待尝试去获取响应消息?感觉这一层这样有点很“笨”[/quote]
你api睡个什么啊?你被动查询就好了啊,你mq这边有个编号,api被动查询处理结果,然后前端js主动查询处理结果啊,难道你这计算1小时你让浏览器等1小时?[/quote]
客户端是WindowsForm 桌面小程序,桌面终端程序调用Webapi去请求计算。。。如果再主动定期去调用WebApi接口,那么这个将涉及到多次的TCP连接,效能更差了。而且服务端到底要给他缓存多久结果,不是很好的方案呢。[/quote]
api是被动调用的,当然你可以客户端监听udp,打洞后等待服务端回应,但是这个方法,你要坚持打洞还不是要保持udp端口监听?[/quote]讲了这么多,还是楼主知识面太狭隘,他连什么是MP都不知道[/quote]
嗯,受教了。请多指教,多分享下。平时整天忙于项目实现,忽略了知识学习了。
MasterFan2 2019-05-19
  • 打赏
  • 举报
回复
引用 5 楼 胖叔叔写代码 的回复:
[quote=引用 4 楼 tiancaolin 的回复:] [quote=引用 3 楼 胖叔叔写代码 的回复:] [quote=引用 2 楼 tiancaolin 的回复:] [quote=引用 1 楼 胖叔叔写代码 的回复:] [quote=引用 楼主 tiancaolin 的回复:] 多个终端调用服务端的一个计算接口,要求服务端计算每个请求后能及时返回计算结果。服务端接口打算以webApi供多个终端调用,因为服务端的每个请求计算量比较耗CPU,觉得挂载在IIS部署,觉得不是很合适。。。请问要如何设计服务端?
把计算拉出去做成其他程序,这样你也可以多点布置,然后通过mq交互数据,实现计算和web容器分离。[/quote] 那WebApi在接收终端请求后,把任务提交到运算程序,WebApi这层不是要Thread.Sleep 一直等待尝试去获取响应消息?感觉这一层这样有点很“笨”[/quote] 你api睡个什么啊?你被动查询就好了啊,你mq这边有个编号,api被动查询处理结果,然后前端js主动查询处理结果啊,难道你这计算1小时你让浏览器等1小时?[/quote] 客户端是WindowsForm 桌面小程序,桌面终端程序调用Webapi去请求计算。。。如果再主动定期去调用WebApi接口,那么这个将涉及到多次的TCP连接,效能更差了。而且服务端到底要给他缓存多久结果,不是很好的方案呢。[/quote] api是被动调用的,当然你可以客户端监听udp,打洞后等待服务端回应,但是这个方法,你要坚持打洞还不是要保持udp端口监听?[/quote]讲了这么多,还是楼主知识面太狭隘,他连什么是MP都不知道
weixin_35107932 2019-05-17
  • 打赏
  • 举报
回复
在实现并行密集计算的时候,身为一名C#人员,我们要想到的不是利用webapi来解决问题,本身IIS的调度就已经很耗费CPU和内存资源了,你在进行并发访问密集计算,可想而知,如果是我,在这样的情况下,我会采用套接字的形式进行请求与响应,因为在webapi方式下,客户端在请求响应的过程中,会出现卡屏的状况,服务器如果没有计算完成,IIS势必不会返回response。你可以将处理提交到服务器端,服务器端开辟计算处理线程去计算,服务器端此时采用非阻塞的模式立刻返回,当服务器端处理结束后,将输入推到客户端并且提示客户端进行显示,这才是并发密集计算的解决方案啊。
by_封爱 2019-05-16
  • 打赏
  • 举报
回复
nginx 负载均衡 弄10个win 部署同样的东西 就行了...
吾友客 2019-05-16
  • 打赏
  • 举报
回复
可以采用负载均衡,分散在多个电脑上
xujun5031 2019-05-16
  • 打赏
  • 举报
回复
引用 8 楼 by_封爱 的回复:
nginx 负载均衡 弄10个win 部署同样的东西 就行了...
这办法好,最容易实现
  • 打赏
  • 举报
回复
引用 楼主 tiancaolin 的回复:
多个终端调用服务端的一个计算接口,要求服务端计算每个请求后能及时返回计算结果。服务端接口打算以webApi供多个终端调用,因为服务端的每个请求计算量比较耗CPU,觉得挂载在IIS部署,觉得不是很合适。。。请问要如何设计服务端?
把计算拉出去做成其他程序,这样你也可以多点布置,然后通过mq交互数据,实现计算和web容器分离。
xxlllmm 2019-05-14
  • 打赏
  • 举报
回复
如果每个计算请求的时间不长,只是占用CPU多的话,可以在服务端让每个请求排队,一个一个计算,不要并发执行多个请求
  • 打赏
  • 举报
回复
引用 4 楼 tiancaolin 的回复:
[quote=引用 3 楼 胖叔叔写代码 的回复:] [quote=引用 2 楼 tiancaolin 的回复:] [quote=引用 1 楼 胖叔叔写代码 的回复:] [quote=引用 楼主 tiancaolin 的回复:] 多个终端调用服务端的一个计算接口,要求服务端计算每个请求后能及时返回计算结果。服务端接口打算以webApi供多个终端调用,因为服务端的每个请求计算量比较耗CPU,觉得挂载在IIS部署,觉得不是很合适。。。请问要如何设计服务端?
把计算拉出去做成其他程序,这样你也可以多点布置,然后通过mq交互数据,实现计算和web容器分离。[/quote] 那WebApi在接收终端请求后,把任务提交到运算程序,WebApi这层不是要Thread.Sleep 一直等待尝试去获取响应消息?感觉这一层这样有点很“笨”[/quote] 你api睡个什么啊?你被动查询就好了啊,你mq这边有个编号,api被动查询处理结果,然后前端js主动查询处理结果啊,难道你这计算1小时你让浏览器等1小时?[/quote] 客户端是WindowsForm 桌面小程序,桌面终端程序调用Webapi去请求计算。。。如果再主动定期去调用WebApi接口,那么这个将涉及到多次的TCP连接,效能更差了。而且服务端到底要给他缓存多久结果,不是很好的方案呢。[/quote] api是被动调用的,当然你可以客户端监听udp,打洞后等待服务端回应,但是这个方法,你要坚持打洞还不是要保持udp端口监听?
datahandler2 2019-05-14
  • 打赏
  • 举报
回复
引用 3 楼 胖叔叔写代码 的回复:
[quote=引用 2 楼 tiancaolin 的回复:]
[quote=引用 1 楼 胖叔叔写代码 的回复:]
[quote=引用 楼主 tiancaolin 的回复:]
多个终端调用服务端的一个计算接口,要求服务端计算每个请求后能及时返回计算结果。服务端接口打算以webApi供多个终端调用,因为服务端的每个请求计算量比较耗CPU,觉得挂载在IIS部署,觉得不是很合适。。。请问要如何设计服务端?

把计算拉出去做成其他程序,这样你也可以多点布置,然后通过mq交互数据,实现计算和web容器分离。[/quote]
那WebApi在接收终端请求后,把任务提交到运算程序,WebApi这层不是要Thread.Sleep 一直等待尝试去获取响应消息?感觉这一层这样有点很“笨”[/quote]
你api睡个什么啊?你被动查询就好了啊,你mq这边有个编号,api被动查询处理结果,然后前端js主动查询处理结果啊,难道你这计算1小时你让浏览器等1小时?[/quote]
客户端是WindowsForm 桌面小程序,桌面终端程序调用Webapi去请求计算。。。如果再主动定期去调用WebApi接口,那么这个将涉及到多次的TCP连接,效能更差了。而且服务端到底要给他缓存多久结果,不是很好的方案呢。
  • 打赏
  • 举报
回复
引用 2 楼 tiancaolin 的回复:
[quote=引用 1 楼 胖叔叔写代码 的回复:] [quote=引用 楼主 tiancaolin 的回复:] 多个终端调用服务端的一个计算接口,要求服务端计算每个请求后能及时返回计算结果。服务端接口打算以webApi供多个终端调用,因为服务端的每个请求计算量比较耗CPU,觉得挂载在IIS部署,觉得不是很合适。。。请问要如何设计服务端?
把计算拉出去做成其他程序,这样你也可以多点布置,然后通过mq交互数据,实现计算和web容器分离。[/quote] 那WebApi在接收终端请求后,把任务提交到运算程序,WebApi这层不是要Thread.Sleep 一直等待尝试去获取响应消息?感觉这一层这样有点很“笨”[/quote] 你api睡个什么啊?你被动查询就好了啊,你mq这边有个编号,api被动查询处理结果,然后前端js主动查询处理结果啊,难道你这计算1小时你让浏览器等1小时?
datahandler2 2019-05-14
  • 打赏
  • 举报
回复
引用 1 楼 胖叔叔写代码 的回复:
[quote=引用 楼主 tiancaolin 的回复:]
多个终端调用服务端的一个计算接口,要求服务端计算每个请求后能及时返回计算结果。服务端接口打算以webApi供多个终端调用,因为服务端的每个请求计算量比较耗CPU,觉得挂载在IIS部署,觉得不是很合适。。。请问要如何设计服务端?

把计算拉出去做成其他程序,这样你也可以多点布置,然后通过mq交互数据,实现计算和web容器分离。[/quote]
那WebApi在接收终端请求后,把任务提交到运算程序,WebApi这层不是要Thread.Sleep 一直等待尝试去获取响应消息?感觉这一层这样有点很“笨”

62,243

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧