请教 C++ 多线程记录数据最优的方法。
大家好,我用Socket做了一个服务端,客户端不停的发送数据过来,服务端必须对用户发送的数据做记录,最终做成报表,客户端与服务器端通信必须在100ms以内算有效的,如果超...
大家好,我用Socket做了一个服务端,客户端不停的发送数据过来,服务端必须对用户发送的数据做记录,最终做成报表,客户端与服务器端通信必须在100ms以内算有效的,如果超过了100ms没有响应客户端,那么认为此次通信不合格,也就是我在收到客户端数据后,分析数据、记录数据后、回应客户端都必须在100ms内,这并发量很大,每秒最高达5000qps,我想请教一下大家,在这种并发、和性能要求的前提下,我如何快速的记录下客户端发过来的数据。
展开
- 你的回答被采纳后将获得:
- 系统奖励15(财富值+成长值)+难题奖励20(财富值+成长值)
展开全部
你用两个线程,甚至两台机器来做这件事情:
第一个线程/机器,响应请求,并且把请求的数据发送到另外一个线程/机器去,这个发送都在内存里面或是局域网里面,开销极小。然后回应客户端。这个可以再100ms内完成吧。
另外一个线程/机器中保存一个buff,接受第一台机器/线程的数据,在那慢慢的分析,记录。
并发很大的时候,你可能需要更多的机器,并且前面要有路由来转发请求给不同的机器。并且如果分析,记录数据需要很大的计算开销,你可能也要准备更多的机器了。
这只是一个思路,具体操作的话要具体问题具体分析了。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询