Использование Nacos с открытым исходным кодом от Alibaba для микросервисов действительно приятно!

Java открытый источник
Использование Nacos с открытым исходным кодом от Alibaba для микросервисов действительно приятно!

Эта статья подходит для людей с базовыми знаниями Java

Автор этой статьи: HelloGitHub-Цинь люди

от HelloGitHub«Объяснение проектов с открытым исходным кодом»Серии, сегодня я представляю вам версию Java с открытым исходным кодом, которая может реализовать платформу динамического обнаружения, настройки и управления услугами — Nacos, которая является открытым исходным кодом командой Alibaba и соответствует всем привычкам использования китайцев, и имеет богатые китайские документы, и сообщество открытого исходного кода также очень активно.

Адрес исходного кода проекта:GitHub.com/alibaba/вывезти…

1. Введение проекта

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

Три основных регистрационных центра

название Центр конфигурации Регистрационный центр полагаться соглашение о доступе итерация версии Комплексная поддержка Начиная
Eureka не поддерживается служба поддержки Не зависит от других компонентов HTTP Без обновления версии Интеграция с SpringCloud Простой, английский интерфейс, не соответствующий китайским привычкам
Consul служба поддержки служба поддержки Не зависит от других компонентов HTTP/DNS Итерация версии Спрингклауд, K8S Сложный, английский интерфейс, не соответствующий китайским привычкам
Nacos служба поддержки служба поддержки Не зависит от других компонентов HTTP/динамический DNS/UDP Итерация версии Даббо, SpringCloud, K8S Очень просто, китайская документация и сообщество в соответствии с китайскими привычками.

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

  • Обнаружение служб: поддерживает обнаружение служб на основе DNS и RPC. После того как поставщик услуг зарегистрирует службу с помощью собственного SDK, OpenAPI или отдельного агента TODO, потребитель службы может использовать DNS TODO или HTTP&API для поиска и обнаружения службы.
  • Мониторинг работоспособности служб: обеспечивает проверку работоспособности служб в режиме реального времени, предотвращая запросы к неработоспособным хостам или экземплярам служб.
  • Служба динамической конфигурации. Служба динамической конфигурации позволяет управлять конфигурацией приложений и конфигурацией служб для всех сред централизованным, внешним и динамическим образом.
  • Служба динамической DNS. Служба динамической DNS поддерживает взвешенную маршрутизацию, и пользователи могут более легко реализовать балансировку нагрузки среднего уровня, более гибкие стратегии маршрутизации, управление трафиком и простые службы разрешения DNS во внутренней сети центра обработки данных.
  • Управление службами и метаданными: Nacos позволяет пользователям управлять всеми службами и метаданными в центре обработки данных с точки зрения построения платформы микрослужб, включая управление описанием служб, жизненным циклом, статическим анализом зависимостей служб, состоянием службы, управлением трафиком службы, маршрутизацией. и политики безопасности, соглашения об уровне обслуживания для услуг и статистика наиболее важных показателей.

NacosЭкологическая карта

два,SpringBootнастоящий бой

NacosОсновными функциями являются центр конфигурации и центр регистрации.

  • Центр конфигурации: черезNacosНастройте имя пользователя, указанное выше, и реализуйте функцию динамического получения информации о конфигурации без перезапуска микросервиса.
  • Реестр: создайте две микрослужбы: поставщик услуг и потребитель услуг для реализации вызовов между микрослужбами. Чтобы вызвать интерфейс поставщика, потребителю нужно только объявить имя микросервиса поставщика и адрес запроса интерфейса.NacosВы можете точно найти соответствующий интерфейс.

2.1 Запуск Нако

ссылка для скачивания:GitHub.com/alibaba/вывезти…

unzip nacos-server-$version.zip  #解压
cd nacos/bin
startup.cmd -m standalone #单机模式

Посетите дом

Адрес доступа Nacos:http://localhost:8848/nacos/Пароль учетной записи по умолчанию: nacos nacos Скриншот страницы выглядит следующим образом:

2.2 Центр конфигурации

Создать проект микросервиса

СоздайтеSpringBootСуществует три основных способа создания проектов: через создание веб-сайта,IntelliJ IDEAизSpring InitializrСоздание инструмента, Maven создает создание формы проекта.

ПроектpomСодержимое файла следующее:

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>

    <!--nacos-config的Spring cloud依赖  -->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        <version>0.9.0.RELEASE</version>
    </dependency>

