请教 C++ 多线程记录数据最优的方法。

大家好,我用Socket做了一个服务端,客户端不停的发送数据过来,服务端必须对用户发送的数据做记录,最终做成报表,客户端与服务器端通信必须在100ms以内算有效的,如果超... 大家好,我用Socket做了一个服务端,客户端不停的发送数据过来,服务端必须对用户发送的数据做记录,最终做成报表,客户端与服务器端通信必须在100ms以内算有效的,如果超过了100ms没有响应客户端,那么认为此次通信不合格,也就是我在收到客户端数据后,分析数据、记录数据后、回应客户端都必须在100ms内,这并发量很大,每秒最高达5000qps,我想请教一下大家,在这种并发、和性能要求的前提下,我如何快速的记录下客户端发过来的数据。 展开
 我来答
  • 你的回答被采纳后将获得:
  • 系统奖励15(财富值+成长值)+难题奖励20(财富值+成长值)
javaallstar
推荐于2016-01-28 · TA获得超过533个赞
知道小有建树答主
回答量:154
采纳率:100%
帮助的人:191万
展开全部

你用两个线程,甚至两台机器来做这件事情:

  1. 第一个线程/机器,响应请求,并且把请求的数据发送到另外一个线程/机器去,这个发送都在内存里面或是局域网里面,开销极小。然后回应客户端。这个可以再100ms内完成吧。

  2. 另外一个线程/机器中保存一个buff,接受第一台机器/线程的数据,在那慢慢的分析,记录。

  3. 并发很大的时候,你可能需要更多的机器,并且前面要有路由来转发请求给不同的机器。并且如果分析,记录数据需要很大的计算开销,你可能也要准备更多的机器了。


这只是一个思路,具体操作的话要具体问题具体分析了。

本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式