SpringCloud-Nacos サービス登録および構成センター

ダウンロードリンク:
https://pan.baidu.com/s/1E9J52g6uW_VFWY34fHL6zA 抽出コード: vneh

Spring Cloud Alibaba サービス登録および構成センター (非常に詳細)

jNacosインストールディレクトリ直下のbinディレクトリに入り、cmdと入力し、スタンドアロンモードでNacosを起動

startup.cmd -m standalone

http://localhost:8848/nacos のNacos インターフェイスにアクセスします。

サービス プロバイダーを構築し、Nacos に登録する

pom.xml に依存関係を追加する

        <!--SpringCloud ailibaba nacos -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>

設定ファイルに追加

spring:
  application:
    name: nacos-payment-provider # 服务的名称
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #配置Nacos地址

management:
  endpoints:
    web:
      exposure:
        include: '*'

スタートアップ クラスに注釈を追加する

@EnableDiscoveryClient // 开启 Nacos 服务发现功能
@SpringBootApplication
public class PaymentMain9001
{
    
    
    public static void main(String[] args) {
    
    
            SpringApplication.run(PaymentMain9001.class, args);
    }
}

コントローラー層

@RestController
public class PaymentController
{
    @Value("${server.port}")
    private String serverPort;

    @GetMapping(value = "/payment/nacos/{id}")
    public String getPayment(@PathVariable("id") Integer id)
    {
        return "nacos registry, serverPort: "+ serverPort+"\t id"+id;
    }
}

プロジェクトを開始し、サービス リストを表示すると、サービスがサービス リストに追加されていることがわかります
ここに画像の説明を挿入

サービス コンシューマーを構築し、Nacos に登録する

依存関係を導入する

        <!--SpringCloud ailibaba nacos -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>

構成ファイル

spring:
  application:
    name: nacos-order-consumer
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848


#消费者将要去访问的微服务名称(注册成功进nacos的微服务提供者)
service-url:
  nacos-user-service: http://nacos-payment-provider

スタートアップ クラスに注釈を付けます: @EnableDiscoveryClient

リボンは Nacos に統合されているため、Nacos は自動的にロード バランシングをサポートします.
ここに画像の説明を挿入
RestTemplate 構成クラスを定義します。これは、残りのサービスを呼び出すために使用できます。

/**
 * @auther zzyy
 * @create 2020-02-23 14:45
 */
@Configuration
public class ApplicationContextConfig
{
    
    
    @Bean
    @LoadBalanced // 使用RestTemplate结合ribbon来做负载均衡的时候已经要加上这个注解
    public RestTemplate getRestTemplate()
    {
    
    
        return new RestTemplate();
    }
}

コントローラー層

@RestController
@Slf4j
public class OrderNacosController
{
    
    
    @Resource
    private RestTemplate restTemplate;

    @Value("${service-url.nacos-user-service}")
    private String serverURL;

    @GetMapping(value = "/consumer/payment/nacos/{id}")
    public String paymentInfo(@PathVariable("id") Long id)
    {
    
    
        return restTemplate.getForObject(serverURL+"/payment/nacos/"+id,String.class);
    }

}

プロジェクト
ここに画像の説明を挿入
を開始します: http://localhost:83/consumer/payment/nacos/13にアクセスして効果を確認し
、9001 と 9002 が交互に表示されることを確認します

構成センターとしての Nacos

依存関係を追加する

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

構成センター、構成センターとしての Nacos には、bootstrap.yml と application.yml の 2 つの構成ファイルがあります。

Nacos は springcloud-config と同じ. プロジェクトが初期化されるとき、最初に構成センターから構成がプルされていることを確認する必要があります. 構成がプルされた後にのみ、プロジェクトは正常に開始されます.

springboot での構成ファイルの読み込みは順番に優先され、bootstrap はアプリケーションよりも優先度が高くなります。

ブートストラップ.yml

# nacos配置
server:
  port: 3377

spring:
  application:
    name: nacos-config-client
  cloud:
    nacos:
      # 服务注册
      discovery:
        server-addr: localhost:8848 #Nacos服务注册中心地址
      # 作为服务配置的客户端
      config:
        server-addr: localhost:8848 #Nacos作为配置中心地址
        file-extension: yaml #指定yaml格式的配置
        #group: DEV_GROUP
        #namespace: 7d8f0f5a-6a53-4785-9686-dd460158e5d4


# ${spring.application.name}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension}
# nacos-config-client-dev.yaml

# nacos-config-client-test.yaml   ----> config.info

アプリケーション.yml

spring:
  profiles:
    active: dev # 表示开发环境
    #active: test # 表示测试环境
    #active: info

メインのスタートアップ クラスに注釈を付けます: @EnableDiscoveryClient

コントローラ

@RestController
@RefreshScope //支持Nacos的动态刷新功能。
public class ConfigClientController
{
    
    
    @Value("${config.info}")
    private String configInfo;

    @GetMapping("/config/info")
    public String getConfigInfo() {
    
    
        return configInfo;
    }
}

Nacosにおけるdataidの合成形式とSpringBoot設定ファイルとのマッチングルール

公文書

Nacos 追加構成ファイル
ここに画像の説明を挿入

ここに画像の説明を挿入
概要:
Data ID の命名規則は次のとおりです。yaml スタートアップ プロジェクトを選択するには、サフィックス名に注意してください
ここに画像の説明を挿入
。http://localhost:3377/config/info にアクセスしてください。

Nacos には動的更新が付属しており、Nacos で nacos-config-client-dev.yaml の構成内容を変更し、見つかったリクエストの結果も返されます。
ここに画像の説明を挿入

今すぐプロファイルを切り替えたい場合

