Потратьте немного денег, путешествуйте, хватайте сразу, пожалуйста, обратите внимание на общедоступный номер: Любите бронировать или нет
Автор: Дон Жуан.
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