Реестр конфлюентных схем - PullRequest
0 голосов
/ 25 мая 2020

Я изучаю реестр схем Confluent для всех нужд управления схемами.

И я не совсем понимаю их подход к управлению версиями ... Существует понятие subject, которое я рассматриваю как пространство имен. Насколько я понимаю, тема должна быть уникальной в реестре схем.

Затем идет идентификатор схемы или просто id, который также уникален.

И, наконец, есть version.

Вот отрывок из документации:

version: версия схемы для этой темы, которая начинается с 1 для каждой темы

id: глобально уникальный идентификатор версии схемы, уникальный для всех схем во всех субъектах

Итак, когда я хочу изменить схему для определенного субъекта, что происходит с id и version поля? id меняется? Увеличивается ли version?

Другая цитата:

Когда схемы развиваются, они все еще связаны с тем же субъектом, но получают новый идентификатор схемы и версию

Требует ли каждое изменение нового id и нового version?

1 Ответ

0 голосов
/ 26 мая 2020

У каждой темы есть список версий. Вы можете проверить это в исходном коде, если вы используете sh.

Если два субъекта используют одну и ту же схему, идентификатор схемы будет одинаковым , хотя версии в двух разных субъектах могут отличаться. См. Пример ниже для этого случая.

Каждая уникальная схема (как определено ее текстовым представлением) имеет уникальный (возможно, инкрементный) идентификатор. Они хешируются по методу MD5 или «снимаются отпечатками пальцев» для уникальности, а затем глобально сравниваются друг с другом в кластере реестра схем. Это делается с помощью эквивалента ConcurrentHashMap<String, Schema>, где ключ - это ha sh значения Schema object


Пример: Используйте sub, v и s для темы, версии и схемы

  1. Создать подпрограмму 1 , в результате получается v 1 : s 1
  2. Обновите его, чтобы создать v 2 : s 2
  3. Возьмите ту же схему и используйте ее для создания под 2

sub 1 : [v 1 : s 1 , v 2 : s 2 ]
sub 2 : [v 1 : s 2 ]

...