Amazon web services 运动如何在工人之间分配碎片?
在将相邻碎片分散到多个工人身上时,是否有人试图将其保持在一起?在文档示例中,它从1个工作者/实例和4个碎片开始。然后发生自动缩放,并启动了第二个工作进程/实例。KCL自动将2个碎片神奇地移动到worker 2上。自动缩放时,是否有人试图将相邻碎片与辅助对象保持在一起?分割碎片的时候呢 谢谢 在将相邻碎片分散到多个工人身上时,是否有人试图将其保持在一起 我怀疑这是真的。我的理解是,秩序只在单个关键点的边界内维持,单个关键点的边界位于单个碎片内 假设我有两个键,Amazon web services 运动如何在工人之间分配碎片?,amazon-web-services,amazon-kinesis,amazon-kcl,Amazon Web Services,Amazon Kinesis,Amazon Kcl,在将相邻碎片分散到多个工人身上时,是否有人试图将其保持在一起?在文档示例中,它从1个工作者/实例和4个碎片开始。然后发生自动缩放,并启动了第二个工作进程/实例。KCL自动将2个碎片神奇地移动到worker 2上。自动缩放时,是否有人试图将相邻碎片与辅助对象保持在一起?分割碎片的时候呢 谢谢 在将相邻碎片分散到多个工人身上时,是否有人试图将其保持在一起 我怀疑这是真的。我的理解是,秩序只在单个关键点的边界内维持,单个关键点的边界位于单个碎片内 假设我有两个键,key-a和key-b,发生了以下事件
key-a
和key-b
,发生了以下事件:
["event-1-key-a", "event-2-key-b", "event-3-key-a"]
现在我们有两个事件用于key-a
:[“event-1-key-a”,“event-3-key-a”]
和一个事件用于key-b
:[“事件-2-key-b”]
请注意,切分的发生方式与上述完全相同——key-a
的两个事件总是以相同的切分结束。有了这一保证,就没有必要维持碎片之间的秩序
在将相邻碎片分散到多个工人身上时,是否有人试图将其保持在一起
我怀疑这是真的。我的理解是,秩序只在单个关键点的边界内维持,单个关键点的边界位于单个碎片内
假设我有两个键,key-a
和key-b
,发生了以下事件:
["event-1-key-a", "event-2-key-b", "event-3-key-a"]
现在我们有两个事件用于key-a
:[“event-1-key-a”,“event-3-key-a”]
和一个事件用于key-b
:[“事件-2-key-b”]
请注意,切分的发生方式与上述完全相同——key-a
的两个事件总是以相同的切分结束。有了这一保证,就没有必要维护碎片之间的顺序。随机
如果您将“Kinesis Consumer Application”表示为“Worker”,则碎片最多的消费者应用程序会将1个碎片丢失给另一个碎片较少的应用程序
“租约”在这里是正确的术语,它描述了消费者应用程序和碎片关联。并且没有邻接检查来获取租约,这是纯粹的随机
请参阅源代码,选择easetosteal方法:随机
如果您将“Kinesis Consumer Application”表示为“Worker”,则碎片最多的消费者应用程序会将1个碎片丢失给另一个碎片较少的应用程序
“租约”在这里是正确的术语,它描述了消费者应用程序和碎片关联。并且没有邻接检查来获取租约,这是纯粹的随机
请参阅源代码,
chooseLeaseToSteal
method:如果您是正确的,那不是我要问的。我对重排和自动缩放感兴趣,而不是消息的顺序。我认为碎片是相互独立的。这回答了问题吗?还是你担心碎片分布不均匀?我想这可能是真的,它们是独立的;我只是好奇亚马逊是如何在员工中分配这些信息的。我猜他们不会把相邻的碎片放在一起。@darrickc-这完全是随机分布。没有任何逻辑将相邻碎片保持在一起。如果对您的用例很重要(它只是一个写在AmazonKinesis界面上的库),您可以随时制作自己的KCL版本来实现这一点,而您是正确的,这不是我要问的。我对重排和自动缩放感兴趣,而不是消息的顺序。我认为碎片是相互独立的。这回答了问题吗?还是你担心碎片分布不均匀?我想这可能是真的,它们是独立的;我只是好奇亚马逊是如何在员工中分配这些信息的。我猜他们不会把相邻的碎片放在一起。@darrickc-这完全是随机分布。没有任何逻辑将相邻碎片保持在一起。如果它对您的用例很重要(它只是一个写在AmazonKinesis界面上的库),您总是可以制作自己版本的KCL来实现这一点。您所说的相邻碎片是什么意思?这些事件是使用散列函数分布的,散列函数通常取相邻的键并将它们分散开来,主要是分布到其他碎片上。相邻碎片是提供“接触”的散列键的碎片。亚马逊在这里描述得很好。在合并碎片时,这是一个重要的概念。短答案-不,长答案-如果重要的话,您可以随时覆盖KCL的LeaseTaker算法来提供这一点。不过,随机窃取的实现要简单得多,并且解决了主要用例。你所说的相邻碎片是什么意思?这些事件是使用散列函数分布的,散列函数通常取相邻的键并将它们分散开来,主要是分布到其他碎片上。相邻碎片是提供“接触”的散列键的碎片。亚马逊在这里描述得很好。在合并碎片时,这是一个重要的概念。短答案-不,长答案-如果重要的话,您可以随时覆盖KCL的LeaseTaker算法来提供这一点。不过,随机窃取的实现要简单得多,并且解决了主要用例。