предисловие
вышеNacos нового поколения микросервисов JavaБыла представлена среда микросервисов Nacos и ее функции в регистрации и обнаружении служб. В этой статье в основном будет представлена еще одна мощная функция: управление конфигурацией. Узнайте, как использовать Nacos для реализации конфигурации распределенных служб централизованно с помощью унифицированного управления. интерфейс Обслуживание и обновления в режиме реального времени.
Основное содержание этой статьи следующее:
- Введение в концепции управления конфигурацией Nacos
- Как управлять конфигурацией в Nacos
- Управление конфигурацией Nacos в нескольких средах
Введение в управление конфигурацией Nacos
Nacos предоставляет службу динамической настройки, которая позволяет нам вносить изменения в конфигурацию сервисных приложений в режиме реального времени, делая управление конфигурацией более эффективным и быстрым. Он хранит конфигурацию приложения и другую информацию метаданных на основе ключа/значения и обеспечивает поддержку на стороне сервера и клиента для внешней конфигурации в распределенных системах.
Прежде всего, поймите несколько важных концепций Nacos в модуле управления конфигурацией, которые могут помочь нам лучше понять и правильно использовать Nacos для управления конфигурацией.
-
Пространство имен
Он используется для гранулярной изоляции конфигурации арендатора, которую можно использовать для дифференциации и изоляции конфигураций различных сред, таких как изоляция ресурсов (например, конфигураций и служб) в среде разработки и тестирования, а также в производственной среде.
-
Элемент конфигурации
Конкретный настраиваемый параметр и его значение, обычно в виде ключ-параметр=значение-параметра. Например, мы часто настраиваем уровень вывода журнала системы (logLevel=INFO|WARN|ERROR) — это элемент конфигурации.
-
Набор конфигураций
Набор связанных или несвязанных элементов конфигурации. Файл конфигурации обычно представляет собой набор конфигурации, который может содержать такие элементы конфигурации, как источники данных, пулы потоков и уровни журналов.
-
Идентификатор набора конфигураций (идентификатор данных)
Идентификационный идентификатор набора конфигураций, который используется для организации наборов конфигураций, разделяющих систему. Система или приложение могут содержать несколько наборов конфигурации. Официально рекомендуется использовать Java-подобный пакет (например, com.taobao.tc.refund.log.level) для определения идентификатора данных, чтобы обеспечить глобальную уникальность.
-
Настроить группу (Группа)
Группирует наборы конфигурации, чтобы различать наборы конфигурации с одинаковым идентификатором данных. По умолчанию DEFAULT_GROUP. Распространенные сценарии группировки конфигураций. Различные приложения или компоненты используют один и тот же тип конфигурации, например конфигурацию database_url и конфигурацию раздела очереди сообщений.
Запустите управление конфигурацией Nacos
Чтобы использовать Nacos для управления конфигурацией, необходимо сначала запустить сервер Nacos, а затем получить доступ к клиенту.Подробнее о том, как запустить сервер Nacos, см.Nacos нового поколения микросервисов Java.
После запуска сервера Nacos сначала создаем новую простейшую конфигурацию в управлении конфигурациями на консоли Nacos, как показано на рисунке:
После успешного сохранения вы можете увидеть созданные записи конфигурации в списке следующим образом:
Панель управления каждого набора конфигураций обеспечивает функции просмотра, изменения и очистки конфигурации, а также просмотр дополнительных примеров кода, которые помогут нам использовать Nacos для чтения набора конфигураций на стороне клиента.В настоящее время доступны только Java, Spring Boot, Spring. Облако, версии на других языках еще дорабатываются.
Nacos Spring
-
Сначала добавьте зависимости в программу Spring
<dependency> <groupId>com.alibaba.nacos</groupId> <artifactId>nacos-spring-context</artifactId> <version>0.2.3-RC1</version> </dependency>
Последнюю версию можно найти в репозитории maven.mvnrepository.comполучено в.
-
Добавить к
@EnableNacosConfig
Аннотация включает службу управления конфигурацией Nacos Spring. В следующем примере мы используем@NacosPropertySource
Аннотация загружает набор конфигураций, который мы создали ранее, и указывает на автоматическое обновление конфигурации. -
Накос
@NacosValue
Аннотации связывают элементы конфигурации со свойствами.
-
После запуска программы откройте
http://localhost:8080/config/hello
получить результат возвратаhello,test
, следующее содержимое указывает на то, что конфигурация чтения прошла успешно. -
После успешного чтения мы попытаемся изменить этот элемент конфигурации, чтобы проверить функцию динамического обновления информации о конфигурации Nacos. Существует два способа изменения: один — изменить вручную на консоли Nacos, другой — изменить непосредственно в командной строке с помощью предоставленного API:
curl -X POST "http://127.0.0.1:8848/nacos/v1.0.1/cs/configs?dataId=com.one.learn.nacos.config&group=DEFAULT_GROUP&content=message=nacos-spring"
-
посетить снова
http://localhost:8080/config/hello
, возвращаемый контентhello,nacos-spring
, вернуть информацию в программу описания измененийmessage
Значение было динамически обновлено.
Nacos Spring Boot
-
Добавьте зависимости для динамических изменений конфигурации:
<dependency> <groupId>com.alibaba.boot</groupId> <artifactId>nacos-config-spring-boot-starter</artifactId> <version>0.2.1</version> </dependency>
Уведомление: версия здесь0.2.x.RELEASEСоответствует версии Spring Boot 2.x, версии0.1.x.RELEASEСоответствующая версия — Spring Boot 1.x.
-
существует
application.properties
Настройте адрес сервера Nacos в:
nacos.config.server-addr=127.0.0.1:8848
-
использовать
@NacosPropertySource
нагрузкаdataId
заcom.one.learn.nacos.config
config и включите автоматические обновления: -
Накос
@NacosValue
Аннотация устанавливает значение свойства, которое совпадает с этапами интеграции Spring. -
Запустите класс начальной загрузки, откройте
http://localhost:8080/config/hello
получить результат возвратаhello,nacos
, что означает, что конфигурация в программе была успешно прочитана.
Nacos Spring Cloud
Если вы используете программу Spring Cloud, Nacos предоставляет библиотеку зависимостейspring-cloud-starter-alibaba-nacos-config
Внедрить динамические изменения в конфигурации.
-
Добавьте зависимости:
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> <version>0.9.0.RELEASE</version> </dependency>
Уведомление:Версия0.2.x.RELEASEСоответствует версии Spring Boot 2.x, версии0.1.x.RELEASEСоответствующая версия — Spring Boot 1.x.
-
существует
bootstrap.properties
Адрес и имя приложения сервера Nacos, настроенного в Nacos, следующие: в Nacos Spring Cloud:dataId
По умолчаниюspring.application.name
плюсproperties
суффикс файла, поэтому, чтобы правильно прочитать конфигурацию, нам нужно установить идентификатор набора конфигурации на Nacos какcom.one.learn.nacos.config
настроить наcom.one.learn.nacos.config.properties
spring.cloud.nacos.config.server-addr=127.0.0.1:8848 spring.application.name=com.one.learn.nacos.config
Здесь bootstrap.properties используется как место для настройки Nacos, поскольку порядок загрузки файлов конфигурации Spring Boot следующий: bootstrap.properties -> bootstrap.yml -> application.properties -> application.yml , в
application
Это не вступает в силу, если Nacos настроен в иерархии.Примечание. При использовании доменного имени для доступа к Nacos
spring.cloud.nacos.config.server-addr
Способ настройки должен быть域名:port
. Даже с доменным именем нельзя опустить порт. Например, доменное имя Nacos — abc.com.nacos, а порт прослушивания — 80, тогдаspring.cloud.nacos.config.server-addr=abc.com.nacos:80
. -
Нативные аннотации через Spring Cloud
@RefreshScope
Чтобы реализовать автоматическое обновление конфигурации: -
запустить программу, получить доступ
http://localhost:8080/config/hello
, возвращаемое содержимоеhello,nacos
, это означает, что чтение конфигурации прошло успешно. -
Изменить элементы конфигурации в консоли Nacos
message=Nacos Spring Cloud
, посетить сноваhttp://localhost:8080/config/hello
, возвращаемое содержимоеhello,Nacos Spring Cloud
, что указывает на то, что программаmessage
Значение было динамически обновлено.
Управление конфигурацией Nacos в нескольких средах
После того, как выше было реализовано чтение базовой конфигурации и обновление Nacos, давайте посмотрим, как Nacos управляет конфигурацией с несколькими средами.Следует отметить, что эта функция предназначена только для приложений Spring Cloud.
Предположим, наша программа имеет две среды: тестовую и производственную среды, которыми необходимо управлять и настраивать.В программах Spring Boot файл конфигурации по умолчанию — application.properties.Традиционным способом является использование функции Spring Profile для хранения нескольких сред в проекте. , файл конфигурации, формат файлаapplication-${env}-properties
, и нужно использоватьspring.profile.active
Указывает, какую конфигурацию среды следует применять при запуске.
Nacos Config в основном использует dataId и группу для однозначного определения конфигурации.dataId
Полный формат выглядит следующим образом:
${prefix}-${spring.profile.active}.${file-extension}
-
prefix
По умолчаниюspring.application.name
Значение также можно передать через элемент конфигурацииspring.cloud.nacos.config.prefix
настроить. -
spring.profile.active
Это профиль, соответствующий текущей среде.Документация по весенней загрузке.Примечание. Когда spring.profile.active пуст, соответствующий коннектор также не будет существовать, а формат объединения dataId станет {prefix}.{file-extension}
-
file-exetension
Чтобы настроить формат данных контента, вы можете передать элемент конфигурацииspring.cloud.nacos.config.file-extension
настроить. В настоящее время поддерживается толькоproperties
иyaml
тип.
группа по умолчаниюDEFAULT_GROUP
, в состоянии пройтиspring.cloud.nacos.config.group
Настройте указанное имя.
- Основываясь на приведенном выше описании правила конфигурации, мы можем сначала создать два набора конфигурации для разных сред на консоли Nacos следующим образом.
Оба хранят два элемента конфигурации вproperty
хранение форматов файлов.
#nacos-config-prod.properties
server.port=8091
message=nacos-config-prod
#nacos-config-test.properties
server.port=8081
message=nacos-config-test
- Затем в основном конфигурационном файле программы
application.properties
Конфигурация выглядит следующим образом:
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.application.name=nacos-config
spring.cloud.nacos.config.file-extension=properties
spring.profile.active=test
-
Напишите класс контроллера тестирования ConfigController для привязки элементов конфигурации к значениям свойств.
-
Запустив программу, вы можете увидеть следующие результаты данных, указывающие на то, что конфигурация порта вступила в силу в тестовой среде.
Доступ через браузер
http://localhost:8081/config/hello
,возвращениеhello,nacos-config-test
. -
Изменить файл конфигурации
application.properties
изspring.profile.active
, перезапустите программу и получите доступhttp://localhost:8091/config/hello
spring.cloud.nacos.config.server-addr=127.0.0.1:8848 spring.application.name=nacos-config spring.cloud.nacos.config.file-extension=properties spring.profile.active=prod
может получить возвращаемый результат
hello,nacos-config-prod
, что также свидетельствует об успешном переключении конфигурации другого окружения программы.
Настроить мониторинг
В дополнение к активной проверке того, что конфигурация вступает в силу, мы можем отслеживать изменения конфигурации, добавляя прослушиватели.Реализация очень проста, используя@NacosConfigListener
То есть, как только конфигурация, соответствующая указанному идентификатору набора конфигураций, изменится, прослушиватель будет вызван обратно и вернет всю информацию о конфигурации в виде строк.
При наличии нескольких элементов конфигурации строка конфигурации, полученная обратным вызовом, имеет формат новой строки, который необходимо обрабатывать сам по себе.
Конечно@NacosConfigListener
Также поддерживается преобразование типов, например преобразование в объект свойств.
Рекомендации по пространству имен
В Nacos пространство имен существует как подразделение детализации арендаторов, в основном для обработки данных в нескольких средах и с несколькими арендаторами (настройка и обслуживание) проблема изоляции.
-
Если есть только один арендатор (пользователь), разные пространства имен могут соответствовать разным средам, чтобы реализовать изоляцию конфигурации среды.Эффект аналогичен содержимому предыдущего раздела: Управление конфигурацией Nacos в нескольких средах.
-
При наличии нескольких арендаторов назначьте каждому арендатору разные пространства имен, чтобы данные конфигурации и данные зарегистрированных служб каждого арендатора (пользователя) принадлежали его собственному пространству имен, что может обеспечить изоляцию данных конфигурации нескольких арендаторов.
Примечание: Nacos еще не реализовала назначение и изоляцию разрешений учетных записей, и каждый арендатор не может управлять своей собственной конфигурацией.Эта функция все еще находится в стадии планирования.
После краткого введения давайте рассмотрим лучшие практики, связанные с пространствами имен:
- Как получить значение namespace.
- метод инициализации параметра пространства имен.
Создать пространство имен
На левой функциональной стороне консоли nacos находитсяПространства именфункция, нажмите, чтобы увидетьНовое пространство именкнопку, то вы можете создать свое собственное пространство имен в это время. После успешного созданияИдентификатор пространства имен, в основном, чтобы избежатьимя пространства именМогут быть повторяющиеся имена. Поэтому, когда вам нужно настроить указанное пространство имен в вашем приложении,Заполненный идентификатор пространства имен.
Ассоциативное командное пространство
без явного указания${spring.cloud.nacos.config.namespace}
В случае конфигурации по умолчанию используется общедоступная папка имен на Nacos. Если вам нужно использовать собственное пространство имен, вы можете сделать это со следующей конфигурацией:
spring.cloud.nacos.config.namespace=b3404bc0-d7dc-4855-b519-570ed34b62d7
Эта конфигурация должна быть помещена в файл bootstrap.properties. также
spring.cloud.nacos.config.namespace
Значением является идентификатор, соответствующий пространству имен.
Эпилог
На этом знакомство с конфигурацией управления Nacos подходит к концу.Конечно, в управлении конфигурациями есть и другие способы использования.Официальная документация Nacos подробно описывает это, и вы также можете ознакомиться с ним на официальном сайте. В дальнейшем я продолжу углубленное изучение других компонентов экосистемы микросервисов Spring Cloud Alibaba.Заинтересованные партнеры могут подписаться на мой публичный аккаунт WeChat, который будет обновляться каждый понедельник.
пример кода
Пример проекта:nacos-actions:GitHub.com/ Как будто впервые увидел 12138…
Экологическая поддержка:
- JDK 8
- Maven 3.6.0
- SpringBoot 2.1.0.RELEASE
- SpringCloud Greenwich.RELEASE
- SpringCloudAlibaba 0.9.0.RELEASE
Ссылаться на
- Nacos нового поколения микросервисов Java:Tickets.WeChat.QQ.com/Yes/vs36Администратор нет…
- Концепция Nacos:что cos.IO/this-capable/docs/…
- Spring Cloud Alibaba Basic Tutorial: Мультисредовое управление конфигурацией Nacos:blog.brotherspace.com/spring-ugly…
- Официальная документация Nacos:что cos.IO/this-capable/docs/…