情况如下:
我有一个带有脚本的node.js服务器,它需要很长时间才能完成。 该脚本获取一个ID,在数据库中查找哪些图片属于此ID,然后缓存图像,一旦所有图像都被缓存,它就会完成。
现在问题是可能有2个或更多人同时使用此功能。一旦有多个人试图获取所有这些图像,图像就会被合并到一起,人A得到人A + B的照片,而人B也得到A + B的照片。
现在我知道一个工人需要1个cpu。我编辑了这个,所以我可以在1个CPU上拥有多个工作人员。但是,当CPU使用率非常高时,它们只会从工作人员切换。 当有人已经忙于获取这些图像时,我想切换工作人员,而其他人也试图获取他/她的图像。 (每个人都不同。)
如何做到这一点?因为群集仅在CPU使用率较高时才切换工作程序。或者我错误地理解了这一点?
答案 0 :(得分:0)
没有为此进行群集。
您使用群集来避免一个核心100%忙碌而其他核心几乎没有做任何事情的情况 - 例如:
您在代码中不正确地处理并发请求时遇到问题,而群集无法解决这个问题。即使您拥有1000名工作人员的集群,当您收到1001个请求并且所有投注都已关闭时,仍然会出现这种情况。
使用Node你总是要考虑并发性,因为如果不这样做,你将无法使用像添加群集这样的简单解决方案来解决问题。
您甚至没有显示一行代码,因此无法告诉您它有什么问题,但显然存在不正确的请求处理问题。也许你使用全局变量?也许你把一些国家存放在错误的范围内?您描述的情况永远不会发生在任何Node应用程序中,并且您询问的解决方案无论如何都无法解决。你需要修改你的代码。