Учебная комната Cabbage Java охватывает основные знания
Spring Cloud Alibaba Actual Combat (1) Подготовка
Spring Cloud Alibaba Actual Combat (2) Nacos
Spring Cloud Alibaba Actual Combat (3) Sentinel
Весеннее облако Alibaba бой (4) Oauth2
Spring Cloud Alibaba Actual Combat (5) Zuul
Реальные бои Spring Cloud Alibaba (6) Статьи RocketMQ
Spring Cloud Alibaba Actual Combat (7) Seata
Spring Cloud Alibaba Actual Combat (8) SkyWalking
Адрес проекта на GitHub:GitHub.com/D2C-CAI/Хайер…
1. Введение в Нако
Nacos помогает вам обнаруживать, настраивать и управлять микросервисами. Nacos предоставляет набор простых в использовании функций, которые помогут вам быстро реализовать динамическое обнаружение сервисов, настройку сервисов, метаданные сервисов и управление трафиком. Nacos помогает создавать, поставлять и управлять платформами микросервисов более гибко и легко. Nacos — это сервисная инфраструктура для создания современных архитектур приложений, основанных на «сервисах» (таких как парадигма микросервисов, облачная парадигма).
- Обнаружение служб и мониторинг работоспособности служб
Nacos поддерживает обнаружение сервисов на основе DNS и RPC. После того как поставщик услуг зарегистрирует Службу с помощью собственного SDK, OpenAPI или отдельного агента TODO, потребитель службы может использовать DNS TODO или HTTP&API для поиска и обнаружения службы.
Nacos обеспечивает проверку работоспособности сервисов в режиме реального времени, предотвращая запросы к неработоспособным хостам или экземплярам сервисов. Nacos поддерживает проверки работоспособности транспортного уровня (PING или TCP) и прикладного уровня (например, HTTP, MySQL, определяемые пользователем). Для проверки работоспособности сервисов в сложных облачных средах и средах с топологией сети (таких как VPC, пограничные сети и т. д.) Nacos предлагает два режима проверки работоспособности: режим отчетов агента и активное обнаружение сервера. Nacos также предоставляет единую панель проверки работоспособности, которая поможет вам управлять доступностью услуг и трафиком в зависимости от состояния работоспособности.
- Служба динамической настройки
Служба динамической настройки позволяет управлять конфигурацией приложений и конфигурацией служб для всех сред централизованным, внешним и динамическим образом.
Динамическая конфигурация устраняет необходимость повторного развертывания приложений и служб при изменении конфигурации, что делает управление конфигурацией более эффективным и гибким.
Централизованное управление конфигурацией упрощает внедрение служб без сохранения состояния и упрощает гибкое масштабирование служб по запросу.
Nacos предоставляет простой и удобный в использовании пользовательский интерфейс (демонстрационный образец консоли), который поможет вам управлять конфигурацией всех служб и приложений. Nacos также предоставляет ряд готовых функций управления конфигурацией, включая отслеживание версий конфигурации, канареечный выпуск, откат конфигурации одним щелчком мыши и отслеживание состояния обновления конфигурации клиента, чтобы помочь вам более безопасно управлять конфигурациями в производственных средах. риск изменения конфигурации.
- Служба динамического DNS
Служба динамической DNS поддерживает взвешенную маршрутизацию, упрощая реализацию балансировки нагрузки среднего уровня, более гибких политик маршрутизации, управления трафиком и простых служб разрешения DNS для внутренней сети центра обработки данных. Динамические службы DNS также упрощают реализацию обнаружения служб на основе протокола DNS, чтобы исключить риск привязки к частным API обнаружения служб поставщика.
Nacos предоставляет несколько простых API-интерфейсов DNS TODO, которые помогут вам управлять доменами, связанными с вашим сервисом, и доступным списком IP:PORT.
- Службы и управление их метаданными
Nacos позволяет вам управлять всеми службами и метаданными в центре обработки данных с точки зрения создания микросервисной платформы, включая управление описанием службы, жизненным циклом службы, анализом статической зависимости службы, состоянием службы, управлением трафиком службы, политиками маршрутизации и безопасности, соглашениями об уровне обслуживания службы, и самое главное, показатели статистики.
2. Используйте Docker для быстрой сборки Nacos 1.4.
- клонировать проект из git:
git clone https://github.com/nacos-group/nacos-docker.git
- После завершения клонирования перейдите в каталог naocs-docker.:
cd nacos-docker/example
Обратите внимание, что в этом каталоге есть несколько скриптов для создания докеров, которые мы можем использовать. Как выбрать?
Nacos поддерживает три режима развертывания:
- Автономный режим — для тестирования и автономной пробной версии (автономный режим поддерживает mysql).
- Кластерный режим — используется в производственных средах для обеспечения высокой доступности.
- Многокластерный режим — для сценариев с несколькими центрами обработки данных.
Для простоты настройки и немедленной доступности мы выбираем режим развертывания на одной машине и не используем mysql Давайте взглянем на содержимое скрипта.
standalone-derby.yaml
version: "2"
services:
nacos:
image: nacos/nacos-server:latest
container_name: nacos-standalone
environment:
- PREFER_HOST_MODE=hostname
- MODE=standalone
volumes:
- ./standalone-logs/:/home/nacos/logs
- ./init.d/custom.properties:/home/nacos/init.d/custom.properties
ports:
- "8848:8848"
prometheus:
container_name: prometheus
image: prom/prometheus:latest
volumes:
- ./prometheus/prometheus-standalone.yaml:/etc/prometheus/prometheus.yml
ports:
- "9090:9090"
depends_on:
- nacos
restart: on-failure
grafana:
container_name: grafana
image: grafana/grafana:latest
ports:
- 3000:3000
restart: on-failure
- Выполните сценарий standalone-derby.yaml, чтобы запустить контейнер.:
docker-compose -f standalone-derby.yaml up
- Для других нужд позже обязательно откройте порт брандмауэра брандмауэра.:
firewall-cmd --zone=public --add-port=8848/tcp --permanent
firewall-cmd --reload
- Войдите в консоль Nacos, имя пользователя по умолчанию — nacos, а пароль — nacos.:
http://(安装Nacos机器的IP):8848/nacos
В консоли Nacos много функций, как ими пользоваться? Здесь мы не торопимся, давайте сначала настроим клиент проекта Spring Boot.
3. Внедрить клиент Nacos в проект Spring.
Здесь есть две части: Nacos Discovery (обнаружение службы) и Nacos Config (управление конфигурацией).
3.1. Запуск службы обнаружения
- Добавить зависимости файла pom:
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
- Добавьте конфигурацию в application.yml:
server:
port: 8080
spring:
application:
name: (项目名称)-service
cloud:
nacos:
discovery:
server-addr: (安装Nacos机器的IP):8848
- Добавьте аннотацию @EnableDiscoveryClient, чтобы включить обнаружение регистрации службы.:
@EnableDiscoveryClient
@SpringBootApplication
public class TestServiceApplication {
public static void main(String[] args) {
SpringApplication.run(TestServiceApplication.class, args);
}
}
3.2. Запустите управление конфигурацией
- Добавить зависимости файла pom:
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
- Добавьте конфигурацию в bootstrap.yml:
Заметьте, здесь ясноbootstrap.yml, пожалуйста, прочитайте разницу между application.yml и bootstrap.yml проекта Baidu Spring Boot.
spring:
profiles:
active: dev
application:
name: (项目名称)-service
cloud:
nacos:
config:
server-addr: (安装Nacos机器的IP):8848
file-extension: properties
иллюстрировать: Причина, по которой необходимо настроить spring.application.name, заключается в том, что оно является частью поля dataId управления конфигурацией Nacos.
В Nacos Spring Cloud полный формат dataId выглядит следующим образом:
${prefix}-${spring.profiles.active}.${file-extension}
- prefixПо умолчанию используется значение spring.application.name, и его также можно настроить с помощью элемента конфигурации spring.cloud.nacos.config.prefix.
-
spring.profiles.activeЭто профиль, соответствующий текущей среде.Когда spring.profiles.active пуст, соответствующий коннектор - также не будет существовать, и формат сплайсинга dataId становится
${prefix}.${file-extension}
- file-exetensionЧтобы настроить формат данных контента, его можно настроить через элемент конфигурации spring.cloud.nacos.config.file-extension. В настоящее время поддерживаются только свойства и типы yaml.
Здесь настраивается Nacos, мы уже можем запускать свой проект, а запущенный проект будет отображаться в консолиперечень услугвнутри:
4. Консоль Nacos взаимодействует с реальным проектом
4.1 Пространства имен
Пространства имен используются для изоляции конфигурации на уровне арендатора. Конфигурации с одной и той же группой или идентификатором данных могут существовать в разных пространствах имен. Одним из распространенных сценариев пространства имен является разграничение и изоляция конфигурации различных сред, например изоляция ресурсов (например, конфигурации и служб) в среде разработки и тестирования и в производственной среде.
Nacos помогает пользователям логически изолировать несколько пространств имен на основе пространства имен, что может помочь пользователям лучше управлять службами и конфигурациями в нескольких средах, такими как тестирование, предварительный выпуск и рабочая среда, чтобы одна и та же конфигурация (например, источник данных базы данных) в каждой среде могла работать. определить другое значение .
- Добавляем пространство имен с именем dev (по умолчанию есть публичное):
- На этом этапе появится дополнительная группа конфигурации с пространством имен dev в списке конфигураций, и разные среды будут иметь разные конфигурации.:
Если проект Spring хочет прочитать соответствующую конфигурацию, он должен изменить нашуbootstrap.ymlКонфигурация:
spring:
profiles:
active: dev
application:
name: (项目名称)-service
cloud:
nacos:
config:
namespace: b96b8faf-3f04-4f6f-a321-aae6f0a2414b
server-addr: (安装Nacos机器的IP):8848
file-extension: properties
4.2 Динамическая конфигурация
Динамическая конфигурация Редактирование, хранение, распространение, управление изменениями, управление историческими версиями, аудит изменений и другие действия, связанные с конфигурацией конфигурации системы. Конкретный настраиваемый параметр и область его значений, обычно в виде param-key=param-value. Например, мы часто настраиваем уровень вывода журнала системы (logLevel=INFO|WARN|ERROR) — это элемент конфигурации.
- Идентификатор набора конфигураций
Идентификатор конфигурации, установленной в Nacos. Идентификатор набора конфигураций — это одно из измерений, по которым организация разделяет конфигурацию. Идентификаторы данных часто используются для организации наборов конфигураций, разделяющих систему. Система или приложение могут содержать несколько наборов конфигурации, каждый из которых можно идентифицировать по осмысленному имени. Идентификатор данных обычно принимает правила именования пакетов Java (например, com.taobao.tc.refund.log.level) для обеспечения глобальной уникальности. Это соглашение об именах является необязательным.
- Настроить группировку
Набор наборов конфигурации в Nacos является одним из аспектов организационной конфигурации. Группирует конфигурации по осмысленной строке (например, «Купить» или «Торговать»), чтобы различать конфигурации с одинаковым идентификатором данных. Когда вы создаете конфигурацию на Nacos, если имя группы конфигурации не заполнено, по умолчанию имя группы конфигурации будет DEFAULT_GROUP. Общие сценарии для группировки конфигураций: разные приложения или компоненты используют один и тот же тип конфигурации, например конфигурацию database_url и конфигурацию MQ_topic.
-
Мы выбираем пространство имен dev и добавляем элемент конфигурации с идентификатором данных gateway-service-dev.properties (согласно приведенным выше правилам
${prefix}-${spring.profiles.active}.${file-extension}
), для группы установлено значение README_GROUP:
mine.name=baicai
mine.age=18
- Соответственно модифицируем нашу конфигурацию bootstrap.yml:
spring:
profiles:
active: dev
application:
name: (项目名称)-service
cloud:
nacos:
config:
group: README_GROUP
namespace: b96b8faf-3f04-4f6f-a321-aae6f0a2414b
server-addr: (安装Nacos机器的IP):8848
file-extension: properties
- Используйте @RefreshScope и @Value в нашем проекте, чтобы прочитать соответствующую конфигурацию (значение по умолчанию после двоеточия):
@RefreshScope
@RestController
@RequestMapping("/config")
public class ConfigController {
@Value("${mine.name:none}")
private String name;
@Value("${mine.age:0}")
private String age;
@RequestMapping("/get")
public String get() {
return name + ": " + age;
}
}
- Посетите этот запрос, чтобы узнать, было ли содержимое конфигурации синхронизировано с проектом.:
#### 配置测试
GET http://localhost:8080/config/get
Accept: */*
Cache-Control: no-cache
Запрос получает результат:
baicai: 18
Давайте изменим содержимое конфигурации, чтобы увидеть, будет ли оно синхронизироваться с проектом в режиме реального времени:
mine.name=baicai-2
mine.age=18-2
Запрос получает результат:
baicai-2: 18-2
Отчетливо видны логи в проекте:
2021-02-07 16:04:29.855 INFO 23972 --- [21-aae6f0a2414b] o.s.c.e.event.RefreshEventListener : Refresh keys changed: [mine.name, mine.age]
2021-02-07 16:04:29.856 INFO 23972 --- [21-aae6f0a2414b] c.a.nacos.client.config.impl.CacheData : [fixed-192.168.138.131_8848-b96b8faf-3f04-4f6f-a321-aae6f0a2414b] [notify-ok] dataId=gateway-service-dev.properties, group=README_GROUP, md5=f9c5b973de2fc78a9314efdef195dfad, listener=com.alibaba.cloud.nacos.refresh.NacosContextRefresher$1@2279ad91
2021-02-07 16:04:29.856 INFO 23972 --- [21-aae6f0a2414b] c.a.nacos.client.config.impl.CacheData : [fixed-192.168.138.131_8848-b96b8faf-3f04-4f6f-a321-aae6f0a2414b] [notify-listener] time cost=1719ms in ClientWorker, dataId=gateway-service-dev.properties, group=README_GROUP, md5=f9c5b973de2fc78a9314efdef195dfad, listener=com.alibaba.cloud.nacos.refresh.NacosContextRefresher$1@2279ad91
- Если содержимое файла конфигурации, который я изменил на этот раз, неверно, и я не совсем помню, что было правильно в прошлый раз, что мне делать, если я хочу восстановить последнее содержимое??
Это не имеет значения, nacos предоставляет нам 30-дневную запись модификации файла конфигурации:
Попробуем откатить конфигурацию прямо сейчас:
Запрос получает результат:
baicai: 18
Наконец правильная конфигурация вернулась.
4.3. Управление услугами
Управление услугами Разработчикам или персоналу по эксплуатации и техническому обслуживанию часто требуется просмотреть статус регистрации услуги через дружественный интерфейс после того, как услуга зарегистрирована, включая все услуги, зарегистрированные в настоящее время в системе, и сведения о каждой услуге. А в случае контроля разрешений отредактируйте некоторые настройки сервиса. В части обнаружения служб открытой консоли этой версии Nacos в основном предоставляет пользователям базовую страницу управления и обслуживания, на которой можно просматривать и редактировать зарегистрированные в настоящее время службы.
- Посмотреть подробные параметры услуги:
- Поддержка веса служебного трафика, управление метаданными служб, изящное обслуживание онлайн и офлайн:
- Поддержка веса сервисного трафика
Nacos предоставляет пользователям возможность контролировать вес трафика и открывает пороговую защиту для служебного трафика, чтобы помочь пользователям лучше защитить кластеры поставщиков услуг от случайной перегрузки. Как показано на рисунке ниже, вы можете нажать кнопку редактирования экземпляра, чтобы изменить вес экземпляра. Если вы хотите увеличить трафик инстанса, вы можете увеличить вес, если вы не хотите, чтобы инстанс получал трафик, вы можете установить вес на 0.
- Управление метаданными службы
Nacos обеспечивает отображение метаданных службы в нескольких измерениях, чтобы помочь пользователям хранить индивидуальную информацию. Эта информация хранится в структуре данных K-V, на консоли они будут отображаться в формате k1=v1, k2=v2. Точно так же редактирование метаданных может быть выполнено в том же формате. Например, чтобы изменить метаданные службы, сначала нажмите кнопку «Редактировать службу» в правом верхнем углу страницы сведений о службе, а затем введите: version=1.0, env=prod в поле ввода метаданных.
- Сервис изящный и автономный
Nacos также обеспечивает онлайн- и офлайн-операции для экземпляров службы. На странице сведений о службе вы можете нажать кнопку «В сети» или «Автономно» для экземпляра. Автономный экземпляр не будет включен в список работоспособных экземпляров.
4.4 Управление входом в систему
- Создать нового пользователя:
- Пользовательская роль:
- роль добавить разрешения:
Spring Cloud Alibaba Actual Combat (1) Подготовка
Spring Cloud Alibaba Actual Combat (2) Nacos
Spring Cloud Alibaba Actual Combat (3) Sentinel
Весеннее облако Alibaba бой (4) Oauth2
Spring Cloud Alibaba Actual Combat (5) Zuul
Реальные бои Spring Cloud Alibaba (6) Статьи RocketMQ
Spring Cloud Alibaba Actual Combat (7) Seata
Spring Cloud Alibaba Actual Combat (8) SkyWalking
Адрес проекта на GitHub:GitHub.com/D2C-CAI/Хайер…