1.為什么使用選擇nacos
nacos在springcloud體系中作為注冊中心與配置中心使用,相當于eureka與apollo的功能,
一個老生常談的問題nacos和eureka區別,下圖是樓主在網上查找到,

但是在樓主實際應用中 還有以下有點特別稱道:
- nacos有配置功能,相對于樓主之前的eureka+apollo 這無疑大大的簡化了系統的復雜性,
- nacos使用了資料庫進行管理資料,使在處理資料時心里更舒服了,
- nacos擁有namespace和gourp的概念,可以隔離同名的服務,這樣在多人起后端服務時,可以注冊到一個nacos服務 隔離開就可以了,
2.Nacos快速開始
這個快速開始手冊是幫忙您快速在您的電腦上,下載、安裝并使用 Nacos,
1.版本選擇
您可以在Nacos的release notes及博客中找到每個版本支持的功能的介紹,當前推薦的穩定版本為1.4.2或2.0.1,
2.預備環境準備
Nacos 依賴 Java 環境來運行,如果您是從代碼開始構建并運行Nacos,還需要為此配置 Maven環境,請確保是在以下版本環境中安裝使用:
- 64 bit OS,支持 Linux/Unix/Mac/Windows,推薦選用 Linux/Unix/Mac,
- 64 bit JDK 1.8+;下載 & 配置,
- Maven 3.2.x+;下載 & 配置,
3.下載原始碼或者安裝包
你可以通過原始碼和發行包兩種方式來獲取 Nacos,
1.從 Github 上下載原始碼方式
git clone https://github.com/alibaba/nacos.git
cd nacos/
mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U
ls -al distribution/target/
// change the $version to your actual path
cd distribution/target/nacos-server-$version/nacos/bin
2.下載編譯后壓縮包方式
您可以從 最新穩定版本 下載 nacos-server-$version.zip 包,
unzip nacos-server-$version.zip 或者 tar -xvf nacos-server-$version.tar.gz
cd nacos/bin
4.啟動服務器
1.Linux/Unix/Mac
啟動命令(standalone代表著單機模式運行,非集群模式):
sh startup.sh -m standalone
如果您使用的是ubuntu系統,或者運行腳本報錯提示[[符號找不到,可嘗試如下運行:
bash startup.sh -m standalone
2.Windows
啟動命令(standalone代表著單機模式運行,非集群模式):
startup.cmd -m standalone
當idea使用原始碼單機啟動時需要以下配置


-Dnacos.standalone=true
5.單機時使用資料庫
當不添加配置時,默認是使用記憶體保存資訊,我們可以添加資料庫配置,使資料保存在資料庫內.
暫時官方只支持mysql,其他資料庫需要自己手動修改,
1.原始碼啟動
使用原始碼idea啟動需要修改以下檔案的以下位置

2.已經打包的jar包
nacos\conf\application.properties修改資料庫配置

6.啟動成功
出現以下圖案代表啟動成功,看出來模式為單機模式,路徑為Console輸出,訪問即可


對于官網集群搭建的要求,是要求大企業的,個人認為小公司如果沒有條件可以不必滿足,也可以正常啟動,但是有條件還是建議上集群,
3.springboot注冊進入nacos
1.修改pom檔案
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- SpringCloud Alibaba Nacos Config -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
在pom.xml檔案中最好選擇合理的版本,否則會報各種各樣的錯 ,
版本可以根據官方檔案選擇:https://github.com/alibaba/spring-cloud-alibaba/wiki/版本說明
同時為了保證版本相同建議再父工程中加入以下配置,意思是子工程groupid為org.springframework.cloud,com.alibaba.cloud,org.springframework.boot的都依賴父工程版本
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<!--maven不支持多繼承,使用import來依賴管理配置-->
<scope>import</scope>
</dependency>
<!-- SpringCloud Alibaba 微服務 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${spring-cloud-alibaba.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- SpringBoot 依賴配置 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
2.修改bootstrap.xml
這里一定要使用bootstrap.yml而不是application.yml,因為bootstrap.yml運行先于后者,如果使用application.yml可能會出現即使有注冊的地址,還是去連接localhost:8848的情況,
spring:
application:
name: systemp
# 資料源配置
cloud:
nacos:
discovery:
# 服務注冊地址
server-addr: 192.168.xx.x:8848
#命名空間
namespace: b80f0aa4-3af2-a6e3-c6fda24c2bc0
#分組
group: xxx
config:
# 配置中心地址
server-addr: 192.168.xx.xx:8848
# 組態檔格式
file-extension: yml
#命名空間
namespace: b80f0aa4-3af2-a6e3-c6fda24c2bc0
#分組
group: xxx
可以為服務指定namespace和group,在一個namespace和group中的服務只能獲取同namespace和group中的服務,這樣可以同時配置dev和pro環境,獲取小組內的小伙伴都可以連接一個nacos服務,而不是像eureka 一人啟動一個,
1.新建命名空間
組態檔中namespace是需要建立的,方式如圖,

組態檔中是命名空間id
2.新建分組
分組不用在nacos中新建 ,直接撰寫即可,
3.修改啟動類
在spring boot啟動類上加入@EnableDiscoveryClient注解即可,
@EnableDiscoveryClient
@SpringBootApplication
public class GetwayApplication {
public static void main(String[] args) {
//去除nacos日志
System.setProperty("nacos.logging.default.config.enabled", "false");
SpringApplication.run(GetwayApplication.class, args);
}
}
注意:如果使用了logback作為日志
System.setProperty("nacos.logging.default.config.enabled", "false");需要添加 否則會因為日志命名報錯
4.啟動
然后啟動服務,訪問ip:8848/nacos可以驗證是否注冊成功,

同時也發布到了指定的namespace和groupid,
4.配置中心
配置中心:bootstrap.yml中的配置可以通過nacos配置修改,同時大部門不需要重啟服務就可以生效,
由于引入了nacos,樓主不再使用apollo配置中心,變更原因如下
- 由于架構變更為springcloud alibaba,nacos可以承擔起eureka+apollo的功能,
- 可以降低系統的復雜性,方便運維,
- 對配置中心的需求僅有動態配置,無更細膩話的權限和灰度發布等功能要求,
1.實戰整合springboot
建議啟動類使用bootstrap.yml
1.新建nacos配置

請注意選擇合適命名空間

配置解釋如下:
- Data ID的命名格式如下:{spring.application.name}-{spring.profiles.active}.{檔案型別},也就是系統名稱+dev/pro.yaml(一般情況)見下圖,


如果沒有spring.profiles.active會省略“-”與“spring.profiles.active”
-
group:其中需要注意namespace與group需要與nacos中配置對應(這兩個概念上文有介紹),否則會獲取不到配置,
-
配置格式:這里因為使用了bootstrap.yml所以選擇上述配置,
-
配置內容:需要在nacos中更改的配置項,
2.配置成功
如果成功:

切記namespace與group一定要匹配,
同時可以監控到那臺服務使用該配置,

3.客戶端介面撰寫
@RestController
@RefreshScope
public class DemoController {
@Value("${nacostest.demo}")
private String demo;
@GetMapping("/testConfig")
public String testConfig() {
return demo;
}
}
@RefreshScope不要少寫!否則報錯!
改變配置多次呼叫介面,可以發現回傳值發生變化,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/299949.html
標籤:其他
上一篇:分布式系統的基石之ZooKeeper——基本原理+場景應用+集群搭建(最強萬字入門指南)
下一篇:軟體測驗行業前景,人才稀缺
