AWS Kinesis流文档中提到
通常,在使用KCL时,应确保实例数不超过分片数。
如果实例数超过分片数,将会有什么后果?我计划在每台Web服务器上运行一个工作线程(独立线程)。因此,我想知道在启动新的Web服务器实例时是否需要检查并比较分片和正在运行的工作程序的数量。或者,如果工人的数量超过分片的数量,则可以在不产生任何副作用的情况下直接启动另一名工人。
TL; DR:每个碎片只能有一个工人。任何其他工人将闲置。
如果您的Kinesis流具有两个分片,并且您在利用KCL的单个实例上运行应用程序,则该应用程序将在单独的线程中运行两个工作程序-每个分片(每个线程)一个工作程序。
如果您运行两个实例,则您的应用程序将在线程中的每个实例上运行一个工作程序-两个实例,每个工作程序一个;一个Kinesis流,两个碎片。
每个工作人员针对流中的分片进行租约,因此同一应用程序的其他工作人员无法读取相同的分片。工人将租赁信息存储在Dynamo DB中,以便其他工人可以读取它。
如果在这种情况下要运行3个实例,则其中一个实例会围着等待其他实例之一上的Worker失去其租约。一旦其他工人之一失去租约,第三个工人便可以接管并开始处理。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句