天天看點

Spring Cloud:Nacos注冊中心Nacos注冊中心參考資料

Nacos注冊中心

什麼是注冊中心

注冊中心是微服務架構中的紐帶,記錄了服務和服務位址的映射關系。

在分布式架構中,為什麼需要注冊中心。

因為在沒有注冊中心時候,服務間調用需要知道被調方的位址,當服務更換部署位址,就不得不修改位址配置。而有了注冊中心之後,當服務啟動時,服務會把位址注冊到服務注冊中心,當服務調用方調用某個服務的時候,可以通過服務名字去服務注冊中心擷取可用的服務,服務注冊中心會從服務清單擷取所有可用的服務,然後根據負載均衡規則選擇一個服務将服務的真實位址(ip:port)傳回給調用方,當需要變更部署位址時,隻需要自動上報最新的位址到服務注冊中心,下次服務調用将自動擷取最新真實位址。

Spring Cloud:Nacos注冊中心Nacos注冊中心參考資料

整合Nacos Spring Cloud

首先下載下傳并啟動Nacos,詳情參考:Nacos入門

然後通過 Nacos Server 和 spring-cloud-starter-alibaba-nacos-discovery 實作服務的注冊與發現,關于 Nacos Spring Cloud 的詳細文檔請參看:Nacos Discovery。

  1. 添加依賴:
<!-- springcloud ailibaba nacos discovery -->
<dependency>
  	<groupId>com.alibaba.cloud</groupId>
  	<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
  	<version>${latest.version}</version>
</dependency>
           
  1. 添加Nacos配置(yml檔案)
# Spring
spring: 
  application:
    # 應用名稱
    name: spring2go-upms 
  cloud:
    nacos:
      discovery:
        # 服務注冊位址
        server-addr: 127.0.0.1:8848
           
  1. 通過Spring Cloud原生注解@EnableDiscoveryClient開啟服務發現功能,或者直接使用@SpringCloudApplication注解
@SpringBootApplication
@EnableDiscoveryClient
public class Spring2goUpmsApplication {
  public static void main(String[] args) {
    SpringApplication.run(Spring2goUpmsApplication.class, args);
    System.out.println("(♥◠‿◠)ノ゙  UPMS 啟動成功   ლ(´ڡ`ლ)゙  \n");
  }
}
           
  1. 啟動Nacos,檢視控制台服務清單
Spring Cloud:Nacos注冊中心Nacos注冊中心參考資料

測試

package com.spring2go.upms.biz.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

/**
* @Description: Nacos示例代碼
* @author: xiaobin
*/
@RestController
public class TestController {

@Autowired
private RestTemplate restTemplate;

// 新增restTemplate對象注入方法,注意,此處LoadBalanced注解一定要加上,否則無法遠端調用    @Bean
@LoadBalanced
public RestTemplate restTemplate() {
return new RestTemplate();
}

@GetMapping("/nacos")
public String get() {
return restTemplate.getForObject("http://spring2go-upms/hello/" + "world", String.class);
}

@GetMapping(value = "/hello/{name}")
public String echo(@PathVariable String name) {
return "Hello Nacos Discovery " + name;
}
}
           

啟動程式,通路http://localhost:4000/nacos(端口請根據實際調整),傳回"Hello Nacos Discovery world"表示測試通過。

參考資料

  • 官網
  • Github

繼續閱讀