SpringCloud之Nacos注冊中心
上一節(jié)中,我們已經(jīng)搭建完nacos的環(huán)境覆劈,接下來就是代碼中引用它了斥黑。
服務提供者
現(xiàn)在我們創(chuàng)建一個springboot項目,這個項目作為服務提供端启具。這個項目向注冊中心提供服務接口,供客戶端來調(diào)用珊泳。
首先,就是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函數(shù)類寫一個接口
@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環(huán)境地址。我們現(xiàn)在可以嘗試啟動項目序无,看看nacos界面有沒有新的服務注冊進來验毡。
啟動成功了,界面中也有了新的服務帝嗡。這個服務就是我們剛創(chuàng)建的服務提供者晶通。
服務消費者
我們要消費這個服務,就要創(chuàng)建服務消費的項目哟玷,利用注冊中心狮辽,來消費里面的服務接口。
還是一樣創(chuàng)建一個空的springboot項目巢寡,我們在main類中調(diào)用服務提供者的接口喉脖。
@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中的負載均衡接口選取服務提供節(jié)點實現(xiàn)接口調(diào)用
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");
我們通過服務名稱來調(diào)用里面的接口。這里就體現(xiàn)出了注冊中心在其中的作用了抑月。服務消費者树叽,通過從注冊中心獲取服務列表,緩存到本地谦絮,服務消費者通過本地服務列表來調(diào)用服務接口题诵。這樣就實現(xiàn)了簡單微服務的整個接口調(diào)用方向洁仗。