マイクロサービス設定センター Nacos.NET 5

マイクロサービス設定センター Nacos.NET 5

Nacosに基づくマイクロサービスのConfiguration Centerソリューションのデモ。

最后更新 2022/05/17 22:14
蓝创精英团队
预计阅读 3 分钟
分类
.NET
标签
.NET C# 建築設計の構造 Web API

Nacosに基づくマイクロサービスのConfiguration Centerソリューションのデモ。

Nacosはオープンソースですが、Alibaba Cloudはまた、そのサービスについて料金を請求しており、同社はAlibaba Cloudのサービスシステムに依存しているので、設定センターとして使用する可能性はまだ非常に大きいので、それに基づいて、例が来ました。

1. 環境の作り方

環境は比較的複雑で、Dockerサービスとテスト用のデモサービス、対応するMy SQLデータベースが必要です。

  1. DockerはNacosサービスを提供
  2. WebDemo
  3. 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. 適切な構成情報を増やす

  1. まず、追加したいメニューです。
  2. 次に、対応する名前空間です。
  3. 第三に、必要な具体的な設定です。

テストの名前空間を追加しました。

それぞれに以下の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アドレスを入力します。

Keep Exploring

延伸阅读

更多文章
同分类 / 同标签 2024/01/19

FluentValidation検証のチュートリアル

FluentValidationは、. NET開発に基づく検証フレームワークで、オープンソースで無料でエレガントで、チェーン操作をサポートし、理解しやすく、完全な機能を備えており、MVC5、WebApi2、ASP.NET COREと深く統合することができ、コンポーネント内に12種類の一般的な検証子を提供し、スケーラビリティが良く、カスタム検証子をサポートし、ローカライズされた多言語をサポートします。

继续阅读
同分类 / 同标签 2023/01/11

gと実操. NET编

バックエンドサービス間の呼び出しと同様に、バックエンドとバックエンドのやりとりにもWebApi + JSONを使用してきました。

继续阅读