Nacos作爲雲平臺配置中心的若干問

研究Nacos一個多月了,對其配置中心多多少少了解了一點。
本文就對Nacos的三大功能之一:服務的配置管理作一定的探索。
花圈處


配置中心架構圖

動態更新流程介紹

在這裏插入圖片描述

配置內容,Key-Value?文件?

答:服務端存Key-Value,存MsSQL中
在這裏插入圖片描述
客戶端存本地,存儲路徑:
~/nacos/config/fixed-{address}8848nacos/snapshot/DEFAULT_GROUP/{dataId}

持久層對比,Mysql?Oracle?能否支持分庫?分庫保證CP還是AP?

答:只支持MySQL,不支持分庫。默認是一主一從。

Server端保證是CP還是AP?

看看Maintainer的回答吧

加配置的方式,是頁面配置還是Http請求?

答:控制檯+OpenAPI

  • Nacos支持 YAML、Properties、TEXT、JSON、XML、HTML 等常見配置格式
  • 在線編輯、語法高亮、格式校驗(幫助用戶高效編輯的同時大幅降低格式錯誤帶來的風險)
  • Nacos支持配置標籤的能力(幫助用戶更好更靈活的做到基於標籤的配置分類及管理)
  • 支持編輯DIFF能力,幫助用戶校驗修改內容,降低改錯帶來的風險。

取配置的方式,嵌入SDK?Http請求?;配置中心通知還是客戶端自己輪詢?

答:嵌入SDK和Http結合
客戶端維持一個長輪詢,當服務端配置信息發生變更時,客戶端將最新的數據獲取下來之後,保存在了 CacheData 中。所以只需要通過一個無狀態的 http 請求即可獲取到服務端的數據。

客戶端存配置的方式,是直接刷新Java系統配置?是Load到Bean裏?還是落本地文件?

答:Load到Bean裏。

客戶端拉取最新的數據後保存在 CacheData 中,同時更新該 CacheData 的 Md5 值,當下次執行 checkListenerMd5 方法時,若本地的Md5 值和最新配置的Md5值不一樣,就意味着Server端的配置信息發生改變,這時將最新的數據通知給監聽器的持有者。

監聽器獲取配置方式:

configService.addListener(dataId, group, new Listener() {
   @Override
   public void receiveConfigInfo(String configInfo) {
       System.out.println("receive: " + configInfo);
   }
   @Override
   public Executor getExecutor() {
       return null;
   }
});

Spring cloud中@RefreshCope 方式刷新配置:

@RestController
@RequestMapping("/config")
@RefreshScope
public class ConfigController {

    @Value("${useLocalCache:false}")
    private boolean useLocalCache;

    @RequestMapping("/get")
    public boolean get() {
        return useLocalCache;
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章