конфигурация bootstrap.yml

spring:
  application:
    name: nacos-config
  cloud:
    nacos:
      config:
        server-addr: 127.0.0.1:8848
        file-extension: yaml
        prefix: nacos-config
  profiles:
    active: dev

Конфигурация Nacos

NacosСоздайте формат имени профиля на:${prefix}-${spring.profile.active}.${file-extension}, как и в предыдущем шагеbootstrap.ymlКак видите, конфигурация, которую я хочу создать, называется:nacos-config-dev.yaml, содержание следующее:

Создать контроллер

Пример функции динамического получения имени пользователя:

Создать внешний интерфейс/usernameкод показывает, как показано ниже:

@RestController
@RefreshScope
public class ConfigController {

    @Value("${username:wangzg}")
    private String username;

    @RequestMapping("/username")
    public String userNameInfo() {
        return username;
    }
}

Уведомление:Controllerдобавить@RefreshScope注解Реализована горячая перезагрузка конфигураций.

Результаты проверки

Запустив проект локально, вы можете увидеть, что при запуске проекта порт изменился на нашNacosпорт настроен на8090.

Перейдите по ссылке в браузере:http://localhost:8090/username,возвращениеtestuser. ИсправлятьNacosначальствоusernameзначение, не нужно перезапускать микросервис и повторно запрашивать ссылкуusernameЗначение будет меняться динамически. видимыйNacosВ качестве центра конфигурации реализована функция горячей загрузки.

2.3 Центр регистрации

  1. Создать поставщика услуг

Чтобы создать микросервисы, см. вышеЦентр конфигурацииметод создания, создать внешний интерфейс/sayHelloкод показывает, как показано ниже:

@RestController
public class ProviderController {

    @GetMapping("/sayHello")
    public String sayHello(@RequestParam(value = "name",defaultValue = "helloWord")String sayHello){

        return "tom say: " + sayHello;
    }
}

Запустите сервис и посетите адрес:http://localhost:8099/sayHello, который выводит:tom say: helloWord, указывающий, что микросервис успешно создан.

  1. Создайте потребителя услуги

используется здесьFeignClientСпособ достижения межсервисных вызовов (заинтересованные студенты также могут изучить метод RestTemplate).

файл pom

В pom-файл nacos-consumer добавитьFeigin-ClientЗависимость от maven.

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

добавить аннотацию

Запуск класса в микросервисе*Application.javaдобавить аннотацию@EnableFeignClients.

Создать FeignClient

@FeignClient("nacos-provider")
public interface ProviderClient {

    @GetMapping("/sayHello")
    String sayHello(@RequestParam(value = "name", defaultValue = "wangzg", required = false) String name);
}

Описание: аннотация FeignClient переданаname, укажите имя FeignClient. Если проект использует ленту, атрибут name будет использоваться как имя микросервиса для обнаружения сервиса.

Создать Потребительский Контроллер

@RestController
public class ConsumerController {

    @Autowired
    ProviderClient providerClient;

    @GetMapping("/hi-feign")
    public String hiFeign(){
       return providerClient.sayHello("feign");
    }
}

Перезапустите проект и откройте его в браузере.http://localhost:8090/hi-feign, правильный ответ может отображаться в браузере, тогда nacos-consumer успешно вызывает службу nacos-provider.

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

адрес проекта:GitHub.com/hello WH UA люблю…

3. Наконец

Микросервисы имеют четыре характеристики:

  • Небольшой (детализация микросервисов мала)
  • Автономный (развертывание выполняется и масштабируется независимо)
  • Легкий (система простая и легкая)
  • Свободный (высокая сплоченность, низкая связанность)

Для завершения сложной системы часто требуется множество микросервисных единиц, и очень необходимо подключить каждую микрослужбу и завершить унифицированное управление микрослужбами, поэтому появился продукт интеграции центра управления службами и центра конфигурации, иNacosЯвляется одним из лучших!

На этом этапе обучения вы должны уметьNacosИмейте хоть какое-то понимание! Самый быстрый способ учиться — это подражать, а затем учиться на одном примере и учиться на других, сможете ли вы освоить его. Каждый новый инструмент является нововведением старого инструмента.Заинтересованные друзья могут обратиться к моему делу выше и найдут больше удовольствия на практике!

4. Ссылки