Spring Cloud Alibaba(五) Nacos Config 分佈式配置中心

爲什麼Nacos Config?

在分佈式系統中,由於服務特別的多,那是不是我的配置文件也特別的多,我總不可能要改配置就一個個改把,打個比方我需要修改數據庫的地址賬號密碼等,我一個個提供方去改,這未免效率也太低了把(〃>皿<)

所以這個時候我們就需要Nacos Config

Nacos Config 介紹

Nacos 提供用於存儲配置和其他元數據的 key/value 存儲,爲分佈式系統中的外部化配置提供服務器端和客戶端支持。使用 Spring Cloud Alibaba Nacos Config,您可以在 Nacos Server 集中管理你 Spring Cloud 應用的外部屬性配置。

如果有學習過Eureka 的Config應該就知道了.

就是Spring Cloud Config Server 和 Client 的代替方案,也就是Nacos 的 Config …

Nacos Config 的缺點: 沒有提供配置的管理,還是我們需要自己去管理.

Nacos Config 的優點:
方便呀! 直接給你集成進了Nacos還不爽?嘻嘻. 其實在 Config Server的優點都有.

使用過程

POM

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
    <version>${latest.version}</version>
</dependency>

Nacos註冊中心

進入Nacos中心 新建配置

在這裏插入圖片描述

在這裏插入圖片描述
在這裏插入圖片描述

創建名爲 bootstrap.yml 的配置文件並刪除之前創建的 application.yml 配置文件

知道config server的都知道,不刪除還是會走自己這裏的application.yml

注意:** Spring Boot 配置文件的加載順序,依次爲 bootstrap.properties -> bootstrap.yml -> application.properties -> application.yml ,其中 bootstrap.properties 配置爲最高優先級

# 注意了 :  配置順序不要放反了,不然會出問題

spring:
  application:
    #nacos配置文件的名字
    name: service-consumer-config

  cloud:
    nacos:
      config:
        #nacos的端口
        server-addr: localhost:8848
        #指明是什麼格式,不加默認是propertes
        file-extension: yaml
        

搞定收工

在這裏插入圖片描述

附:擴展閱讀

Endpoint 信息查看

Spring Boot 應用支持通過 Endpoint 來暴露相關信息,Nacos Config Starter 也支持這一點。在使用之前需要在 maven 中添加 spring-boot-starter-actuator 依賴,並在配置中允許 Endpoints 的訪問。

{
    "subscribe": [
        {
            "jsonFromServer": "",
            "name": "service-consumer",
            "groupName": "DEFAULT_GROUP",
            "clusters": null,
            "cacheMillis": 1000,
            "hosts": [],
            "lastRefTime": 0,
            "checksum": "",
            "allIPs": false,
            "key": "service-consumer",
            "valid": true,
            "keyEncoded": "service-consumer"
        },
        {
            "jsonFromServer": "",
            "name": "service-provider",
            "groupName": "DEFAULT_GROUP",
            "clusters": null,
            "cacheMillis": 1000,
            "hosts": [],
            "lastRefTime": 0,
            "checksum": "",
            "allIPs": false,
            "key": "service-provider",
            "valid": true,
            "keyEncoded": "service-provider"
        }
    ],
    "NacosDiscoveryProperties": {
        "serverAddr": "192.168.141.132:8848",
        "endpoint": "",
        "namespace": "",
        "watchDelay": 30000,
        "logName": "",
        "service": "service-consumer",
        "weight": 1,
        "clusterName": "DEFAULT",
        "namingLoadCacheAtStart": "false",
        "metadata": {
            "preserved.register.source": "SPRING_CLOUD"
        },
        "registerEnabled": true,
        "ip": "192.168.141.1",
        "networkInterface": "",
        "port": 8080,
        "secure": false,
        "accessKey": "",
        "secretKey": ""
    }
}
{
    "NacosConfigProperties": {
        "serverAddr": "192.168.141.132:8848",
        "encode": null,
        "group": "DEFAULT_GROUP",
        "prefix": null,
        "fileExtension": "yaml",
        "timeout": 3000,
        "endpoint": null,
        "namespace": null,
        "accessKey": null,
        "secretKey": null,
        "contextPath": null,
        "clusterName": null,
        "name": null,
        "sharedDataids": null,
        "refreshableDataids": null,
        "extConfig": null
    },
    "RefreshHistory": [
        {
            "timestamp": "2019-06-30 18:30:45",
            "dataId": "service-consumer-config.yaml",
            "md5": "690fd78b5ae9fac5b545c1a8d7ec4e2b"
        },
        {
            "timestamp": "2019-06-30 18:22:08",
            "dataId": "service-consumer-config.yaml",
            "md5": "40b12ffc9d305ec1cad65d606e8f4708"
        }
    ],
    "Sources": [
        {
            "lastSynced": "2019-06-30 18:22:05",
            "dataId": "service-consumer-config.yaml"
        }
    ]
}

注意: Sources 表示此客戶端從哪些 Nacos Config 配置項中獲取了信息,RefreshHistory 表示動態刷新的歷史記錄,最多保存20條,NacosConfigProperties 則爲 Nacos Config Starter 本身的配置

更多配置

配置項 key 默認值 說明
服務端地址 spring.cloud.nacos.config.server-addr
DataId前綴 spring.cloud.nacos.config.prefix spring.application.name
Group spring.cloud.nacos.config.group DEFAULT_GROUP
dataID後綴及內容文件格式 spring.cloud.nacos.config.file-extension properties dataId的後綴,同時也是配置內容的文件格式,目前只支持 properties
配置內容的編碼方式 spring.cloud.nacos.config.encode UTF-8 配置的編碼
獲取配置的超時時間 spring.cloud.nacos.config.timeout 3000 單位爲 ms
配置的命名空間 spring.cloud.nacos.config.namespace 常用場景之一是不同環境的配置的區分隔離,例如開發測試環境和生產環境的資源隔離等。
AccessKey spring.cloud.nacos.config.access-key
SecretKey spring.cloud.nacos.config.secret-key
相對路徑 spring.cloud.nacos.config.context-path 服務端 API 的相對路徑
接入點 spring.cloud.nacos.config.endpoint UTF-8 地域的某個服務的入口域名,通過此域名可以動態地拿到服務端地址
是否開啓監聽和自動刷新 spring.cloud.nacos.config.refresh.enabled true

更多介紹

Nacos爲用戶提供包括動態服務發現,配置管理,服務管理等服務基礎設施,幫助用戶更靈活,更輕鬆地構建,交付和管理他們的微服務平臺,基於 Nacos, 用戶可以更快速的構建以“服務”爲中心的現代雲原生應用。Nacos 可以和 Spring CloudKubernetes/CNCFDubbo 等微服務生態無縫融合,爲用戶提供更卓越的體驗

配置文件動態刷新

例如:

這裏我們使用 @Value 註解來將對應的配置注入到 某個類某個變量字段,並添加 @RefreshScope 打開動態刷新功能

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章