1. 程式人生 > 實用技巧 >Nacos作為微服務註冊中心和配置中心詳解

Nacos作為微服務註冊中心和配置中心詳解

對於一個微服務體系,註冊中心是至關重要的,他承擔了對於服務之間的動態發現和註冊面可以使得服務之間進行解耦。

前言

  • zookeeper: 剛開始解除分散式呼叫的時候因為使用的Dubbo+Zookeeper這種模式所以熟知的第一個註冊中心則是Zookeeper.

  • Eureka: 在springcloud大火的時候官方強勢推出了一波eureka該註冊中心,但是很快該專案在netflix中閉源了,伴隨著這個訊息的產生,很多社群和個人都提出了很多替代的方法,比較成熟的就是之前的Zookepper、console等

  • nacos: 隨著阿里加入到springcloud這個開源的專案之後,提供除了很多很好的外掛,比如:Nacos,Senetl等並且提供了springcloud-alibaba等元件包

比較

nacos的出現整合了之前在微服務領域中,註冊中心和配置中心相對獨立的問題,完美的將註冊中心和配置中心融合到了一起,現在列舉下本人知道的關於配置中心的中介軟體:

  • SpringCloud Config:伴隨著springcloud一起進入大家的視野中,作為一個配置中心的元件,它可以將配置資料存在放git上,當git倉庫中的資料發生變化便可以通過訊息匯流排等方式通知到工程中,作為一個含著金鑰匙出生的寵兒,雖然出生決定了他的高貴,但是用起來並不是那麼的盡如人意,因為有很多比他出生更好,但是比它更努力的。
  • apllo:同樣出生不凡的一個元件,來自攜程內部的一個元件開源而來,基於mysql資料庫進行配置的儲存,上面講到的spring cloud config雖然也支援資料庫配置但是缺少了介面的視覺化介面,apllo的開源使得許多需要用到配置中心的企業受益。具體的特點可以檢視github上的連結
  • nacos:隨阿里的開源進入大家的視野中,不但擁有華麗的出生,更是有著自己過硬的實力
  1. 完善的中文文件
  2. 活躍的社群
  3. 相容註冊中心和配置中心為一體
  4. 完善的介面,可以通過介面清晰的看到服務的狀況和叢集的狀態
  5. 支援多種儲存方式,生成環境建議使用的Mysql

因為作為一款可以相容上面兩種元件的功能,必然受到大家的歡迎,本人也在幾個月前剛剛開始接觸到nacos的,通過學習相關的內容,發現該中介軟體很符合阿里一向的風格,他的開放性和整合性很好,提供了各個版本語言的sdk,可以通過sdk的引入自己實現一些自定義的業務功能,接下來就本人的個人經驗介紹下,生產環境下的叢集的搭建。

環境的準備

一.nacos的下載

因為nacos是基於java語言開發出來的一箇中間件,所以預設是有java執行環境的,接下來需要mysql資料庫,因為線上環境需要重啟之後之前的資料項和配置不會丟失,因為需要mysql的環境

nacos的tar包下載地址
nacos的zip包下載地址

二.nacos的配置

對下載的包進行解壓,然後進入到conf目錄下,該目錄下有兩個配置檔案比較重要,分別進行如下修改:

  1. 找到nacos-mysql.sql檔案,將改檔案的指令碼執行到你的目標資料庫中

  2. 修改配置檔案

  • application.properties主要配置註冊中心的埠和儲存方式為mysql資料庫等
#*************** Spring Boot Related Configurations ***************#
### Default web context path:
server.servlet.contextPath=/nacos
### Default web server port:
server.port=8888
#*************** Network Related Configurations ***************#
### If prefer hostname over ip for Nacos server addresses in cluster.conf:
# nacos.inetutils.prefer-hostname-over-ip=false
### Specify local server's IP:
# nacos.inetutils.ip-address=
#*************** Config Module Related Configurations ***************#
### If user MySQL as datasource:
spring.datasource.platform=mysql
### Count of DB:
db.num=1
db.url.0=jdbc:mysql://***.***.***.***:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user=root
db.password=****
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  1. 叢集的配置

拷貝cluster.conf.example 生成一個cluster.conf檔案並且寫上需要配置叢集的幾個機器和埠號,配置如下:

ip1:8888
ip2:8888
ip3:8888
分別對應三臺叢集的伺服器

  1. 然後將該包傳送到對應的其他兩臺機器上

scp *** ip1:/***
scp *** ip2:/***


到此,基本上的配置就已經全部完成了。

三.nacos的應用

  • 啟用該服務,分別在三臺伺服器上執行啟動nacos叢集
startup.sh 
  • 1
  • 如果需要啟動單例項模式,我們可以看下啟動指令碼
if [[ "${MODE}" == "standalone" ]]; then
    echo "nacos is starting with standalone"
else
    echo "nacos is starting with cluster"
fi

# check the start.out log output file
if [ ! -f "${BASE_DIR}/logs/start.out" ]; then
  touch "${BASE_DIR}/logs/start.out"
fi
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 可以看到,需要加上引數,便可以啟動該服務
startup.sh -d standalone
  • 1

四.服務的註冊和配置中心的啟用

  • 介面訪問:http://ip:8888/nacos
  • 預設的賬號和密碼為: nacos nacos
    如圖所示可以看到叢集環境已經搭建好了,後續將介紹使用配置中心和註冊中心。

更多的關於nacos的學習的方法見:nacos官方地址

更多的關於nacos的使用接下來會介紹

    • nacos作為註冊中心的使用和服務的監控和下線等
    • nacos作為配置中心動態的重新整理配置和配置中心的監聽等