SpringCloud-Alibaba-Nacos 服務注冊中心&配置中心


Spring Cloud Alibaba

由於 Spring Cloud Netflix 項目進入維護模式(將模塊置於維護模式意味着 Spring Cloud 團隊將不會再向模塊中添加新功能,只會修復 block 級別的 bug 以及安全問題),阿里巴巴團隊為我們提供了一套新的微服務開發一站式解決方案

詳見官方介紹:https://github.com/alibaba/spring-cloud-alibaba/blob/master/README-zh.md

Nacos 概述

是什么?

一個更易於構建雲原生應用的動態服務發現、配置管理和服務管理平台。

Nocas 就是注冊中心與配置中心的組合,可以替代 Eureka + Config + Bus

能干嘛?

替代 Eureka 做服務注冊中心;替代 Config 做服務配置中心

下載、安裝與運行

下載地址:https://github.com/alibaba/nacos/releases

下載解壓后,打開 bin 目錄,打開 cmd 窗口輸入 startup.cmd 或者雙擊 startup.cmd 均可啟動(Windows版)

瀏覽器地址欄輸入 localhost:8848/nacos 登錄,默認用戶名密碼都是 nacos,主頁面如下:

Nacos 作為注冊中心

引入 Maven 依賴

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

需要在配置文件 application.yml 指定 Nacos 地址

spring:
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 # nacos地址

Nacos 默認是支持負載均衡的,集成了 Ribbon

將服務注冊到 Nacos 后可以在服務列表中查看

Nacos 與其它注冊中心的對比

Nacos 與其它注冊中心特性對比

Nacos 支持 AP(高可用) 和 CP(強一致性) 模式的切換

使用命令 curl -X PUT '$NACOS_SERVER:8848/nacos/v1/ns/operator/switches?entry=serverMode&value=CP' 進行切換

Nacos 作為配置中心

基礎配置

所需 Maven 依賴

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

application.yml

spring:
  profiles:
    active: dev

bootstrap.yml

server:
  port: 3377
spring:
  application:
    name: nacos-config-client
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848
      config:
        server-addr: localhost:8848
        file-extension: yml #配置文件格式

在 Nacos 界面新建配置文件,命名規則是 ${prefix}-${spring.profile.active}.${file-extension},通俗來說就是:項目名-部署環境.文件后綴

分類配置

Nacos 采用 NameSpace + Group + Data Id 的分類方式,類似於 Java 里的包名 + 類名 + 方法名

NameSpace 用於區分部署環境,Group 和 Data Id 邏輯上區分兩個目標對象,默認 NameSpace = public;group = DEFAULT_GROUP;Cluster = DEFAULT

Data Id 方案

編寫兩個不同部署環境的配置文件,只要在 application.yml 中修改了部署環境,就可以獲取到對應配置文件的內容

Group 方案

新建配置文件的時候指定分組

通過此配置指定選擇的分組

spring:
  cloud:
    nacos:
      config:
        group: DEV_GROUP

NameSpace 方案

配置不同的分組,初始默認只有一個 public

通過此配置指定選擇的命名空間

spring:
  cloud:
    nacos:
      config:
        namespace: 2d22fcfe-2314-49c4-8a67-6b12397f44d2 #命名空間的唯一標識

Nacos 集群與持久化配置

Nacos支持三種部署模式

  • 單機模式:用於測試和單機試用
  • 集群模式:用於生產環境,確保高可用
  • 多集群模式:用於多數據中心場景

Nacos 持久化配置解釋

Nacos 默認自帶的是嵌入式數據庫 derby,對於 Nacos 集群不能實現數據共享,為了能夠保證真正持久化,我們需要切換到 Mysql 數據庫

1、到 nacos\conf 目錄下找到 nacos-mysql.sql 文件,新建一個 nacos_config 數據庫,將里面的語句在數據庫中執行

2、在 application.properties 末尾添加如下配置

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=youdontknow

3、啟動 Nacos,進入頁面可以發現之前的數據不見了,新添加的配置可以在 MySQL 數據庫中看到


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM