Цель : наше приложение состоит из архитектуры микросервисов, распределенных по нескольким серверам (построенной на локальной Service Fabric). Мы хотим иметь централизованное место для хранения параметров конфигурации, таких как строки подключения, точки входа и т. Д. Эти параметры не меняются от одного экземпляра службы к другому, что означает, что нам не нужно хранить их вместе с услугой, а мы предпочитаем иметь централизованное хранилище, где эти настройки могут обновляться на лету и использоваться всеми службами без повторного развертывания. Удобный интерфейс для редактирования этих настроек - это хорошо, но не совсем необходимо, мы можем использовать простой блокнот в худшем случае. Формат для хранения настроек может быть xml, json или любым другим форматом, поддерживающим иерархическую структуру данных.

Вопрос : предлагает ли Service Fabric что-то готовое, что помогает нам в этом? Если нет, существуют ли сторонние инструменты .net или нам придется создавать «хранилище, репозиторий и api» с нуля?

Я пытался немного поискать такие фреймворки, но ничего не нашел на рынке и ничего в SF, возможно, я просто знаю, как называются такие вещи.

1
YMC 23 Окт 2018 в 01:25

2 ответа

Лучший ответ

То, что вы ищете, - это служба конфигурации, в Интернете есть множество решений, готовых к использованию, у вас есть несколько вариантов:

  • Используйте облачное решение , например Azure KeyVault, в этом случае вам нужно будет только добавить детали аутентификации к своим службам для каждой среды и всем службам, указывающим на одно и то же пространство имен KeyVault.

  • Используйте локальное решение , например HashiCorp Vault или Consul, в этом случае вы развернете его в своем кластере и настроите свои службы для связи с ним.

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

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

Что касается встроенного решения Service Fabric, в настоящее время нет готового управления секретами в рамках Service Fabric, но в дорожной карте есть опция, но, вероятно, не будет выпущена до тех пор, пока в следующем году не будет выпущена Service Fabric Mesh.

2
Diego Mendes 23 Окт 2018 в 10:00

Насколько я знаю, готовых решений для этого нет. Я могу предложить отдельную службу с отслеживанием состояния, которая будет действовать как хранилище конфигурации (назовем эту службу - configservice ).

Таким образом, вся ваша конфигурация будет выполняться в этой службе.

Затем вы можете использовать этот проект в своих службах, чтобы подписаться на событие изменения конфигурации, которое будет опубликовано configservice при изменении конфигурации.

Плюсы этого подхода в том, что реализация configservice дает вам возможность реализовать любые функции, которые вам могут понадобиться (запланированные обновления конфигурации, проверка и т. Д.). Оборотная сторона вполне очевидна - реализовывать нужно вручную.

Надеюсь это поможет.

0
Oleg Karasik 23 Окт 2018 в 06:36
52938537