SpringCloud Alibaba實戰(6:nacos-server服務搭建)

三分惡發表於2021-06-21

原始碼地址:https://gitee.com/fighter3/eshop-project.git

持續更新中……

大家好,我是三分惡。

這一節我們來學習SpringCloud Alibaba體系中一個非常重要的元件——Nacos。

1、Nacos簡介

Nacos官方網站:https://nacos.io/zh-cn/

1.1、什麼是Nacos

Nacos是阿里巴巴開源的一個動態服務發現、配置管理和服務管理平臺。

Nacos英文全稱Dynamic Naming and Configuration Service,Na為naming/nameServer即註冊中心,co為configuration即註冊中心,service是指該註冊/配置中心都是以服務為核心。

Nacos 生態圖

Nacos 無縫支援一些主流的開源生態,使用Nacos,可以簡化服務發現、配置管理、服務治理及管理。

如果要把Nacas和SpringCloud Netflix的元件對標的話,那麼:

Nacos = Eureka/Consule + Config + Admin

1.2、Nacos基本原理

Nacos作為註冊中心分為server與client。

Naocs Client與Server

Server採用Java編寫,為client提供註冊發現服務與配置服務。而client可以用多語言實現,client與微服務巢狀在一起,nacos提供sdk和openApi,如果沒有sdk也可以根據openApi手動寫服務註冊與發現和配置拉取的邏輯。

1.2.1、註冊中心原理

註冊中心原理

服務註冊方法:服務註冊的策略的是每5秒向nacos server傳送一次心跳,心跳帶上了服務名,服務ip,服務埠等資訊。同時 nacos server也會向client 主動發起健康檢查,支援tcp/http檢查。如果15秒內無心跳且健康檢查失敗則認為例項不健康,如果30秒內健康檢查失敗則剔除例項。

1.2.2、配置中心原理

配置中心原理

2、Nacos-Server服務部署

Nacos 依賴 Java 環境來執行。如果是從程式碼開始構建並執行Nacos,還需要配置 Maven環境。我們直接使用發行版,需要保證JDK版本在1.8以上。

Nacos Server 有兩種執行模式:

  • standalone
  • cluster

2.1、standalone 模式

我們使用win10來進行Nacos Server的standalone 模式的部署。

  1. 下載nacos-server

從https://github.com/alibaba/nacos/releases 下載nacos-server發行版。

官方推薦的版本是1.4.2或2.0.1。

官方推薦

按照官方推薦,我們來嘗(踩)鮮(坑)最新的發行版2.0.1,下載壓縮包,下載完成後解壓

Nacos下載解壓

  1. 啟動nacos-server服務

進入%path%\nacos\bin資料夾,執行cmd命令startup.cmd -m standalone,其中-m standalone指定為單機模式,否則以cluster叢集模式啟動。

nacos-server啟動

可以看到Nacos Server的地址,訪問 http://192.168.31.39:8848/nacos/index.html

需要登入,初始賬號/密碼是 nacos/nacos

Nacos登入

登入之後可以看到Nacos的控制檯。

Nacos控制檯

Linux下部署Nacos-Server服務也是類似,同樣是先解壓發行壓縮包,然後執行啟動指令碼啟動:

startup.sh -m standalone

這種預設情況下,我們的資料寫入了了嵌入式資料庫。不太方便觀察資料儲存的情況,nacos也提供了支援mysql資料來源的能力。

注意:以下操作我在2.0.1版本失敗了,所以以下操作是基於1.4.2版本。

MySQL資料庫版本要求5.5以上。

  1. 建立資料庫庫,使用初始化檔案nacos-mysql.sql初始化

初始化資料庫

  1. 修改conf/application.properties檔案,增加支援mysql資料來源配置(目前只支援mysql),修改mysql資料來源的url、使用者名稱和密碼。
spring.datasource.platform=mysql

### Count of DB:
db.num=1

### Connect URL of DB:
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=root
db.password.0=root

### Connection pool configuration: hikariCP
db.pool.config.connectionTimeout=30000
db.pool.config.validationTimeout=10000
db.pool.config.maximumPoolSize=20
db.pool.config.minimumIdle=2
  1. 使用命令startup.cmd -m standalone啟動Nacos Server

使用MySQL儲存Nacos資料示例

2.2、cluster 模式

開發和測試,我們直接用standalone 模式,OK,沒什麼問題。但是生產環境,為了保證Nacos的高可用,我們就得使用 cluster模式。

cluster 模式必須要用 MySQL,MySQL資料匯入和上面一致,然後改兩個配置檔案:

conf/cluster.conf
conf/application.properties

大致如下:

  1. cluster.conf,填入要執行 Nacos Server 機器的 ip
192.168.100.155
192.168.100.156
192.168.100.157    
  1. 修改NACOS_PATH/conf/application.properties,加入 MySQL 配置
db.num=1
db.url.0=jdbc:mysql://localhost:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=root

Nacos採用的一個Leader節點,多個Follower節點的叢集架構,資料一致性演算法採用的是Raft。

nacos叢集示意圖

至於實戰,由於機器資源資源原因,這裡就不再演示。

窮

下一節,我們會把服務註冊到Nacos註冊中心,敬請期待!


"簡單的事情重複做,重複的事情認真做,認真的事情有創造性地做!"——

我是三分惡,可以叫我老三/三分/三哥/三子,一個能文能武的全棧開發,我們們下期見!



參考:

【1】:Nacos 文件

【2】:什麼是Nacos?Nacos註冊配置中心介紹

【3】:Spring Cloud實戰 | 第一篇:Windows搭建Nacos服務

【4】:nacos 實戰(史上最全)

【5】:Nacos部署環境

相關文章