SpringCloudAlibaba-microservice-Nacos サービス構成

Nacos のインストールと展開: https://blog.csdn.net/Cey_Tao/article/details/127611559

1. サービス発見

Nacos サービス ディスカバリには、名前空間 (名前空間)、グループ (グループ)、クラスター (クラスター) の 3 つの主な領域があります。

デフォルトは、パブリック名前空間、DEFAULT_GROUP グループ化、および DEFAULT クラスターです。

異なるクラスタ間のサービスは相互にアクセスできますが、異なるグループまたは名前空間のサービスは検出できません

サービス ディスカバリは spring.cloud.nacos.discovery で構成されます。例は次のとおりです。

spring:
  application:
    name: user-service	# 服务名称
  cloud:
    nacos:
      server-addr: @nacos.server-addr@	# nacos 注册中心地址
      discovery:
        namespace: namespace-dev # namespace 的 ip
        group: g1	# 分组名称
        cluster-name: ShenZhen	 # 集群名称

グループとクラスター名は直接構成できます。名前空間は最初に nacos コンソールで作成する必要があり、名前空間の ID を取得する必要があります。

名前空間 ID は、自分で入力することも、自動的に生成することもできます

以下に示すように:

ここに画像の説明を挿入

2.負荷分散戦略

リボン関連の依存関係は Nacos の依存関係にも含まれており、負荷分散戦略はリボンを通じて設定できます。

デフォルトのポリシーはポーリング アクセスです

例は次のとおりで、user-service サービスへのアクセスに負荷分散ポリシーを設定します。

user-service:	# 服务名称,为改服务设置负载均衡策略
  ribbon:
    #    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule	# 随机访问策略
    NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule	# nacos 优先选择策略

NacosRule ポリシーとして設定されている場合、nacos は、サービスによって検出された関連情報に基づいて最適なサービスを選択します。

  1. 同じクラスター内のサービスを優先する
  2. 同じクラスター内の重みに基づくランダム選択

重みが大きいほど、選ばれる可能性が高くなります

次の図に示すように、サービスの重みは Nacos サービスの詳細で設定できます。

ここに画像の説明を挿入

3. Naocs 管理構成

新しい構成

構成ファイルは名前空間に基づいて分離されます

Nacos 構成リストで名前空間を選択して構成を追加します

ここに画像の説明を挿入

次の例では、user-service の既定の構成を追加します。構成の内容は、サービスのログ レベルです。

Nacos はサービス名に基づいて対応するデータ ID を検索するため、データ ID にはサービス名のプレフィックスを付ける必要があります。

ここに画像の説明を挿入

マルチ環境構成が必要な場合は、次のように環境名サフィックスをデータ ID に追加する必要があります。

ここに画像の説明を挿入

プル構成

nacos サービス検出とサービス構成の依存関係を追加します。

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

nacos 構成のプルに関連するプロパティは、ブートストラップ構成ファイルで構成する必要があります。

必要な属性は、サービス名、nacos アドレス、構成形式です。

プロジェクトのリソース ディレクトリの下に新しい bootstrap.yml を作成します。構成例は次のとおりです。

spring:
  application:
    name: user-service # 服务名称,要与 Data ID 前缀对应
  profiles:
    active: dev	# 启用环境
  cloud:
    nacos:
      server-addr: @nacos.server-addr@  # nacos 注册中心地址
      discovery:
        namespace: 6c1d9771-2afb-4a48-9ced-4bc21b2781c8 # 服务发现的命名空间 id
      config:
        file-extension: yaml  # 配置格式
        namespace: 6c1d9771-2afb-4a48-9ced-4bc21b2781c8 # 服务配置的命名空间 id
#        group: DEFAULT_GROUP # 默认为 DEFAULT_GROUP

サービス検出用の名前空間と構成された名前空間は別々に構成され、両方ともデフォルトでパブリック スペースにあることに注意してください。

ブートストラップ構成の @@ は Maven プロパティに置き換えられない場合があります。pom.xml に次の構成を追加するだけです。

<build>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <filtering>true</filtering>
        </resource>
    </resources>
</build>

異なる構成の優先度

さまざまな構成の優先順位は、高いものから低いものまで次のとおりです。

nacos 環境設定 > nacos デフォルト設定 > コマンドライン パラメータ > ブートストラップ設定 > アプリケーション設定

異なる優先度の間では、異なる部分が補完的であり、競合する同じ部分は優先度の高い構成を採用します

ただし、例外があり、私のテストによると、サービス名 (spring.application.name) とサービス ポート (server.port) は、コマンド ライン パラメータの中で最も優先度が高いです。

なお、サービスポートはnacosの設定を引っ張ることで設定できますが、サービス開始後にポート番号を変更することはできないため、サービスポートはホットアップデートの影響を受けません。

ホット アップデートの設定

nacos 構成リストでは、既存の構成を編集できます。

構成がサービスで使用されている場合、構成が変更されるとすぐにサービスが更新されます。これがホット アップデートです。

ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/Cey_Tao/article/details/127668566