SpringCloud之Nacos注册中心

编程

SpringCloud之Nacos注册中心

上一节中,我们已经搭建完nacos的环境,接下来就是代码中引用它了。

服务提供者

现在我们创建一个springboot项目,这个项目作为服务提供端。这个项目向注册中心提供服务接口,供客户端来调用。

首先,就是pom.xml中添加依赖关系

<dependencies>

<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.projectlombok</groupId>

<artifactId>lombok</artifactId>

<version>1.18.2</version>

<optional>true</optional>

</dependency>

</dependencies>

为了方便,我们在main函数类写一个接口

@EnableDiscoveryClient

@SpringBootApplication

public class TestApplication {

public static void main(String[] args) {

SpringApplication.run(TestApplication.class, args);

}

@Slf4j

@RestController

static class TestController {

@GetMapping("/hello")

public String hello(@RequestParam String name) {

log.info("invoked name = " + name);

return "hello " + name;

}

}

}

注意这个注解@EnableDiscoveryClient。这里就开启了服务注册中心,当项目启动完之后,这个项目就自动的注册到注册中心了。

配置

最关键的就是配置信息

spring.application.name=alibaba-nacos-discovery-server

server.port=8001

spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848

其中spring.cloud.nacos.discovery.server-addr就是我们刚搭建的nacos环境地址。我们现在可以尝试启动项目,看看nacos界面有没有新的服务注册进来。

启动成功了,界面中也有了新的服务。这个服务就是我们刚创建的服务提供者。

服务消费者

我们要消费这个服务,就要创建服务消费的项目,利用注册中心,来消费里面的服务接口。

还是一样创建一个空的springboot项目,我们在main类中调用服务提供者的接口。

@EnableDiscoveryClient

@SpringBootApplication

public class TestApplication {

public static void main(String[] args) {

SpringApplication.run(TestApplication.class, args);

}

@Slf4j

@RestController

static class TestController {

@Autowired

LoadBalancerClient loadBalancerClient;

@GetMapping("/test")

public String test() {

// 通过spring cloud common中的负载均衡接口选取服务提供节点实现接口调用

ServiceInstance serviceInstance = loadBalancerClient.choose("alibaba-nacos-discovery-server");

String url = serviceInstance.getUri() + "/hello?name=" + "nn";

RestTemplate restTemplate = new RestTemplate();

String result = restTemplate.getForObject(url, String.class);

return "Invoke : " + url + ", return : " + result;

}

}

}

配置信息

spring.application.name=alibaba-nacos-discovery-client-common

server.port=9000

spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848

注意的地方就是

 ServiceInstance serviceInstance = loadBalancerClient.choose("alibaba-nacos-discovery-server");

我们通过服务名称来调用里面的接口。这里就体现出了注册中心在其中的作用了。服务消费者,通过从注册中心获取服务列表,缓存到本地,服务消费者通过本地服务列表来调用服务接口。这样就实现了简单微服务的整个接口调用方向。

以上内容皆为本人观点,欢迎大家提出批评和指导,我们一起探讨!

以上是 SpringCloud之Nacos注册中心 的全部内容, 来源链接: utcz.com/z/512522.html

回到顶部