Генерация удобных для человека кодов в микросервисной архитектуре - PullRequest
0 голосов
/ 10 октября 2018

Когда проблема создается в GitHub, она имеет уникальный идентификатор (например, # 1532) в репозитории.Как реализовать этот механизм в микросервисной архитектуре?Предположим, у меня есть 2 сервисные службы и проблемы, при создании проблемы у нее должен быть уникальный читаемый человеком код в пределах определенной службы.

Я думаю, что каждый раз звонить в микросервисный центр, чтобы узнать последний код, не очень хорошая идея.

Сейчас я думаю об использовании очереди, подобной rabbitmq, которая будет содержать параметр unitId и код последней ошибки и обновлять его каждый раз при запросе кода.

Я не совсемуверен во всех минусах такого подхода.Есть ли другие лучшие способы решения этой проблемы?Буду признателен за любую помощь

ОБНОВЛЕНИЕ

Я также думал о том, чтобы просто хранить идентификаторы объектов и последние коды в базе данных с начальными значениями, что сейчас кажется хорошей идеей

Ответы [ 2 ]

0 голосов
/ 11 октября 2018

Здесь есть несколько вариантов

  • Запрашивать Facility синхронно для номера проблемы при каждом создании проблемы.См. Обмен здесь .
  • Сохраните карту (Facility, IssueId) в микросервисе Issues с некоторой логикой автоматического приращения.Это требует, чтобы Вопросы были уведомлены об изменениях в СредствеСмотрите компромиссы там .
  • Сделайте Facility источником создания проблемы.Может быть умнее, если есть другие побочные эффекты в службе Facility при открытии вопроса.
0 голосов
/ 10 октября 2018

Генерация идентификатора в распределенной системе - это проблема, которая существует уже некоторое время .

Быть дружелюбным к человеку исключает самый простой подход использования uuids ...

Лично я бы посоветовал не реализовывать это самостоятельно, вероятно, существует множество инструментов, решающих его, например генератор идентификаторов apache ignite .

...