Nacos の設定には nacos-config-client-dev.yaml と nacos-config-client-test.yamlの 2 つのファイルがあります
. 両者の違いは tets や dev とは異なることです. 設定ファイルを使いたい
ここに画像の説明を挿入
場合開発環境の場合、中央モジュールの application.yml 構成ファイルの Nacos Configure を変更する必要があります。
ここに画像の説明を挿入

Nacos グループ構成

グループ構成は、異なるシナリオで同じ構成ファイル名を使用することです.
DataID 名は同じです, グループ名は異なります, 同じ構成ファイル名ですが、同じグループではありません.
ここに画像の説明を挿入
異なるグループで構成ファイルを使用するには?
bootstrap.yml で設定 使用するグループ化はファイルで指定されます

次の 2 つの構成の組み合わせは、DEV_GROUP グループの下にある info 構成ファイルを見つけることです。
ここに画像の説明を挿入
ここに画像の説明を挿入
効果: DEV_GROUP グループの下にある info 構成ファイルが使用されていることを示します。
ここに画像の説明を挿入

Nacos 名前空間の構成


ここに画像の説明を挿入
名前空間で新しい名前空間を選択すると、名前空間 ID サービス リストと構成リストにさらに 2 つのスペースを自動的に生成できます
ここに画像の説明を挿入
ここに画像の説明を挿入
2 つの構成ファイルを dev スペースに追加します。DataID は同じですが、
ここに画像の説明を挿入
bootstrap.yml でグループ化が異なります構成ファイル グループ構成と名前空間構成を追加
名前空間: 名前空間を指定するために使用されます
ここに画像の説明を挿入
application.yml は開発環境
ここに画像の説明を挿入
を指定します 上記の 2 つの構成は、名前空間 ID で TEST_GROUP グループを見つけます: 63fcd633-6d24-4dc8-b2ae-fdee979b0507 の構成結果
:
ここに画像の説明を挿入
要約: 最初に名前空間を見つけ、次にグループを見つけ、最後に環境を見つけます

Nacos の永続的な構成

Nacos にはデフォルトで組み込みデータベース derby が付属しています.
ここに画像の説明を挿入
すべての Nacos には derby データベースが付属しています. クラスタを構築するとき, 非常に多くの Nacos の構成を確実に統合できるようにする方法はありません.

mysql データベースに切り替えるように derby を構成する

Nacos の conf ディレクトリに sql スクリプト ファイルがあります: nacos-mysql.sql
ここに画像の説明を挿入
1. 新しいデータベースを作成します: nacos_config
2. スクリプト ファイルを実行します
3. conf/application.properties ファイルを変更して、mysql データ ソース構成のサポートを追加します(現在は mysql のみをサポートしています)、mysql データ ソースの URL、ユーザー名、およびパスワードを追加します。

spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user=root
db.password=root

Nacos を再起動すると、追加された構成が mysql テーブルに追加されます。

Nacos クラスター構成

Nacos 2.0.3 Linux システムのクラスター構築に関する詳細なチュートリアル.
実際の運用環境では、少なくとも 3 つの Nacos が必要です. 1 つしかない場合、単一障害点が発生すると、サービス全体が GG クラスターを直接使用し
ます建築:

  1. Nginx クラスター
  2. Nacos クラスター
  3. Mysql クラスター (主従分離)

ここに画像の説明を挿入

Linux に Nacos をインストールする

nacos-server-2.1.0.tar.gzのダウンロードnacos-server-1.4.2.tar.gz
のダウンロード新しい mynacos を /opt の下に作成し、nacos クラスターを保存して、nacos-server-2.1.0.tar.gz をmynacos、解凍

tar -zxvf nacos-server-2.1.0.tar.gz 

ここに画像の説明を挿入

mysql の永続性に対応するように nacos を構成する

Nacos データベース アドレスを構成します。新しいデータベース nacos-config を作成し、構成の下で SQL スクリプトを実行し、
application.properties ファイルを変更し、追加します。

spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user=root
db.password=root

Linux サーバー上の Nacos クラスター構成 cluster.conf

ここに画像の説明を挿入

hostname -i コマンドを使用して、マシンの実際の IP を表示します。
この ip は 127.0.0.1 として書き込むことはできません。Linux コマンドの hostname -i で認識できる ip でなければなりません。3 台の
ここに画像の説明を挿入
マシンをクラスタとして設定し、ポートはそれぞれ 333、444、および 555
. cluster.conf* ファイルを編集し、すべてのコンテンツを削除してから、次のコンテンツを追加します。

你的ip:333
你的ip:444
你的ip:555

クラスターを構築する

application.propertiesファイルを変更し、mysql を構成し、 cluster.conf
ファイルを変更し、クラスターのポート番号を構成します。nacos_3333、nacos_4444、nacos_5555 の 3 つのポイントをコピーし、application.properties 構成ファイルの server.port を 3333、4444 に変更します。それぞれ5555 、開始する bin ディレクトリを入力します。


./startup.sh

起動成功後、コマンドを実行してプロセスを表示する

ps -ef|grep nacos

ここに画像の説明を挿入

nginx を構成する

nginx 構成ファイルを編集し、以下を追加します。

	upstream cluster{
		server 127.0.0.1:3333
		server 127.0.0.1:4444
		server 127.0.0.1:5555
	}
	
	server {
		listen 1111;
		server_name localhost;
		location / {
			proxy_pass http://cluster;
		}
	} 

nginx を再起動します。/nginx -c は、起動する構成ファイルを指定します

./nginx -c /www/server/nginx/conf/nginx.conf

スペース不足のため Nacos を起動できませんでした

おすすめ

転載: blog.csdn.net/qq_44154912/article/details/125088346