我有3个节点群集,我正在使用IGNITE计算进行并行操作,我使用apply方法。当用三个节点群集执行我的作业时,需要15-20sec,当我运行工作时使用单个节点,需要3-5秒,所以它为什么会发生。就像我使用更多节点时所需的时间更少,但就我而言,这完全相反,所以请您帮助我
在所有情况下,节点的增加都会提高性能。您如何看到它会带来反效应。如果您的任务/作业轻量级,那么将它们发送到其他节点上可以添加开销,并且对于此类任务可能很重要。为了执行远程任务/作业,Apache点燃了序列化,请通过TCP/IP在远程节点上运输。在远程节点上,这些作业是必不可少的,执行并以相同的方式给出响应(序列化,TCP/IP等)。
在从lambda中的外类访问对象的情况下,这些对象也将被序列化,并且此行为给出了开销。从代码中可以看到,您实际上不需要访问lambda的任何对象,您可以将所有对象移动到lambda中。
此外,更好地创建静态内部类而不是lambda。
另外,我建议在任何测量之前进行热身JVM并点燃,并进行多次迭代。
在某些情况下,您可以使用@computetasknoresultCache注释,如果适合您的情况,它可能会带来巨大的改进。
我还建议在Apache Ignite用户列表上阅读此线程,其中包含一些建议,以改进计算网格性能: