04-Микросервис-Накос

Регистрационный центр Накос

Отечественные компании в целом с уважением относятся к технологиям Alibaba, таким как центры регистрации. Spring Cloud Alibaba также запустила центр регистрации под названием Nacos.

1.1. Разбираемся и устанавливаем Nacos

Nacos — продукт Alibaba и теперь является компонентом Spring Cloud . По сравнению с Eureka , он имеет более богатые функции и более популярен в Китае.

изображение-20210713230444308

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, и вы увидите информацию о микросервисе:

изображение-20210713231439607

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 делит экземпляры в одном компьютерном зале на кластер .

Другими словами, пользовательский сервис — это сервис. Сервис может содержать несколько кластеров, таких как Ханчжоу и Шанхай. Каждый кластер может иметь несколько экземпляров, образуя иерархическую модель, как показано на рисунке:

изображение-20210713232522531

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

изображение-20210713232658928

Служба заказов в компьютерном зале Ханчжоу должна отдавать приоритет обслуживанию пользователей в том же компьютерном зале.

1.3.1. Настройка кластера для обслуживания пользователей

Измените файл application.yml пользовательского сервиса и добавьте конфигурацию кластера:

spring:
  cloud:
    nacos:
      server-addr: localhost:8848
      discovery:
        cluster-name: HZ # 集群名称

После перезапуска двух экземпляров пользовательских служб мы увидим следующие результаты в консоли nacos:

изображение-20210713232916215

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

-Dserver.port=8083 -Dspring.cloud.nacos.discovery.cluster-name=SH

Конфигурация представлена ​​на рисунке:

изображение-20210713233528982

Проверьте консоль nacos еще раз после запуска UserApplication3:

изображение-20210713233727923

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 найдите список экземпляров пользовательского сервиса и нажмите «Изменить», чтобы изменить вес:

изображение-20210713235133225

Во всплывающем окне редактирования измените вес:

изображение-20210713235235219

ПРИМЕЧАНИЕ . Если вес изменен на 0, к экземпляру никогда не будет доступа.

1.5.Экологическая изоляция

Nacos предоставляет пространство имен для реализации функции изоляции среды.

  • В nacos может быть несколько пространств имен
  • В пространстве имен могут находиться группы, службы и т. д.
  • Различные пространства имен изолированы друг от друга. Например, сервисы в разных пространствах имен не видны друг другу.

изображение-20210714000101516

1.5.1.Создание пространства имен

По умолчанию все службы, данные и группы находятся в одном пространстве имен, называемом public:

изображение-20210714000414781

Мы можем нажать новую кнопку на странице, чтобы добавить пространство имен:

изображение-20210714000440143

Затем заполните форму:

изображение-20210714000505928

На странице вы увидите новое пространство имен:

изображение-20210714000522913

1.5.2. Настройка пространства имен для микросервисов

Настроить пространство имен для микросервисов можно только путем изменения конфигурации.

Например, измените файл application.yml службы заказа:

spring:
  cloud:
    nacos:
      server-addr: localhost:8848
      discovery:
        cluster-name: HZ
        namespace: 492a7d5d-237b-46a1-a99a-fa8e98e4b0f9 # 命名空间,填ID

После перезапуска службы заказов откройте консоль, и вы увидите следующие результаты:

изображение-20210714000830703

изображение-20210714000837140

При доступе к сервису заказа в это время из-за другого пространства имен пользовательский сервис не может быть найден, и консоль сообщит об ошибке:

изображение-20210714000941256

1.6.Разница между Накосом и Эврикой

Экземпляры службы Nacos делятся на два типа:

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

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

Настройте экземпляр службы как постоянный экземпляр:

spring:
  cloud:
    nacos:
      discovery:
        ephemeral: false # 设置为非临时实例

Общие структуры Nacos и Eureka схожи, включая регистрацию служб, получение услуг и ожидание контрольного сигнала, но есть и некоторые различия:

изображение-20210714001728017

  • Что общего у Nacos и Eureka

    • Как регистрация службы поддержки, так и получение услуги.
    • Метод пульса всех поставщиков услуг поддержки для проверки работоспособности.
  • Разница между Накосом и Эврикой

    • Nacos поддерживает сервер для активного определения статуса поставщика: временные экземпляры переходят в режим пульса, а невременные экземпляры переходят в режим активного обнаружения.
    • Временные экземпляры с аномальным пульсом будут удалены, а невременные экземпляры не будут удалены.
    • Nacos поддерживает режим push-сообщений для изменений списка сервисов, и список сервисов обновляется более своевременно.
    • Кластер Nacos по умолчанию использует режим AP. При наличии в кластере невременных экземпляров используется режим CP; Eureka использует режим AP.

Учебные заметки, составленные на основе Учебного пособия для программистов Dark Horse.

Supongo que te gusta

Origin blog.csdn.net/weixin_57486248/article/details/135368547
Recomendado
Clasificación