Nacos入門
- 1 安裝和運作Nacos
-
- 2 Nacos入門:服務提供者
-
- 2.1 編寫一個服務,并成功注冊到nacos中
-
- 2.1.1 打開Idea建立一個maven父項目,在pom檔案中導入以下坐标
- 2.1.2 建立服務提供者子產品,在pom檔案中導入以下坐标
- 2.1.3 然後編寫application.yml檔案
- 2.1.4 然後建立啟動類和contller方法
- 2.1.5 運作
- 3 Nacos入門:服務消費者
-
- 3.1 編寫一個服務,并成功注冊到nacos中
-
- 3.1.1 建立服務消費者子產品,并導入pom坐标
- 3.1.2 編寫yml檔案
- 3.1.3 建立啟動類,RestTemplate方法和controller方法
- 3.1.4 運作
- 4 後續還有進階版本
1 安裝和運作Nacos
1.1 安裝Nacos
- nacos是一個獨立的軟體,需要下載下傳與安裝,自行去官網安裝,官網位址:https://nacos.io/zh-cn/docs/quick-start.html。附帶安裝方法。
1.2 運作Nacos
- 打開nacos所安裝的檔案夾,進入bin目錄,輕按兩下startup.cmd來運作cmd
- 如果上述啟動方法報錯,那麼在bin目錄直接打開cmd輸入指令startup.cmd -m standalone
- 看到此日式資訊即為啟動成功,注意:cmd指令框不可關閉,也可以把nacos注冊成服務
- 啟動成功後去登入Nacos,登入位址:http://192.168.98.227:8848/nacos/index.html
- 賬号和密碼均為:nacos
2 Nacos入門:服務提供者
2.1 編寫一個服務,并成功注冊到nacos中
2.1.1 打開Idea建立一個maven父項目,在pom檔案中導入以下坐标
<!-- 1 确定spring boot的版本-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.5.RELEASE</version>
</parent>
<!--2 确定版本-->
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.8</java.version>
<spring-cloud-release.version>Hoxton.SR3</spring-cloud-release.version>
<nacos.version>1.1.0</nacos.version>
<alibaba.cloud.version>2.2.1.RELEASE</alibaba.cloud.version>
</properties>
<!-- 3 鎖定版本-->
<dependencyManagement>
<dependencies>
<!-- sprig cloud-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud-release.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--nacos -->
<dependency>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-client</artifactId>
<version>${nacos.version}</version>
</dependency>
<!--nacos cloud 發現 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>${alibaba.cloud.version}</version>
</dependency>
<!--nacos cloud 配置 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>${alibaba.cloud.version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.alibaba.cloud/spring-cloud-starter-alibaba-sentinel -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
<version>${alibaba.cloud.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
2.1.2 建立服務提供者子產品,在pom檔案中導入以下坐标
<dependencies>
<!-- web 啟動類 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- nacos 用戶端 -->
<dependency>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-client</artifactId>
</dependency>
<!-- nacos 服務發現 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
</dependencies>
2.1.3 然後編寫application.yml檔案
server:
port: 8070
spring:
application:
name: service-provider #服務名
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848 #nacos服務位址
2.1.4 然後建立啟動類和contller方法
- 服務提供者啟動類
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
/**
* @Author: Kj
* @Date: 2021/4/19 17:14
*/
@SpringBootApplication
@EnableDiscoveryClient
public class TestNacosProViderApplication {
public static void main(String[] args) {
SpringApplication.run(TestNacosProViderApplication.class,args);
}
}
- 服務提供者controller方法
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
/**
* @Author: Kj
* @Date: 2021/4/19 17:16
*/
@RestController
public class EchoController {
@Resource
private HttpServletRequest request;
@GetMapping("/echo/{str}")
public String echo(@PathVariable("str") String str){
int serverPort = request.getServerPort();
return "hello : " + str + " , " + serverPort;
}
}
2.1.5 運作
- 運作啟動類,運作成功後登入nacos檢視注冊的服務
- 然後在浏覽器輸入位址:http://localhost:8070/echo/123檢視效果
3 Nacos入門:服務消費者
3.1 編寫一個服務,并成功注冊到nacos中
3.1.1 建立服務消費者子產品,并導入pom坐标
<dependencies>
<!-- web 啟動類 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- nacos 用戶端 -->
<dependency>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-client</artifactId>
</dependency>
<!-- nacos 服務發現 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- openfeign 遠端調用 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
</dependencies>
3.1.2 編寫yml檔案
#端口号
server:
port: 8071
spring:
application:
name: service-consumer #服務名
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848 #nacos服務位址
3.1.3 建立啟動類,RestTemplate方法和controller方法
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
/**
* @Author: Kj
* @Date: 2021/4/19 17:16
*/
@SpringBootApplication
@EnableDiscoveryClient //服務發現
public class TestNacosConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(TestNacosConsumerApplication.class, args);
}
}
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;
/**
* @Author: Kj
* @Date: 2021/4/19 17:16
*/
@Configuration
public class RestTemplateConfig {
@Bean
@LoadBalanced // 支援負載均衡
public RestTemplate restTemplate() {
return new RestTemplate();
}
}
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
import javax.annotation.Resource;
/**
* @Author: Kj
* @Date: 2021/4/19 17:16
*/
@RestController
@RequestMapping("/rest")
public class TestRestController {
@Resource
private RestTemplate restTemplate;
@GetMapping("/echo/{str}")
public String echo(@PathVariable("str") String str) {
// 方案1:通路完整路徑
//return restTemplate.getForObject("http://localhost:8070/echo/" + str, String.class);
// 方案2:通過服務名通路
return restTemplate.getForObject("http://service-provider/echo/" + str, String.class);
}
}
3.1.4 運作
- 運作啟動類,登入nacos檢視服務
- 然後在浏覽器輸入位址:http://localhost:8071/rest/echo/123檢視效果
4 後續還有進階版本