предисловие
С конца 2017 года, когда Dubbo, наиболее широко используемая среда RPC в области разработки Java, начала обновлять и поддерживать, Alibaba продолжает открывать исходный код экосистемы микросервисов Dubbo.Sentinel,Nacos,SeataВ ожидании платформы промежуточного программного обеспечения для микросервисов и запуска Spring Cloud Alibaba, чтобы предоставить универсальное решение для разработки микросервисов, Alibaba продолжает активно участвовать в сообществе Java и привносит новую жизненную силу в разработку микросервисов Java.
В этой статье основное внимание будет уделено изучению функций и использованию микросервисного компонента Nacos в качестве реестра.NacosЭто новый проект Alibaba с открытым исходным кодом в июле 2018 года.
Об имени Nacos: первые четыре буквы - это первые две буквы имени и конфигурации, последние
sдля обслуживания.
Основное содержание этой статьи следующее:
- Основное введение в Nacos
- Зачем использовать Nacos
- Регистрация и интеграция обнаружения последней версии сервисов Nacos и Rest/Dubbo
О Nacos /nɑ:kəʊs/
Динамическое обнаружение сервисов, управление конфигурацией и платформа управления сервисами, упрощающая создание облачных приложений.
Приведенное выше предложение взято с официальной домашней страницы Nacos, которая представляет собой краткое изложение общих функций Nacos.
В двух словах, Nacos представляет собой комбинацию центра регистрации и центра конфигурации, предоставляя простой в использовании набор функций, помогающий нам решать проблемы регистрации и обнаружения служб, настройки служб и управления службами, которые должны быть задействованы в микросервисах. разработка. Nacos также является одним из компонентов Spring Cloud Alibaba, отвечающим заРегистрация и обнаружение службы.
Во-первых, давайте посмотрим на официальный ответ Nacosхарактеристикаописывать:
- Обнаружение служб и мониторинг работоспособности служб
- Служба динамической настройки
- Служба динамического DNS
- Службы и управление их метаданными
- Постоянно добавляю...
Можно обнаружить, что все функции неразделимыСлужитьЭто слово «Служба» является первоклассным гражданином в мире Nacos, что указывает на то, что служба является самой важной ролью в Nacos.
Почему Накос
В текущей экосистеме микросервисов уже есть много компонентов с открытым исходным кодом для регистрации и обнаружения сервисов, таких как Eurka, ZooKeeper и Consul. Зачем использовать Nacos? Давайте посмотрим на простое сравнение этих фреймворков:
| Платформа регистрации и обнаружения служб | CAP модель | консольное управление | общественная деятельность |
|---|---|---|---|
| Eureka | AP | служба поддержки | Низкий (версия 2.x с закрытым исходным кодом) |
| Zookeeper | CP | не поддерживается | середина |
| Consul | CP | служба поддержки | высокий |
| Nacos | AP | служба поддержки | высокий |
Говорят, что Nacos имеет более 100 000 экземпляров, работающих внутри Alibaba, которые прошли тест различного крупномасштабного трафика, такого как Double Eleven.
Напротив, текущий Nacos прост в использовании как при развертывании, так и при использовании.Что еще более важно, документация завершена, а сообщество очень активно.
И Nacos, и нынешние основные экосистемы с открытым исходным кодом обеспечивают хорошую поддержку:
- Nacos — центр регистрации и настройки Dubbo.
- Nacos будет полностью совместим с Spring Cloud
- Nacos поддерживает интеграцию Service Mesh, интеграцию Kubernetes
Кроме того, Alibaba создает платформу для обнаружения сервисов, управления сервисами и трафиком, а также совместного использования сервисов через Dubbo + Nacos и ряд проектов с открытым исходным кодом. Он будет продолжать развиваться и развиваться в будущем. Я верю, что Nacos будет использоваться в большем количестве мест в будущем.
Накос в действии
Автономное развертывание
Подготовьте среду
Nacos полагается на среду Java для запуска, и когда вам нужно создать исполняемую программу для кода Nacos, у вас также должна быть среда Maven, поэтому вам необходимо обеспечить требования к среде перед развертыванием:
- 64-битная ОС, поддерживает Linux/Unix/Mac/Windows, рекомендуется Linux/Unix/Mac.
- 64 bit JDK 1.8+
- Maven 3.2.x+
Загрузить и установить
Последняя версия Nacos — 1.0.1.После упаковки Maven она будет храниться в текущем каталоге.distribution/targetСоздайте два сжатых пакета подnacos-server-1.0.1.tar.gzиnacos-server-1.0.1.zip, вы можете распаковать любой и использовать его.
Распаковать и запустить
Здесь метод автономного развертывания Nacos использует команду-m standalone, если это команда Windows, вы можете дважды щелкнуть напрямуюstartup.cmdфайл.
Когда в консоли появятся буквы Nacos, аNacos started successfully in stand alone modeПри появлении запроса это означает, что сервер Nacos был успешно запущен, и доступный в настоящее время адрес консоли Nacos также указан непосредственно на консоли.http://{ip}:8848/nacos/index.html, нажмите, чтобы войти в интерфейс визуального управления Nacos, для доступа вам потребуется учетная запись и пароль, по умолчаниюnacos.
После входа в систему вы можете увидеть меню основных функций Nacos на боковой панели веб-сайта: управление конфигурацией, управление службами, управление кластером, пространство имен. Для функций регистрации и обнаружения служб нам нужно только взглянуть на управление службами.
В настоящее время существует только одно подменю под названием «Список служб» в разделе «Управление службами», и отображаемое содержимое относительно простое, включая имя службы, группу, количество кластеров, общее количество экземпляров и количество запущенных экземпляров.
Когда новая служба регистрируется в Nacos через клиент Nacos, элемент списка будет добавлен.Мы также можем просматривать и редактировать сведения об услуге с помощью кнопок на панели управления.
Развертывание кластера
По сравнению с простой одномашинной развёрткой Nacos, кластерный метод развёртывания немного более хлопотный, следуя официальной документации, всё же немного изрыт, и требуются дополнительные корректировки. Чтобы использовать его в производственной среде, необходимо обеспечить высокую доступность Nacos, поэтому необходимо отработать операцию развертывания кластера.
Среда подготовки такая же, как и при развертывании на одном компьютере.Дополнительным требованием является то, что Nacos требуется 3 или более узлов Nacos для формирования кластера и используется MySQL в качестве источника данных, который в основном используется для сохранения данных конфигурации службы.
Давайте взглянем на официально рекомендуемую схему архитектуры развертывания кластера. Мы используем обратный прокси-сервер доменного имени, такой как Nginx, для загрузки нескольких IP-адресов узлов Nacos, и внешние клиенты могут получить к ним прямой доступ через доменные имена. Это не только читабельно, но и легко для понимания. изменить IP-адреса. Рекомендуется.
Добавить файл конфигурации кластера
на каждом узле NacosconfВ директорию добавляем файл конфигурацииcluster.conf, вы можете обратиться к тому же каталогуcluster.conf.exampleфайл, настройте IP-адрес и порт одного узла на строку, напримерip:port
Примечание: нельзя использовать в файлах конфигурации
127.0.0.1илиlocalhost, требуется реальный IP или доменное имя, иначе сервис не может быть зарегистрирован на узле кластера после запуска, подробнее см.NACOS ISSUE #1189.
Настроить базу данных MySQL
Nacos рекомендует использовать как минимум активный/резервный режим для баз данных в производственной среде или использовать базу данных с высокой доступностью.
Здесь для простоты используется только одна база данных. Сначала создайте новый с именемnacos_configбазу данных, используя предоставленнуюисходный файл инструкции sqlИмпорт исходных данных.
Затем в файле конфигурации каждого узла Nacosconf/application.propertiesДобавьте конфигурацию подключения к базе данных в:
Наконец, каждый узел запускается отдельно в кластерном режиме, и по умолчанию он запускается в фоновом режиме.Информация о запуске должна быть запущена сlogs/logs/start.outполученный из лог-файла.
Когда файл журнала появляется в последний разNacos started successfully in cluster mode.Когда есть одна строка, это означает, что Nacos успешно запускается в кластерном режиме. В настоящее время мы также можем просмотреть информацию об узле, войдя в интерфейс управления кластером любой консоли Nacos.
Как видно из вышеизложенного, статус узлов Nacos в составе кластера делится наFOLLOWER,LEADERВо-вторых, похоже на знакомую нам архитектуру ведущий-ведомый.
На этом построение нашего кластерного режима также завершено. Далее давайте рассмотрим, как использовать Nacos для регистрации и обнаружения служб.
Реализовать регистрацию и обнаружение службы
Регистрация и обнаружение сервиса Rest
создание поставщика услуг
Создайте проект подпроекта с именемrest-providerпрограмма поставщика услуг,pom.xmlКонфигурация выглядит следующим образом:
Обратите внимание здесьspring-cloud-starter-alibaba-nacos-discoveryВерсия 0.9.0, в которой используется версия клиента Nacos 1.0.0, а соответствующая версия Spring Boot должна быть версией 2.1.x.RELEASE.Выходные данные вики
Поэтому мы используем последнюю версию Spring Cloud Alibaba.0.9.0.RELEASE, В соответствии с версией Spring Cloud Greenwich в конфигурацию POM родительского проекта Maven необходимо добавить следующее управление зависимостями:
После добавления зависимости реализуйте метод запроса Rest в классе начальной загрузки./echo, и через@EnableDiscoveryClientВ аннотации указано, что это клиент Nacos, а аннотация — это собственная аннотация, предоставляемая Spring Cloud.Даже если вы переключитесь на Eureka в качестве реестра, эта аннотация будет использоваться.
Изменить файл конфигурации подпроектаapplication.properties
-
spring.application.nameОбъявлено имя службы -
spring.cloud.nacos.discovery.server-addrАдрес реестра Nacos указан
Для получения дополнительной информации об элементах конфигурации Nacos Starter см.Spring Cloud Alibaba Nacos Discovery
затем через класс начальной загрузкиRestProviderApplicationЗапустите проект, войдите в консоль Nacos Server и просмотрите список услуг, чтобы увидеть поставщика услуг.rest-providerРегистрация прошла успешно.
создание потребителя услуг
Таким же образом создаем проект потребителя услугrest-consumer,pom.xmlзависимый иapplication.propertiesнастроить сprovider-consumerАналогично, здесь мы явно используем API LoadBalanceClient в сочетании с RestTemplate для использования службы.
-
Сначала добавьте в класс начальной загрузки
@EnableDiscoveryClientаннотация -
создать другое имя
RestConsumerConfigurationКласс конфигурации Java, внедренныйRestTemplate. -
Создать
RestConsumerControllerКонтроллер для тестирования, предоставляющий метод запросаecho, следующее: -
запускать
rest-cosumerПосле проекта вы можете увидеть дополнительный сервис с именем в списке сервисов консоли Nacos Server.rest-consumerсервис и доступ к нему прямо в браузереhttp://localhost:8082/echo, ты увидишь:
Он очень прост в использовании? На самом деле, он не сильно отличается от Eureka. В дополнение к потреблению сервисов Rest таким образом, Nacos также поддерживает метод Feign. Давайте посмотрим, как это используется.
Использование Rest Services в фиктивном режиме
Сначала вам нужно ввести клиентские зависимости Feign:
Затем класс начальной загрузки добавляет аннотацию@EnableFeignClientsЧтобы включить функцию компонента Feign, напишитеEchoServiceИнтерфейс для вызова удаленных сервисов:
Нельзя использовать параметры метода интерфейса метода запроса Get.
@RequestParamПараметр указывает имя параметра запроса, иначе Feign вызовет его через POST и получит код ошибки 405.
аннотация@FeignClientУказывает имя вызываемого поставщика услуг,echoМетод можно связать с интерфейсом Rest поставщика услуг с помощью аннотаций, предоставляемых Spring MVC, и при выполнении будет вызываться соответствующий метод запроса.
Наконец, нам просто нужно написать инъекциюEchoServiceконтроллерRestConsumerFeignControllerКласс, предоставляющий интерфейс для вызова интерфейса.
После того же запуска откройте его напрямуюhttp://localhost:8082/echo/hi, вы получите следующий вывод из браузера:
Регистрация и открытие сервисов Dubbo
Теперь давайте посмотрим, как Dubbo использует Nacos в качестве сервисного реестра для регистрации и обнаружения.На самом деле, пока вы использовали метод ZooKeeper, вы обнаружите, что он очень прост.
Сначала мы создаем подпроектdubbo-serivce, файл POM добавляет следующие зависимости:
- Здесь мы используем Dubbo версии 2.6.5 для интеграции Nacos в соответствии с официальной рекомендацией.
-
dubbo-registry-nacosКлючевой зависимостью Dubbo является использование Nacos в качестве реестра Текущая версия — 0.0.1.
Затем определите интерфейс службыDemoService:
сервис-продюсер
Или производитель услуг на первом месте, добавьте классDemoServiceImplРеализовать сервисный интерфейс
Затем настройте Dubbo в конфигурации XML, просто нужноdubbo:registryАдрес сервера Nacos можно настроить на элементе.
Наконец, используйте простой классBasicProviderизmainМетод напрямую запускает производителя службы и сохраняет процесс резидентным.
После обычного запуска мы можем напрямую перейти к списку служб консоли Nacos.Служба производителя Dubbo была успешно зарегистрирована в Nacos, и вы можете увидеть конкретные данные службы через детали, такие как порт службы, метод и скоро.
потребители услуг
Давайте вместе с производителем услуг посмотрим, как вызывать службы Dubbo через Nacos.
Во-первых, внедрите объект службы Dubbo через XML-конфигурацию.DemoService, существуетdubbo:registryНастройте адрес сервера Nacos на элементе.
Затем напишите простой классBasicConsumer,существуетmainЗагрузите контейнер Spring в метод, получитеDemoServiceобъекта, делая вызовы RCP напрямую.
После запуска мы видим непрерывный вывод журнала из консоли IDE, указывающий на то, что вызов службы Dubbo через реестр Nacos выполнен успешно.
Эпилог
Эта статья в основном учит понимать Nacos, а также тому, как использовать функции регистрации и обнаружения службы Nacos, как интегрироваться со службой Rest и службой Dubbo. В будущем я продолжу углубленное изучение компонентов экосистемы микросервисов Spring Cloud Alibaba.Заинтересованные партнеры могут подписаться на мой публичный аккаунт WeChat, который будет обновляться каждый понедельник.
пример кода
Все фрагменты кода, задействованные в этой статье, находятся на следующих складах. Заинтересованные друзья могут обратиться к вам и изучить:
nacos-actions:GitHub.com/ Как будто впервые увидел 12138…
Экологическая поддержка:
- JDK 8
- Spring Boot 2.1.0
- Maven 3.6.0
Ссылаться на
- Чтобы поддержать экологическое развитие Dubbo, Alibaba запустила новый проект с открытым исходным кодом Nacos:Особенно Aliyun.com/articles/60…
- Официальная документация Nacos:что cos.IO/this-capable/docs/…
- Новый выбор для Spring Cloud Service Discovery — Alibaba Nacos Discovery:вооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооо
- Инструкции по развертыванию кластера:что cos.IO/this-capable/docs/…
- НАКОС № 1189:GitHub.com/alibaba/вывезти…
- Как использовать Feign для создания многопараметрических запросов в Spring Cloud:ву ву краткое описание.com/fear/7 тест 46 из 0 злобный отчет...