Предполагается, что определение темы в новом кластере точно такое же (т. Е. Nbr разделов, сохранение и т. Д.), А хеширующая функция источника на ключе сообщения доставит ваше сообщение в тот же раздел (будет обломом)если у вас есть нулевые ключи, потому что они окажутся в случайном разделе), вы можете просто извлечь из самого раннего из вашей старой темы о брокере kafka и создать новую тему в новом кластере с помощью специального потребителя / производителя или какого-либо инструмента, подобного logstash
.
Если вы хотите быть уверены, что получите тот же самый заказ, вам следует использовать только одного потребителя на тему, а если ваш потребитель поддерживает однопоточный прогон, даже лучше (может избежать гоночных условий).
Вы также можете попробовать более распространенные решения, такие как MirrorMaker, но имейте в виду, что гарантии заказа MirrorMaker составляют:
Однако процесс MirrorMaker сохранит и использует ключ сообщения для разделения, так что порядоксохраняется для каждого ключа.
Примечание: какуказано в первом решении и, как сказал cricket_007, оно будет работать только в том случае, если вы использовали разделитель по умолчанию и хотите продолжать использовать его в новом кластере.
В конце концов, если все пойдет хорошо, вы можете вручную скопировать смещения потребителей из старого брокера kafka и определить их в новых группах потребителей кластера.
Отказ от ответственности Это чисто теоретическое.Я никогда не пробовал переход с такими жесткими требованиями.