Spring Cloud Config Server - возможность ссылаться на файлы с бэкэндом Git

В качестве организационного подразделения мы настроили Spring Cloud Config Server для всех наших микросервисов Spring с серверной частью Git (с использованием bitbucket.org). Мы также разрешили /actuator/refresh конечным точкам обновлять @ConfigurationProperties на лету без необходимости повторного развертывания каких-либо микросервисов. Было решено не использовать Spring Cloud Bus, чтобы гарантировать, что у нас есть полный контроль, когда обновлять какое приложение в качестве меры предосторожности.

А теперь вопрос. У нас есть некоторые микросервисы, в которых в качестве конфигураций есть запросы. Это может быть довольно громоздко, и мы хотели бы поместить такие запросы в файл, чтобы на них ссылался Spring Cloud Config Server. Кому-нибудь удалось придумать такое решение или возможно что-то подобное? Для нас крайне важно иметь возможность обновлять такие конфигурации на лету, даже если на них есть ссылки. Таким образом, они не могут быть упакованы с самим приложением.


person Matthew Formosa    schedule 05.04.2020    source источник
comment
Какой у вас сигнал к обновлению?   -  person spencergibb    schedule 06.04.2020
comment
Обычно все обновляется с помощью пулл-реквестов. Затем, как только они будут одобрены и объединены, нам решать, когда лучше всего их обновить. Иногда это происходит немедленно, а иногда мы решаем немного подождать, чтобы уведомить наших пользователей.   -  person Matthew Formosa    schedule 06.04.2020
comment
Думаю, я не понимаю, о чем вы просите. Вы можете поместить запросы в @ConfigurationProperties файлы или @RefreshScope beans.   -  person spencergibb    schedule 07.04.2020
comment
@spencergibb Мы уже используем @ConfigurationProperties. Это наше текущее решение с бэкэндом Git. Однако встроенные запросы довольно громоздки, и мы спрашиваем, можно ли каким-то образом поддерживать бэкэнд Git, но иметь ссылку на файл с запросом, а не иметь фактический запрос в конфигурации. Кроме того, мы не хотим, чтобы файл запроса был упакован вместе с приложением, поскольку мы хотели бы иметь возможность обновлять их на лету.   -  person Matthew Formosa    schedule 07.04.2020
comment
Таким образом, вы можете использовать cloud.spring.io/spring-cloud-static/spring-cloud-config/ api, чтобы получить файлы, которых нет. github.com/pivotal-cf/spring-cloud-services-starters/blob/ - хороший пример того, как использовать это.   -  person spencergibb    schedule 08.04.2020
comment
@spencergibb Интересное решение. Определенно достойный PoC. Большое спасибо за ваше предложение.   -  person Matthew Formosa    schedule 08.04.2020


Ответы (1)


Забавно, мы настроили почти так же, как и вы ... Хотя это кажется хорошим, будьте очень осторожны ... Использование @RefreshScope на каждом bean-компоненте, безусловно, сначала будет полезно, но затем, если вы подумаете о на пользователей, использующих ваше приложение, обновление может повлиять на них, поскольку ваш bean-компонент не будет существовать, когда они будут воссозданы. Иногда они могут испытывать около 500 внутренних или что-то подобное.

В любом случае попробуйте следующее: https://cloud.spring.io/spring-cloud-config/multi/multi__spring_cloud_config_server.html#_file_system_backend Это то, что мы использовали в моей команде. Он подключается к вашей файловой системе ... Но я не знаю, как комбинировать собственный поиск и репозиторий git ... Даже не знаю, возможно ли. У вас может быть один, но, возможно, не оба. Попробуйте.

person RUARO Thibault    schedule 05.04.2020
comment
Если честно, у нас есть только @RefrshScope на паре бобов. Большинство обновляемых bean-компонентов помечены знаком @ConfigurationProperties, которые все еще обновляются при срабатывании конечной точки. Вы поднимаете хороший вопрос, но мы не совсем работаем с клиентами, поэтому мы можем позволить себе время от времени несколько секунд простоя. Я знаю о бэкэнд файловой системы. К сожалению, похоже, что мы не можем использовать оба бэкэнда. Было бы очень интересно, если бы кому-то удалось найти подходящее решение для такого варианта использования. - person Matthew Formosa; 05.04.2020