Эта статья подходит для людей с базовыми знаниями 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 Центр регистрации
- Создать поставщика услуг
Чтобы создать микросервисы, см. вышеЦентр конфигурацииметод создания, создать внешний интерфейс/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
, указывающий, что микросервис успешно создан.
- Создайте потребителя услуги
используется здесь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. Ссылки
- Официальная документация:что cos.IO/this-capable/docs/…