Регистрационный центр Накос
Отечественные компании в целом с уважением относятся к технологиям Alibaba, таким как центры регистрации. Spring Cloud Alibaba также запустила центр регистрации под названием Nacos.
1.1. Разбираемся и устанавливаем Nacos
Nacos — продукт Alibaba и теперь является компонентом Spring Cloud . По сравнению с Eureka , он имеет более богатые функции и более популярен в Китае.
1.2. Регистрация услуги в nacos
Nacos является компонентом SpringCloudAlibaba, а SpringCloudAlibaba также соответствует спецификациям регистрации и обнаружения сервисов, определенным в SpringCloud. Таким образом, нет большой разницы между использованием Nacos и Eureka для микросервисов.
Основные различия:
- Зависимости бывают разные
- Адрес сервиса другой
1) Ввести зависимости
<dependencyManagement>
Добавьте зависимость SpringCloudAlibaba в pom-файл родительского проекта cloud-demo :
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.2.6.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
Затем добавьте зависимость nacos-discovery в файлы pom в user-service и order-service:
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
Примечание . Не забудьте закомментировать зависимость эврики.
2) Настройте адрес Nacos
Добавьте адреса nacos в application.yml пользовательского сервиса и сервиса заказа:
spring:
cloud:
nacos:
server-addr: localhost:8848
Примечание : не забудьте закомментировать адрес эврики.
3) Перезагрузить
После перезапуска микросервиса войдите на страницу управления nacos, и вы увидите информацию о микросервисе:
1.3. Иерархическая модель хранения услуг.
У сервиса может быть несколько экземпляров . Например, наш пользовательский сервис может иметь:
- 127.0.0.1:8081
- 127.0.0.1:8082
- 127.0.0.1:8083
Если эти экземпляры распределены по разным компьютерным залам по всей стране, например:
- 127.0.0.1:8081, в компьютерном зале Шанхая.
- 127.0.0.1:8082, в компьютерном зале Шанхая.
- 127.0.0.1:8083, в компьютерном зале Ханчжоу.
Nacos делит экземпляры в одном компьютерном зале на кластер .
Другими словами, пользовательский сервис — это сервис. Сервис может содержать несколько кластеров, таких как Ханчжоу и Шанхай. Каждый кластер может иметь несколько экземпляров, образуя иерархическую модель, как показано на рисунке:
Когда микросервисы обращаются друг к другу, им следует попытаться получить доступ к одному и тому же экземпляру кластера, поскольку локальный доступ происходит быстрее. Доступ к другим кластерам будет возможен только в том случае, если текущий кластер недоступен. Например:
Служба заказов в компьютерном зале Ханчжоу должна отдавать приоритет обслуживанию пользователей в том же компьютерном зале.
1.3.1. Настройка кластера для обслуживания пользователей
Измените файл application.yml пользовательского сервиса и добавьте конфигурацию кластера:
spring:
cloud:
nacos:
server-addr: localhost:8848
discovery:
cluster-name: HZ # 集群名称
После перезапуска двух экземпляров пользовательских служб мы увидим следующие результаты в консоли nacos:
Мы снова копируем конфигурацию запуска пользовательской службы и добавляем свойства:
-Dserver.port=8083 -Dspring.cloud.nacos.discovery.cluster-name=SH
Конфигурация представлена на рисунке:
Проверьте консоль nacos еще раз после запуска UserApplication3:
1.3.2 Балансировка нагрузки с приоритетом в одном кластере
По умолчанию ZoneAvoidanceRule
балансировка нагрузки не может быть достигнута на основе приоритета внутри одного кластера.
Таким образом, Nacos предоставляет NacosRule
реализацию, которая может устанавливать приоритеты экземпляров из одного и того же кластера.
1) Настройте информацию о кластере для службы заказов.
Измените файл application.yml службы заказа и добавьте конфигурацию кластера:
spring:
cloud:
nacos:
server-addr: localhost:8848
discovery:
cluster-name: HZ # 集群名称
2) Изменить правила балансировки нагрузки.
Измените файл application.yml службы заказа и измените правила балансировки нагрузки:
userservice:
ribbon:
NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule # 负载均衡规则
1.4 Весовая конфигурация
В фактическом развертывании произойдет следующий сценарий:
Производительность серверного оборудования варьируется. Некоторые машины, на которых расположены экземпляры, имеют более высокую производительность, а другие - худшую. Мы надеемся, что машины с хорошей производительностью будут выдерживать больше запросов пользователей.
Но по умолчанию NacosRule выбирается случайным образом в одном кластере и не учитывает проблемы с производительностью компьютера.
Таким образом, Nacos предоставляет конфигурацию веса для управления частотой доступа.Чем больше вес, тем выше частота доступа.
В консоли nacos найдите список экземпляров пользовательского сервиса и нажмите «Изменить», чтобы изменить вес:
Во всплывающем окне редактирования измените вес:
ПРИМЕЧАНИЕ . Если вес изменен на 0, к экземпляру никогда не будет доступа.
1.5.Экологическая изоляция
Nacos предоставляет пространство имен для реализации функции изоляции среды.
- В nacos может быть несколько пространств имен
- В пространстве имен могут находиться группы, службы и т. д.
- Различные пространства имен изолированы друг от друга. Например, сервисы в разных пространствах имен не видны друг другу.
1.5.1.Создание пространства имен
По умолчанию все службы, данные и группы находятся в одном пространстве имен, называемом public:
Мы можем нажать новую кнопку на странице, чтобы добавить пространство имен:
Затем заполните форму:
На странице вы увидите новое пространство имен:
1.5.2. Настройка пространства имен для микросервисов
Настроить пространство имен для микросервисов можно только путем изменения конфигурации.
Например, измените файл application.yml службы заказа:
spring:
cloud:
nacos:
server-addr: localhost:8848
discovery:
cluster-name: HZ
namespace: 492a7d5d-237b-46a1-a99a-fa8e98e4b0f9 # 命名空间,填ID
После перезапуска службы заказов откройте консоль, и вы увидите следующие результаты:
При доступе к сервису заказа в это время из-за другого пространства имен пользовательский сервис не может быть найден, и консоль сообщит об ошибке:
1.6.Разница между Накосом и Эврикой
Экземпляры службы Nacos делятся на два типа:
-
Временный экземпляр: если экземпляр не работает более определенного периода времени, он будет удален из списка служб. Это тип по умолчанию.
-
Невременный экземпляр: если экземпляр выйдет из строя, он не будет удален из списка служб и также может называться постоянным экземпляром.
Настройте экземпляр службы как постоянный экземпляр:
spring:
cloud:
nacos:
discovery:
ephemeral: false # 设置为非临时实例
Общие структуры Nacos и Eureka схожи, включая регистрацию служб, получение услуг и ожидание контрольного сигнала, но есть и некоторые различия:
-
Что общего у Nacos и Eureka
- Как регистрация службы поддержки, так и получение услуги.
- Метод пульса всех поставщиков услуг поддержки для проверки работоспособности.
-
Разница между Накосом и Эврикой
- Nacos поддерживает сервер для активного определения статуса поставщика: временные экземпляры переходят в режим пульса, а невременные экземпляры переходят в режим активного обнаружения.
- Временные экземпляры с аномальным пульсом будут удалены, а невременные экземпляры не будут удалены.
- Nacos поддерживает режим push-сообщений для изменений списка сервисов, и список сервисов обновляется более своевременно.
- Кластер Nacos по умолчанию использует режим AP. При наличии в кластере невременных экземпляров используется режим CP; Eureka использует режим AP.
Учебные заметки, составленные на основе Учебного пособия для программистов Dark Horse.