2016-09-14 2 views
4

Какова наилучшая практика адаптации для управления версиями в архитектуре на основе микросервиса с точки зрения поддержки нескольких версий развертывания одной и той же службы во время выполнения и как пользователи смогут использовать разные версии? 1) Если мы используем Versioning на основе маршрутизации, как один из упомянутых подходов here то я думаю, мы имели бы следующие недостаткиВерсия для микросервиса

  1. Внутренних услуги должны пройти обратный прокси для потребления.
  2. Потребители всегда должны знать о требуемом управлении версиями.

Насколько эффективна публикация информации о версии для потребителей?

В любом случае, как я чувствую, следующий всегда применяется:

  1. Для КРУПНЫХ изменений версии, потребители должны быть изменены.
  2. Для замены версии MINOR (обратная совместимость) необходимо изменить только потребитель (ы), требующий дополнительной функциональности.
  3. Для изменения версии PATCH это необязательно и, вероятно, будет легко для любых потребителей использовать его.

Какая стратегия управления версиями Microservice может помочь нам в разрешении вышеуказанного?

ПРИМЕЧАНИЕ. Пожалуйста, не стесняйтесь, дайте мне знать, если это необходимо разделить на несколько вопросов.

ответ

0

Нет лучшей практики. Это зависит от того, как управление версиями должно работать в вашем конкретном случае.

Shawn Wildermuth обсудил вопрос об использовании api в версии pluralsight video. Не уверены в деталях реализации микросервиса, но если вы используете rest api, вы можете попробовать управлять версией фактической полезной нагрузки

Вы также можете сделать это с помощью заголовка Accept. Accept позволяет вам аннотировать заголовок Accept с типом версии по API, на который вы хотите посмотреть . И вы также можете сделать это с типом контента. Приложение/vnd для поставщика указывает версию возвращаемых данных , поэтому, когда приложение отправляет ее, она знает, какая версия полезной нагрузки . И это важный метод в версии , потому что вам нужно как API, так и фактический URI , а также форму возвращаемых данных.

Если вы нашли механизм, который хорошо работает в вашей среде и с вашими клиентами и пользователями, используйте это.

0

Что является лучшей практики для адаптации для управления версиями в основе архитектуры Microservice

Один startegy, что я использую в моем microservice проекта до версии через маршрутизацию.

Мы используем JSON RPC 2.0, поэтому он немного отличается от REST, но его можно применить.

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

Вещи, чтобы заботиться о

  • избегать наличия более чем двух версий службы в производстве (на самом деле трудно управлять, если у вас есть какие-то обновления модели).

  • Найдите способ сообщить потребителю, что используемая версия устарела.

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

Для ответа на второй вопрос

как потребители будут иметь возможность использовать разные версии?

Звучит не так, потому что потребитель должен использовать только одну версию за раз.

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

Ваш потребитель будет регулярно запрашивать обнаружение службы, если маршрут x существует. Если true, используйте функцию, в противном случае продолжите текущую версию. Это может сработать, но это сложно сделать.

0

вы можете смешивать и сочетать различный stretagies

Для Основных изменений вы можете использовать маршрутизации версии

на основе Для других вы можете использовать адаптер Based Versioning

Смежные вопросы