因此,我正在努力想出最好的方法来拥有分布式计算客户端-服务器架构,该架构允许尽可能多的客户端,而不会对服务器造成太大负担。
*请注意,我正在使用 boost 库,尽管我还没有启动任何客户端/服务器代码。
我认为我想打开一个从客户端到服务器的 TCP 连接,说“嘿,我会为你做一些工作”,他们服务器发送一个任务和该任务的数据该连接,然后关闭该连接,以便服务器没有大量打开的套接字线程。当客户端完成处理后,它会重新连接到服务器并发送完成的数据(如果没有进一步的任务要完成,再次关闭连接)。
这是个好主意吗?执行此操作的最佳方法是什么?
服务器可能需要管理多达 256 个客户端(最大情况)。
最佳答案
您看过 Amazon 的 MapReduce 服务吗?它正是为这类事情而构建的。
http://aws.amazon.com/elasticmapreduce/
它具有巨大的可扩展性,几乎可以处理您交给它的任何工作。
编辑:如果您想要一个开放的解决方案,我建议查看 Apache Hadoop 及其 MapReduce 产品。此外,如果这对您的应用程序有利,您还可以查看 OpenStack 以托管您自己的云基础架构。
关于C++: Client-Server 分布式处理思想,发送数据后关闭连接,任务完成后重新打开?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5666306/