Рубрики
Без рубрики

Введение в Netflix Archaius с весенним облаком

Узнайте о Netflix Archaius и некоторых интересных функциях, которые он предлагает, чтобы воспользоваться управлением конфигурацией.

Автор оригинала: Ger Roza.

1. Обзор

Netflix Архаий является мощной библиотекой управления конфигурацией.

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

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

В этом вступительном уроке мы наберем простую конфигурацию Spring Cloud Archaius, объясним, что происходит под капотом, и, наконец, посмотрим, как Spring позволяет расширить базовую настройку.

2. Netflix Архаиус Особенности

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

Ну, Archaius предлагает некоторые удобные и интересные функции, которые не предусмотрены любой другой конфигурации . Некоторые из его ключевых моментов:

  • Динамические и типовые свойства
  • Механизм обратного вызова, который вызывается при мутациях свойств
  • Готовы к использованию реализации динамических источников конфигурации, таких как URL-адреса, JDBC и Amazon DynamoDB
  • JMX MBean, к который можно получить доступ с помощью Spring Boot Actuator или JConsole для проверки и управления свойствами
  • Проверка динамических свойств

Эти льготы могут быть полезны во многих сценариях.

Таким образом, Spring Cloud работал над библиотекой, которая позволяет легко настроить ‘Весенний экологический мост’, так что Archaius может читать свойства из весенней среды.

3. Зависимости

Давайте добавим весна-облако-стартер-netflix-архаий к нашему приложению, это добавит все необходимые зависимости к нашему проекту .

По желанию мы также можем добавить весна-облако-netflix к нашему зависимостьУкоминие раздела и полагаться на его спецификацию версий артефактов:


    
        org.springframework.cloud
        spring-cloud-starter-netflix-archaius
    



    
        
            org.springframework.cloud
            spring-cloud-netflix
            2.0.1.RELEASE
            pom
            import
        
    

Примечание: мы можем проверить Maven Central, чтобы убедиться, что мы используем последнюю версию стартовый библиотечный .

4. Использование

Как только мы добавим требуемую зависимость, мы сможем получить доступ к свойствам, управляемым :

DynamicStringProperty dynamicProperty 
  = DynamicPropertyFactory.getInstance()
  .getStringProperty("baeldung.archaius.property", "default value");

String propertyCurrentValue = dynamicProperty.get();

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

4.1. Быстрый пример

По умолчанию он динамически управляет всеми свойствами, определенными в файле, названном config.properts в классной тропе приложения .

Итак, давайте добавим его в папку ресурсов с некоторыми произвольными свойствами:

#config.properties
baeldung.archaius.properties.one=one FROM:config.properties

Теперь нам понадобится способ проверить значения свойств в любой конкретный момент. В этом случае мы создадим Рестконтроллер который получает значения в качестве ответа JSON:

@RestController
public class ConfigPropertiesController {
	
    private DynamicStringProperty propertyOneWithDynamic
      = DynamicPropertyFactory.getInstance()
      .getStringProperty("baeldung.archaius.properties.one", "not found!");
	
    @GetMapping("/property-from-dynamic-management")
    public String getPropertyValue() {
	return propertyOneWithDynamic.getName() + ": " + propertyOneWithDynamic.get();
    }
}

Давай попробуем. Мы можем отправить запрос в эту конечную точку, и служба получит значения, хранящиеся в config.properts как и ожидалось.

Пока ничего страшного, да? Хорошо, давайте продолжать и изменять значения свойства в файле classpath, без перезапуска службы. В результате, через минуту или около того, вызов в конечную точку должен получить новые значения. Довольно круто, не так ли?

Далее мы постараемся понять, что происходит под капотом.

5. Как это работает?

Прежде всего, давайте попробуем понять картину в целом.

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

тем весна-облако-netflix-архаий библиотека вступает в игру, объединяя все различные источники свойств и автоматически настраивая инструменты Archaius с этими источниками.

5.1. Библиотека Архаия Netflix

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

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

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

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

5.2. Поддержка весеннего облака

Основной задачей библиотеки Spring Cloud Archaius является слияние всех различных источников конфигурации в качестве ПараллельноКомпозитОнфигурация и установить его с помощью КонфигурацияМенагер.

Порядок приоритета, в котором библиотека определяет источники:

  1. Любая общая конфигурация Apache АбстрактКонфигурация фасоль определяется в контексте
  2. Все источники определены в Автовеханые Весенние НастраиваемаяАнтирония
  3. Источники Архия по умолчанию, которые мы видели в приведенной выше примере
  4. Апач в СистемаКонфигурация и Окружающая средаКонфигурация Источников

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

6. Адаптация и расширение конфигурации Архаия

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

6.1. Свойства конфигурации, поддерживаемые Archaius

Если мы хотим, чтобы Archaius учитывала другие файлы конфигурации, похожие на config.properts во-первых, мы можем определить archaius.configurationИсточник.additionalUrls системного свойства.

Значение анализируется на список URL-адресов, разделенных запятой, так что, например, мы можем добавить это свойство системы при запуске приложения:

-Darchaius.configurationSource.additionalUrls=
  "classpath:other-dir/extra.properties,
  file:///home/user/other-extra.properties"

Архаий прочитает config.properts файл, а затем другие, в указанном порядке. Из-за этого свойства, определенные в последних файлах, будут иметь приоритет над предыдущими.

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

  • archaius.configurationИсточник.defaultFileName : Имя файла конфигурации по умолчанию в classpath
  • archaius.fixedDelayPollingScheduler.initialDelayMills : первоначальная задержка перед чтением источника конфигурации
  • archaius.fixedDelayPollingScheduler.delayMills : задержка между двумя чтениями источника; значение по умолчанию составляет 1 минуту

6.2. Добавление дополнительных источников конфигурации с помощью Spring

Как мы можем добавить другой источник конфигурации, который будет управляться описанной структурой? И как мы можем управлять динамическими свойствами с более высоким приоритетом, чем те, которые определены в весенней среде?

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

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

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

@Bean
public AbstractConfiguration addApplicationPropertiesSource() {
    URL configPropertyURL = (new ClassPathResource("other-config.properties")).getURL();
    PolledConfigurationSource source = new URLConfigurationSource(configPropertyURL);
    return new DynamicConfiguration(source, new FixedDelayPollingScheduler());
}

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

7. Заключение

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

Кроме того, мы увидели, как в игру вступает библиотека автоконфигурации Spring Cloud, позволяющая нам удобно использовать API этой библиотеки.

Еще раз, мы можем найти все примеры, показанные в этом учебнике и другие в нашем Github репо .