ナコス研究ノート

初めてナコスを知る

サービスの登録と発見

この記事では、サービスコンシューマーとサービスプロバイダーについて書きました

サービスプロバイダーとサービスコンシューマーに依存関係を追加する

<dependency>
	<groupId>com.alibaba.cloud</groupId>
	<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
	<version>2.2.5.RELEASE</version>
</dependency>

application.yml構成ファイルにnacosサーバーアドレスを追加します

spring:
  cloud:
    nacos:
      #nacos服务端地址
      server-addr: localhost:8848

Nacosを起動します

最初にnacosを開始し、次にspringbootプロジェクト
ここに画像の説明を挿入
を開始してから、サービスプロバイダーとサービスコンシューマープロジェクトを開始する必要があることに注意してください。
ここに画像の説明を挿入
テスト
ここに画像の説明を挿入

ナコスクラスター

クラスターを構成する

spring:
  cloud:
    nacos:
      server-addr: localhost:8848
      discovery:
      	#配置集群名称(自定义)
        cluster-name: HZ

私は8083がBJクラスターに設定され、残りの3つがHZクラスターである4つのプロジェクトを開始しました
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入

NacosRuleロードバランサー

負荷分散をNacosRuleに設定すると、それ自体と同じクラスター内でサービスを見つけることが優先されます。

userservice:
  ribbon:
    #负载均衡规则
    NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule

ウェイト負荷分散(ウェイトが低いほど、割り当てられるリクエストは少なくなり、ウェイトが0の場合はリクエストは割り当てられません)
ここに画像の説明を挿入
ここに画像の説明を挿入

ナコス環境隔離

Nacosのサービスストレージとデータストレージの最外層は名前空間と呼ばれるもので、最外の分離に使用されます
ここに画像の説明を挿入
ここに画像の説明を挿入

名前空間を変更する

8080サービスの名前空間を変更します

spring:
  cloud:
    nacos:
      server-addr: localhost:8848
      discovery:
        cluster-name: HZ
        #填命名空间ID
        namespace: 15a1ca9f-6f14-4da8-a1c5-7c2fdcf268f9

サービス
ここに画像の説明を挿入
を再起動し、クエリの注文情報に再度アクセスします
ここに画像の説明を挿入
エラーの理由:名前空間が異なると、orderserviceはuserserviceインスタンスを見つけられません

04-02 21:40:30:229 ERROR 30908 --- [nio-8080-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : 
Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; 
nested exception is java.lang.IllegalStateException: No instances available for userservice] with root cause

ナコスとユーレカの比較

  • 類似点:
    1。両方がサービス登録とプルを
    サポートします2.両方がヘルス検出のためのサービスプロバイダーハートビートをサポートします
  • 違い:
    1。Nacosは、プロバイダーのステータスをアクティブに検出するサーバーをサポートします。一時インスタンスはハートビートモードを使用し、非一時インスタンスはアクティブ検出モードを使用します
    。2。ハートビートが異常な場合、一時インスタンスは拒否され、非一時インスタンスは拒否されません。
    3. Nacos 4. Nacos
    クラスターはデフォルトでAPモードを採用します。クラスター内に非一時インスタンスがある場合、PCモードが採用され、EurekaはAPモードを採用します。
spring:
  cloud:
    nacos:
      server-addr: localhost:8848,localhost:8847
      discovery:
        #设置是否为临时实例
        ephemeral: false

Nacos構成管理

1.新しい構成情報の名前
ここに画像の説明を挿入
データIDは[サービス名]-[実行環境].yamlを使用することをお勧めします。サフィックスはyamlを使用することをお勧めします(ymlは推奨されません)
ここに画像の説明を挿入
2。構成管理クライアントの依存関係ナコスの紹介

<!--nacos配置管理依赖-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
    <version>2.2.5.RELEASE</version>
</dependency>

3.リソースディレクトリに新しいbootstrap.ymlファイルを作成します。このファイルはブートストラップファイルであり、application.ymlよりも優先されます。プログラムが起動すると、nacosの構成ファイルは、この構成ファイルのnacosアドレス、サービス名、現在の環境、およびファイル拡張子に従って読み取られます。

spring:
  application:
    #服务名称
    name: userservice
  profiles:
    #开发环境
    active: dev 
  cloud:
    nacos:
      #Nacos地址
      server-addr: localhost:8848 
      config:
        #文件后缀名
        file-extension: yaml 

Nacos構成のホットアップデート

Nacosの構成ファイルが変更された後、マイクロサービスは再起動せずにそれを認識できます

最初の方法:@RefreshScopeアノテーションを追加します

@Controller
@RequestMapping("/user")
@RefreshScope
public class UserController {
    
    
	//...
}

2番目の方法:構成クラスを使用する

@Data
@Component
@ConfigurationProperties(prefix = "pattern")
public class PatternProperties {
    
    
    private String dateformat;
}

構成クラスを注入する

@Autowired
private PatternProperties properties;

マルチ環境構成の共有

マイクロサービスが開始すると、nacosから複数の構成ファイルを読み取ります。

  • [spring.application.name]-[spring.profiles.active] .yaml、例如:userservice-dev.yaml
  • [spring.application.name] .yaml、例如:userservice.yaml

プロファイルがどのように変更されても、ファイル[spring.application.name] .yamlが読み込まれるため、複数の環境の共有構成をこのファイルに書き込むことができます
ここに画像の説明を挿入
。複数の構成の優先度:[サービス名]-[環境] .yaml>[サービス名].yaml>ローカル構成

構成ファイルを異なるマイクロサービス間で共有できますか?

はい、構成ファイルは異なるマイクロサービス間で共有できます

  • 方法1:
spring:
  cloud:
    nacos:
      config:
        file-extension: yaml #文件后缀名
        shared-configs: #多微服务间共享的配置列表
          - dataId: common.yaml #要共享的配置文件
  • 方法2
spring:
  cloud:
    nacos:
      config:
        file-extension: yaml #文件后缀名
        extends-configs: #多微服务间共享的配置列表
          - dataId: common.yaml #要共享的配置文件

おすすめ

転載: blog.csdn.net/m0_60117382/article/details/123928538