天天看點

Nacos作為微服務注冊中心,愛不釋手的感覺配置檔案類型,有yaml和properties ,注意一定是yaml,不是yml

Nacos作為微服務注冊中心,愛不釋手的感覺

我覺得Nacos用起來還不錯

在使用SpringCloud做分布式微服務架構時,注冊中心是必不可少的一個元件。目前可以用的主要有:Eureka、Consul、Zookeeper。今天,我們就來說一下Alibaba的Nacos怎麼樣?

下載下傳與安裝

下載下傳位址

https://github.com/alibaba/nacos/releases

安裝:

Windows 下載下傳解壓後(.zip),直接點選bin/start.bat就可以了。

Linux下載下傳解壓後(.tar.gz),同樣,也是運作 bin/start.sh 腳本。

打開控制台:

Nacos提供了一個可視化的操作平台,安裝好之後,在浏覽器中輸入

http://localhost:8848

就可以通路了,預設的使用者名和密碼都是nacos(我使用的1.2.0版本。預設将密碼驗證給關了,這個選項後邊會說)

Nacos簡介

Nacos是由阿裡巴巴開源的一個好東西,直接貼上它的官網,就不再這麼累贅了,畢竟是國人開發的,是有中文文檔的,上邊寫的很全面。

https://nacos.io/zh-cn/docs/quick-start.html

Nacos作為注冊中心

​ 它和Eureka不一樣,并不需要建立新的web項目,而是和Zookeeper和Consul一樣,隻需要下載下傳安裝啟動後,将我們的微服務注冊進去就可以了。

​ 建立兩個微服務,一個用戶端(調用者)和一個服務端(提供者),

引入依賴

<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>           

在它們的配置檔案中引入如下代碼:

spring:

cloud:

nacos:
  discovery:
  # Nacos的位址
    server-addr: localhost:8848           

主啟動類上添加(不管是哪種注冊中心,這個一定要有):

@EnableDiscoveryClient

當然,在用戶端還是要添加ribbon的負載均衡的,但是不用額外添加依賴,nacos已經添加了

@Configuration

public class AppConfig {

@Bean
@LoadBalanced
public RestTemplate restTemplate(){
    return new RestTemplate();
}           

}

好了,打開Nacos的控制台,然後就可以看到這兩個微服務了。

Nacos作為分布式配置中心

之前我們是使用SpringCloudConfig從github等倉庫上拉取的配置檔案,但是用了Nacos後,我們就可以從Nacos中直接配置了,是不是很友善啊。建立了一個項目,nacos-config-server-8002

pom.xml引入下邊依賴

<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>           

application.yml中加入如下配置内容

profiles:

active: dev           

添加一個bootstrap.yml

server:

port: 8002

application:

name: nacos-config-server-8002           

cloud:

nacos:
  discovery:
    server-addr: localhost:8848
  config:
    server-addr: localhost:8848           

配置檔案類型,有yaml和properties ,注意一定是yaml,不是yml

file-extension: yaml           

application.yml中的配置是什麼意思?

為什麼要引入bootstrap.yml?

​ 簡單來說,這個配置是和application.yml是一樣的,不這它要比appliation.yml先加載

Controller中的接口

@RestController

@RefreshScope //這是一個SpingCloud的原生注解,可以實作配置的動态重新整理

public class InfoController {

/*
這個中的 : 的意思就是說,如果配置檔案中沒有,就直接使用後邊的那個字元串,我寫的是nothing
在本地項目中,我們并沒有配置configInfo,
是以如果這時候調用http://localhost:8002/info
傳回就是nothing
 */
@Value("${configInfo}")
private String configInfo;

/**
 * 用做配置中心的示範
 *
 * @return
 */
@GetMapping("info")
public String getConfig() {
    return configInfo;
}           

Nacos中的幾個空間概念:

NameSpaces(命名空間)

相當于我們一個項目中的包名,Nacos中可以建立多個命名空間。微服務注冊的時候,可以通過配置spring.cloud.nacos.discovery.namespace,當然,配置檔案也可以配置namespace來指定對應的名稱空間,如果不配置就是使用預設的public 空間。

假如,你是好幾個項目共用一個Nacos叢集,就可以通過namespce來區分項目。

在Nacos的控制台的最下邊有一個命名空間,你可以建立一個試,建完再次點選服務清單和配置清單上邊會出現你的指令空間選擇(如下圖,我建立了一個space1的空間,public是預設的)

Group(分組)

相當于Java中的類名,同樣,一個包下可以有多個類。不過這個隻是相對于配置檔案來說,對于服務注冊沒有這麼一說。它有一個預設的分組就是DEFAULT_GROUP,在建立配置檔案時就會有(如下圖)

DataID

這個就相當于類中的方法,同樣,一個類中就會有多個方法名。

​ 我們的配置檔案就是在上圖中去添加的,下邊是我截取了Nacos官方文檔中對于DataID的說明:

建立一個配置檔案試試

​ 在配置清單中建立一個配置檔案,如果你有多個命名空間,注意選擇你的項目中連接配接的那個

隻要點了右下角的釋出,就會自動配置了,再次通路

http://localhost:8002/info

,就會看到已經更改了,這個是實時更改的。

這些都是很簡單的操作,隻要你自己做一次,就一定會使用了

Nacos的配置檔案持久化

Nacos使用的是嵌入式資料庫Derby,有關嵌入式資料庫,可以參考在Spring中使用嵌入式資料庫-H2,雖然資料庫不同,但是原理操作方法一緻。但是,我們想換成我們的mysql用來存儲nacos的資料,可否?

導入資料到你本地的Mysql庫

在Nacos安裝包下的conf目錄下有個nacos-mysql.sql檔案,放到你的Mysql工具中執行一遍(它這個sql語句中建庫,先建個庫名叫nacos_config)

修改conf下的application.properties檔案

98行左右,這個設定為true就是開啟nacos啟動的登入驗證,預設使用者名和密碼就是nacos

nacos.core.auth.enabled=true

在最後添加如下:

spring.datasource.platform=mysql

db.num=1

db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true

db.user=root

db.password=123

​ 以上這些内容全都來自于Nacos官網

這樣,再次啟動後Nacos後,你之前的配置檔案就全都不見了,因為你配置了Mysql庫。這樣,你每次修改後,就會進Mysql庫,這個庫很簡單的,你大概看一下就能明白了。

原文位址

https://www.cnblogs.com/Lyn4ever/p/12563434.html