Nacosに基づくマイクロサービスのConfiguration Centerソリューションのデモ。
Nacosはオープンソースですが、Alibaba Cloudはまた、そのサービスについて料金を請求しており、同社はAlibaba Cloudのサービスシステムに依存しているので、設定センターとして使用する可能性はまだ非常に大きいので、それに基づいて、例が来ました。
1. 環境の作り方
環境は比較的複雑で、Dockerサービスとテスト用のデモサービス、対応するMy SQLデータベースが必要です。
- DockerはNacosサービスを提供
- WebDemo
- My SQLに必要なデータベースの指定
2. 公式サイトの構造を取得する
C#の公式サンプル·アドレスはhttps://github.com/nacos-group/nacos-sdk-csharp
公式に提供されたアドレスはこちらです。github.com/alibaba/nacos.git
SQLはnacos\distribution\conf\nacos-mysql.sqlにあります。
このプロジェクトで必要なSQLを提供します。

指定したスクリプトを挿入しますが、ライブラリが必要であればOKです。
最後に以下の表が表示されます。

3. Dockerサービスの起動
デフォルトではDocker Desktopを使用しており、コマンドを入力するだけです。
このようなDockerを使用している場合は、以前のDocker関連の記事を参照してください。
docker run --name nacos -d -p 8848:8848 ^
-e MODE=standalone ^
-e MYSQL_SERVICE_HOST=192.168.1.8 ^
-e MYSQL_SERVICE_DB_NAME=nacos_config ^
-e MYSQL_SERVICE_PORT=3306 ^
-e MYSQL_SERVICE_USER=root ^
-e MYSQL_SERVICE_PASSWORD=123456 ^
nacos/nacos-server
サービスがOKかどうかの判断方法
エクスプローラはhttp//8848/nacos/#/loginアドレスにアクセスできます

そうすれば、プラットフォームにログインして何が起こるかを見ることができます
初期のユーザー名とパスワードは nacos です。
4. 適切な構成情報を増やす

- まず、追加したいメニューです。
- 次に、対応する名前空間です。
- 第三に、必要な具体的な設定です。
テストの名前空間を追加しました。

それぞれに以下の2つの構成を追加します。


5. Web APiプロジェクトの作成
新しいデフォルトのwebAPIプロジェクトを作成し、以下のnugetパッケージを導入します。
nacos-sdk-csharp.AspNetCore
デフォルトのプログラムを以下のように変更する必要があります。
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
})
.ConfigureAppConfiguration((context, builder) =>
{
var c = builder.Build();
// read configuration from config files
// it will use default json parser to parse the configuration store in nacos server.
builder.AddNacosV2Configuration(c.GetSection("NacosConfig"));
// you also can specify ini or yaml parser as well.
// builder.AddNacosV2Configuration(c.GetSection("NacosConfig"), Nacos.IniParser.IniConfigurationStringParser.Instance);
// builder.AddNacosV2Configuration(c.GetSection("NacosConfig"), Nacos.YamlParser.YamlConfigurationStringParser.Instance);
});
また、最も重要な設定ファイル(appsettings.json)は以下のとおりです。
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"AllowedHosts": "*",
"NacosConfig": {
"Listeners": [
{
"Optional": false,
"DataId": "conn",
"Group": "DEFAULT_GROUP"
},
{
"Optional": false,
"DataId": "other",
"Group": "DEFAULT_GROUP"
}
],
"Tenant": "1806893a-7997-4657-9325-d4294fbf0f4a",
"ServerAddresses": ["http://192.168.1.8:8848/"],
"UserName": "nacos",
"Password": "nacos",
"ConfigUseRpc": false,
"NamingUseRpc": false
}
}
ここで、Tenantは指定されたコンフィギュレーションセンター名前空間のIDであり、Listenersはその名前空間のコンフィギュレーションのData IDです。
ConfigUseRpcとNamingUseRpcの2つのパラメータが必要であり、httpプロトコルであればfalse、grpcプロトコルであればtrueとなります。(間違って書いてない)
デモを改善するために、デフォルトのコントローラメソッドを読み取り設定に変更しました。
private readonly IConfiguration _configuration;
public HomeController(ILogger<HomeController> logger, IConfiguration configuration)
{
_logger = logger;
_configuration = configuration;
}
public IActionResult Index(string key)
{
if (string.IsNullOrWhiteSpace(key))
{
return Content("key is empty!");
}
return Content(_configuration[key]);
}
開始後の効果
http//local host 38889/homeにアクセスします。key=mysqlアドレスは以下の通り。

http//local host 38889/homeにアクセスします。key=別のアドレス

http//local host 38889/homeにアクセスします。key=redisアドレスは以下の通り。

すべての対応する情報が見つかりました。
今回はNacosの設定を変更しました。

最新かどうかを確認してください。
検出はすでに最新で、コンソールは直接最新の構成に更新されます。


このセンターもとても便利です。
6. 最後にGithubアドレスを入力します。
- github :https://github.com/kesshei/NacosConfigDemo.git
- gitee : https://gitee.com/kesshei/NacosConfigDemo.git