日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

.NET轻量级配置中心AgileConfig

發布時間:2023/12/4 asp.net 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 .NET轻量级配置中心AgileConfig 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

描述

基于NetCore開發的輕量級配置中心,部署簡單、配置簡單,使用簡單,可以根據個人或者公司需求采用。

  • 部署簡答,最少只需要一個數據節點,支持docker部署

  • 支持多節點分布式部署來保證高可用

  • 配置支持按照應用隔離,應用內配置支持分組隔離

  • 使用長鏈接技術,配置信息實時推送到客戶端

  • 支持IConfiguration、IOptions模式讀取配置,原程序幾乎不用改造

  • 配置修改支持版本記錄,隨時回滾配置

  • 所有所有節點都故障,客戶端支持從本地緩存讀取配置

GitHub地址:https://github.com/kklldog/AgileConfig ?可以給這個大佬點個star

如果使用apollo進行部署做配置中心,對于部分公司來講,過于笨重,所以我個人還是挺推薦這個的,再次感謝kklldog大佬的開源項目。

部署

通過docker部署,目前支持sqlserver,mysql,sqlite, PostgreSql,Oracle 五種數據庫。本次示例使用輕量級的sqlite作為數據存儲

docker?run?-d?--name?agile_config?-e?adminConsole=true?-e?db:provider=sqlite?-e?db:conn="Data?Source=agile_config.db"?-p?8011:5000?kklldog/agile_config:latest?
  • adminConsole 配置程序是否為管理控制臺。如果為true則啟用控制臺功能,訪問該實例會出現管理界面。

  • db:provider 配置程序的數據庫類型。目前程序支持:sqlite,mysql,sqlserver 三種數據庫。

  • db:conn 配置數據庫連接串

  • 進入系統

    通過瀏覽器訪問我們地址:http://localhost:8011/

    image.png

    界面還是簡約美觀的,第一次登錄需要初始化管理員密碼,然后登錄進入系統

    image.png

    通過主界面我們看到了下面這個幾個菜單

    節點:AgileConfig支持多節點部署,所有的節點都是平行的。為了簡化部署,AgileConfig并沒有單獨的控制臺程序,請直接使用任意一個節點作為控制臺。

    image.png

    應用:AgileConfig支持多應用程序接入。需要為每個應用程序配置名稱、ID、秘鑰等信息。每個應用可以設置是否可以被繼承,可以被繼承的應用類似apollo的公共 namespace 的概念。公共的配置可以提取到可繼承應用中,其它應用只要繼承它就可以獲得所有配置。如果子應用跟被繼承應用之間的配置鍵發生重復,子應用的配置會覆蓋被繼承的應用的配置。子應用可以繼承多個應用,如果多個應用之間發生重復鍵,按照繼承的順序,后繼承的應用的配置覆蓋前面的應用。

    image.png

    創建好應用后我們可以點擊列表的配置該應用的配置項。

    image.png

    新添加的配置并不會被客戶端感知到,需要手工點擊“上線”才會推送給客戶端。

    image.png

    已上線的配置如果發生修改、刪除、回滾操作,會實時推送給客戶端。版本歷史記錄了配置的歷史信息,可以回滾至任意版本。

    image.png

    客戶端:可以查看已經連接的客戶端

    日志:記錄一些關鍵信息的日志

    創建客戶端

    通過VS2019創建一個.Net5的WebAPI應用程序,安裝組件

    ??<ItemGroup><PackageReference?Include="AgileConfig.Client"?Version="1.1.8.5"?/></ItemGroup>

    連接我們的配置中心,在program中進行配置

    ????public?class?Program{public?static?IConfigClient?ConfigClient;public?static?void?Main(string[]?args){CreateHostBuilder(args).Build().Run();}public?static?IHostBuilder?CreateHostBuilder(string[]?args)?=>Host.CreateDefaultBuilder(args).ConfigureAppConfiguration((context,?config)?=>{//讀取本地配置var?localconfig?=?new?ConfigurationBuilder().SetBasePath(Directory.GetCurrentDirectory()).AddJsonFile("appsettings.json").Build();//從本地配置里讀取AgileConfig的相關信息var?appId?=?localconfig["AgileConfig:appId"];var?secret?=?localconfig["AgileConfig:secret"];var?nodes?=?localconfig["AgileConfig:nodes"];//new一個client實例var?configClient?=?new?ConfigClient(appId,?secret,?nodes);//使用AddAgileConfig配置一個新的IConfigurationSourceconfig.AddAgileConfig(configClient);//找一個變量掛載client實例,以便其他地方可以直接使用實例訪問配置ConfigClient?=?configClient;//注冊配置項修改事件configClient.ConfigChanged?+=?ConfigClient_ConfigChanged;}).ConfigureWebHostDefaults(webBuilder?=>{webBuilder.UseStartup<Startup>();});///?<summary>///?此事件會在配置項目發生新增、修改、刪除的時候觸發///?</summary>private?static?void?ConfigClient_ConfigChanged(ConfigChangedArg?obj){Console.WriteLine($"action:{obj.Action}?key:{obj.Key}");switch?(obj.Action){case?ActionConst.Add:break;case?ActionConst.Update:break;case?ActionConst.Remove:break;default:break;}}}

    appsettings添加

    ??"AgileConfig":?{"appId":?"001","secret":?"454551215781234",//密鑰"nodes":?"http://localhost:8011"?//多個節點使用逗號分隔}

    讀取配置

    AgileConfig支持asp.net core 標準的IConfiguration,跟IOptions模式讀取配置。還支持直接通過AgileConfigClient實例直接讀取。本文直接注入IConfiguration來獲取剛才我們配置的數據庫連接信息。

    在startup中獲取配置

    image.png

    增加一個接口獲取配置信息

    ????private?readonly?IConfiguration?_configuration;public?HomeController(IConfiguration?configuration){_configuration?=?configuration;}[HttpGet]public?string?Get(){return?_configuration["db:ConnectionString"];}

    訪問接口輸出配置

    Server=localhost;Database=test;Port=3306;charset=utf8;uid=root;pwd=123456;

    在程序不關閉情況下修改配置,測試一下配置是否更新

    image.png

    請求接口重新獲取最近配置(不是實時更新,需要等待一小會,但是滿足我們的實際需求)

    參考資料

    開發作者的文章:https://www.cnblogs.com/kklldog/p/agile-config.html

    GitHub中文文檔:https://github.com/kklldog/AgileConfig/blob/master/README_CN.md

    總結

    以上是生活随笔為你收集整理的.NET轻量级配置中心AgileConfig的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。