У меня возник вопрос о приложениях, работающих в контейнерах Docker и генерации UUID.
Вот наш сценарий:
-
В настоящее время наши приложения используют фреймворк, управляемый событиями.
-
Для событий мы генерируем UUID на основе MAC-адреса, pid,
отметка времени и счетчик. -
Для запуска контейнеров в распределенной системе, такой как CoreOS (при очень очень низкой вероятности), нет никакой гарантии, что все эти параметры, используемые для создания UUID, будут уникальны для каждого контейнера как один контейнер на одном сервере в кластере может сгенерировать UUID с использованием того же макроса, pid, метки времени и счетчика в качестве другого контейнера в кластере.
-
В сущности, если эти два UUID должны были генерировать событие и отправлять его на нашу шину обмена сообщениями, то, очевидно, был бы конфликт.
В нашем анализе этот сценарий, похоже, сводится к уникальности адресов mac в каждом контейнере Docker.
Итак, чтобы быть откровенным:
- Насколько уникальны адреса mac в контейнерах?
- Как создаются mac-адреса, если они не установлены вручную?