2016-01-21 6 views
0

Есть ли попытка удержать соседние осколки вместе, распространяя их на нескольких работников? В примере документации он начинался с 1 рабочего/экземпляра и 4 осколков. Затем произошло автоматическое масштабирование и запущен второй рабочий/экземпляр. KCL автоматически магически перемещал 2 осколка к работнику 2. Есть ли попытка удержать соседние осколки вместе с работником при автомасштабировании? А как насчет расщепления осколков?Как Kinesis распространяет осколки среди рабочих?

Благодаря

+0

Что вы имеете в виду смежных черепков? События распределяются с использованием хеш-функции, которая обычно принимает смежные ключи и распространяет их, в основном, на другие осколки. – Guy

+0

Смежные осколки - это осколки, которые служат хеш-ключами, которые «касаются». Amazon описывает это хорошо здесь - http://docs.aws.amazon.com/kinesis/latest/APIReference/API_MergeShards.html. Это важная концепция при слиянии черепов. – darrickc

+0

Короткий ответ - нет. Длинный ответ. Вы всегда можете переопределить алгоритм LeasingTaker KCL, чтобы обеспечить это, если это важно. Случайное воровство намного проще реализовать и решает основной вариант использования. – Krease

ответ

2

Random.

Если вы имеете в виду «потребительское приложение Kinesis» как «рабочий», то потребительское приложение с наибольшим количеством осколков теряет 1 осколок в другое приложение, у которого меньше осколков.

«Лизинг» - правильный термин здесь, он описывает потребительское приложение & shard association. И нет проверки смежности для взятия аренды, это чисто случайный.

См исходный код, chooseLeaseToSteal метод: https://github.com/awslabs/amazon-kinesis-client/blob/c6e393c13ec348f77b8b08082ba56823776ee48a/src/main/java/com/amazonaws/services/kinesis/leases/impl/LeaseTaker.java#L414

0

Есть ли попытка сохранить соседние осколки вместе, когда их распространение через множество рабочих?

Я сомневаюсь, что это так. Я понимаю, что порядок поддерживается только внутри границы одного ключа, а граница одного ключа попадает в один осколок.

Представьте меня есть 2 ключа, key-a и key-b, а также следующие события произошли:

["event-1-key-a", "event-2-key-b", "event-3-key-a"] 

Теперь у нас есть 2 события для key-a: ["event-1-key-a", "event-3-key-a"]

и 1 событие для key-b: ["event-2-key-b"]

Обратите внимание, что осколки происходят точно так же, как указано выше: 2 события для key-a всегда будут в конце такой же осколок. Поскольку это гарантия, поддержание порядка между осколками не требуется.

+0

Пока вы правы, это не то, о чем я просил. Мне любопытно переиздавать и автомасштабировать не о порядке сообщений. – darrickc

+0

Ну, я думаю, что осколки не зависят друг от друга. Отвечает ли это на вопрос? Или вы обеспокоены тем, что осколки не распределяются равномерно? – neurite

+0

Я думаю, что это, вероятно, так, что они независимы; Мне просто интересно, как амазонка распределяет их среди рабочих. Я предполагаю, что они не пытаются держать соседние осколки вместе. – darrickc