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 は、サービスによって検出された関連情報に基づいて最適なサービスを選択します。
- 同じクラスター内のサービスを優先する
- 同じクラスター内の重みに基づくランダム選択
重みが大きいほど、選ばれる可能性が高くなります
次の図に示すように、サービスの重みは 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 構成リストでは、既存の構成を編集できます。
構成がサービスで使用されている場合、構成が変更されるとすぐにサービスが更新されます。これがホット アップデートです。