1.nacos基本架構及概念
服務 (Service)
服務是指一個或一組軟體功能(例如特定資訊的檢索或一組操作的執行),其目的是不同的用戶端可以為不同的目的重用(例如通過跨程序的網絡調用)。Nacos 支援主流的服務生态,如 Kubernetes Service、gRPC|Dubbo RPC Service 或者 Spring Cloud RESTful Service。
服務注冊中心 (Service Registry)
服務注冊中心,它是服務,其執行個體及中繼資料的資料庫。服務執行個體在啟動時注冊到服務系統資料庫,并在關閉時登出。服務和路由器的用戶端查詢服務系統資料庫以查找服務的可用執行個體。服務注冊中心可能會調用服務執行個體的健康檢查 API 來驗證它是否能夠處理請求。
服務提供方 (Service Provider)
是指提供可複用和可調用服務的應用方。
服務消費方 (Service Consumer)
是指會發起對某個服務調用的應用方。
配置 (Configuration)
在系統開發過程中通常會将一些需要變更的參數、變量等從代碼中分離出來獨立管理,以獨立的配置檔案的形式存在。目的是讓靜态的系統工件或者傳遞物(如 WAR,JAR 包等)更好地和實際的實體運作環境進行适配。配置管理一般包含在系統部署的過程中,由系統管理者或者運維人員完成這個步驟。配置變更是調整系統運作時的行為的有效手段之一。
配置管理 (Configuration Management)
在資料中心中,系統中所有配置的編輯、存儲、分發、變更管理、曆史版本管理、變更審計等所有與配置相關的活動統稱為配置管理。
名字服務 (Naming Service)
提供分布式系統中所有對象(Object)、實體(Entity)的“名字”到關聯的中繼資料之間的映射管理服務,例如 ServiceName -> Endpoints Info, Distributed Lock Name -> Lock Owner/Status Info, DNS Domain Name -> IP List, 服務發現和 DNS 就是名字服務的2大場景。
2.單機版nacos安裝教程
(1)Nacos下載下傳位址:https://github.com/alibaba/nacos/releases
(2)下載下傳完畢後,進行解壓後,我們可以看看目錄結構:
這裡的bin目錄裡面有windows啟動檔案startup.cmd,我們輕按兩下就能啟動了,和大多數windows程序類似。
(3)注意:啟動的是單機版的nacos,修改startup.cmd相關腳本
(4)啟動後會有一個cmd視窗去列印指令并啟動。
(5)通路位址:http://localhost:8848/nacos/index.html
使用者名密碼:nacos/nacos
3.服務提供者
第一步:建立一個nacos-test項目,包含兩個子產品nacos-provider和nacos-consumer,在父項目pom.xml檔案統一管理springboot、spring cloud和spring cloud alibaba版本。
第二步:先來處理nacos-provider子產品項目,在nacos-provider子產品項目的pom.xml配置alibaba-nacos-discovery依賴。
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.0</version>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!--nacos注冊中心-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
</dependencies>
第三步:編寫入口類NacosProvider ,并添加一個EchoController 提供HTTP接口服務。
@SpringBootApplication
@EnableDiscoveryClient
public class NacosProvider {
public static void main(String[] args) {
SpringApplication.run(NacosProvider.class,args);
}
@RestController
class EchoController {
@GetMapping("/echo/{string}")
public String echo(@PathVariable String string) {
return "Hello Nacos Discovery " + string;
}
}
}
第四步:在bootstrap.yml檔案配置nacos配置中心相關參數。
spring:
application:
name: nacos-provider
cloud:
nacos:
discovery:
server-addr: 192.168.0.127:8848 #注冊中心位址
server:
port: 17357
第五步:運作nacos-provider,可以從啟動日志看到注冊到了nacos,打開nacos管理台在服務管理菜單下的服務清單項可以看到注冊的執行個體資訊。
4.服務消費者
第一步:接下來處理nacos-consumer子產品項目,在nacos-consumer子產品項目的pom.xml配置同樣加上alibaba-nacos-discovery依賴。
第二步:編寫入口類NacosConsumer ,并添加一個TestController提供HTTP接口服務,通過RestTemplate遠端調用NacosProvider。
@SpringBootApplication
@EnableDiscoveryClient
public class NacosConsumer {
@LoadBalanced
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}
public static void main(String[] args) {
SpringApplication.run(NacosConsumer.class,args);
}
@RestController
public class TestController {
private final RestTemplate restTemplate;
@Autowired
public TestController(RestTemplate restTemplate) {this.restTemplate = restTemplate;}
@GetMapping("/echo/{str}")
public String echo(@PathVariable String str) {
return restTemplate.getForObject("http://nacos-provider/echo/" + str, String.class);
}
}
}
第三步:在bootstrap.yml檔案配置nacos配置中心相關參數。
spring:
application:
name: nacos-consumer
cloud:
nacos:
discovery:
server-addr: 192.168.0.127:8848 #注冊中心位址
server:
port: 17358
第四步:測試消費者調用提供者接口服務。