SpringCloud Alibaba之Nacos
一、運行Nacos
Nacos GitHub開源地址:
//github.com/alibaba/nacos
Nacos 官方文檔:
//nacos.io/zh-cn/docs/quick-start.html
按照如下命令即可:
//克隆 git clone https://github.com/alibaba/nacos.git //進入對應目錄 cd nacos/ //打包 mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U //查看對應目錄 ls -al distribution/target/ // 進入打包成功生成的目錄結構(我本地nacos是1.3.1,所以對應的$version就是1.3.1) cd distribution/target/nacos-server-$version/nacos/bin //運行(以我本地windows為例,如果是Linux的話,執行startup.sh腳本即可) startup.cmd
二、修改配置文件將Nacos的分散式配置存儲改為MySQL
進入對應的目錄:
cd D:\GitHub-Project\project\nacos\distribution\conf
修改application.properties文件,增加如下內容(對應的sql腳本在同一目錄下,名字叫nacos-mysql.sql):
spring.datasource.platform=mysql db.num=1 db.url.0=jdbc:mysql://127.0.0.1:3389/nacos-config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true db.user=root db.password=1234
三、重新執行運行步驟中的打包操作(一定要打包成功,如果是遇到之前成功,這次失敗,可能是配置文件寫錯的緣故)
mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U
四、運行成功的效果圖(默認用戶名和密碼均為nacos/nacos)
五、Nacos和Eureka對比
1.配置中心對比
- Nacos支援且用起來簡單,符合SpringBoot命名風格,支援動態刷新。
- Eureka不支援(需要集成額外的SpringCloud Config組件)
2.註冊中心對比
(1)eureka
- 應用內/外:直接集成到應用中,依賴於應用自身完成服務的註冊和發現
- ACP原則:遵循AP(可用性+分離容忍)原則,有較強的可用性,服務註冊快,但犧牲了一定的一致性
- 版本迭代:目前已經不再進行升級
- 集成支援:只支援SpringCloud集成
- 訪問協議:HTTP
- 雪崩保護:支援雪崩保護
- 介面:英文介面,不符合國人習慣
- 上手:容易
(2)nacos
- 應用內/外:屬於外部應用,侵入性小
- ACP原則:通知遵循CP原則(一致性+分離容忍)和AP原則(可用性+分離容忍)
- 版本迭代:目前仍然進行版本迭代
- 集成支援:支援Dubbo、SpringCloud、K8S集成
- 訪問協議:HTTP/動態DNS/UDP
- 雪崩保護:支援雪崩保護
- 介面:中文介面,符合國人習慣(可根據自己需求,中英文任意切換)
- 上手:極易,中文文檔,案例,社區活躍
關於我為什麼選擇Nacos而不選擇Eureka,一方面我們的微服務框架是基於SpringCloud Alibaba的,如果直接切換,整個微服務框架根基都會有很大的動搖;另外一方面,Nacos目前已集成的正是我們所需要的如分散式配置、集群、服務註冊和發現等;最後一方面,Nacos目前比Eureka版本迭代確實要活躍的多。
本文參考資料:
Nacos官方文檔
nacos簡介以及作為註冊/配置中心與Eureka、apollo的選型比較