Предварительные Nacos (два) — использование SpringCloud службы регистрации и обнаружения Nacos

Микросервисы

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

Автор: Дон Жуан.

Promotion.aliyun.com/ваша ТМ есть/облака боятся жары…Специальная скидка на облачный сервер Ali

Эта глава основана на том, что вы узнали о микросервисах и Nacos, а также загрузили, установили и запустили Nacos.Если вы еще не запустили Nacos, вы можете сначала прочитать нашу предыдущую статью:Предварительное исследование Nacos (1) — запуск в автономном режиме. 由于目前1.0版本不太稳定,我测试时遇到心跳检测失败的问题,暂时切换到0.9.0版本启动演示。

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

Ну, давайте начнем ссылаться сейчасОфициальный пример (пример nacos-spring-cloud-discovery), попробуйте зарегистрировать службу в Nacos.

Сначала мы создаем новый проект и добавляем зависимости в pom.xml.

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    <version>0.2.1.RELEASE</version>
</dependency>

Примечание. Версия 0.2.x.RELEASE соответствует версии Spring Boot 2.x, версия 0.1.x.RELEASE соответствует версии Spring Boot 1.x. Я использую последнюю версию кисточки Spring Boot 2.x.

На втором этапе мы создали модуль поставщика услуг. В этом проекте добавьте зависимость в pom.xml.

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

И настройте его в application.properties для регистрации сервиса в сервисном центре Nacos.

server.port=18080
spring.application.name=nacos-demo-rest-provider
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848

Третий шаг — включить функцию обнаружения регистрации службы, аннотировав @EnableDiscoveryClient в классе запуска SpringBoot. В качестве официального примера:

@SpringBootApplication
@EnableDiscoveryClient
public class NacosProviderApplication {

    public static void main(String[] args) {
        SpringApplication.run(NacosProviderApplication.class, args);
    }

    @RestController
    class EchoController {
        @RequestMapping(value = "/echo/{string}", method = RequestMethod.GET)
        public String echo(@PathVariable String string) {
            return "Hello Nacos Discovery " + string;
        }
    }

}

Вот интерфейс REST, а сервисные вызовы Dubbo мы изучим позже. Примечание. При балансировке нагрузки ленты нельзя использовать знак подчеркивания в имени службы, иначе служба не будет найдена.

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

Доступ к интерфейсу REST можно получить через браузер:

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

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

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
    <version>2.1.0.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
    <version>2.1.0.RELEASE</version>
</dependency>

И настройте его в application.properties для регистрации сервиса в сервисном центре Nacos.

server.port=18081
spring.application.name=nacos-demo-rest-consumer
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848

Пятый шаг, в классе запуска SpringBoot, включите функцию обнаружения регистрации службы, добавив аннотацию @EnableDiscoveryClient. В качестве официального примера:

@SpringBootApplication
@EnableDiscoveryClient
public class NacosConsumerApplication {

    @LoadBalanced
    @Bean
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }

    public static void main(String[] args) {
        SpringApplication.run(NacosConsumerApplication.class, args);
    }

    @RestController
    public class TestController {

        private final RestTemplate restTemplate;

        @Autowired
        public TestController(RestTemplate restTemplate) {this.restTemplate = restTemplate;}

        @RequestMapping(value = "/echo/{str}", method = RequestMethod.GET)
        public String echo(@PathVariable String str) {
            return restTemplate.getForObject("http://nacos-demo-rest-provider/echo/" + str, String.class);
        }
    }
}

В коде nacos-demo-rest-provider — это имя предыдущего поставщика услуг.

Здесь я хочу поговорить о @LoadBalanced. Добавьте аннотацию @LoadBalanced в RestTemplate, чтобы RestTemplate поддерживал балансировку нагрузки. Если аннотация @LoadBalanced не добавлена, будет сообщено об исключении java.net.UnknownHostException. В настоящее время это невозможно зарегистрирован на Nacos Server. Имя службы используется для вызова службы, поскольку RestTemplate не может сопоставлять имя службы с ip:port, а функция сопоставления реализуется LoadBalancerClient.

Что ж, теперь мы запускаем службу и наблюдаем за консолью Nacos, новая служба также была зарегистрирована в Nacos.

Доступ к нему можно получить через браузер, и вы можете видеть, что он был вызван:

Следующее поможет всем лучше понять регистрацию и обнаружение всей службы и процесс вызова интерфейса.

Что ж, регистрация и обнаружение службы на основе Nacos в облаке Spring завершена. Это очень просто? Может быть много мелких партнеров, использующих Dubbo. Затем, в следующей главе, мы начнем пробовать вызов службы Dubbo.

Promotion.aliyun.com/ваша ТМ есть/облака боятся жары…Специальная скидка на облачный сервер Ali