nacos スタンドアロン環境の展開ウィンドウ

目次

1.ナコスをダウンロードする

2. 設定を変更して nacos を起動します

1. ダイレクトブート

2. バックグラウンドスタート

3. springcloud で nacos を構成する

コードのディレクトリ構造

1. springcloud設定ファイルpom

2. order-nacosオーダーモジュールの構成

pom.xml

アプリケーション.yml

3. ストックサービスインベントリモジュールの構成

4. コード

OrderApplication.java

オーダーコントローラー.java

StockApplication.java

StockController.java

4. プロジェクトの開始と運営


1.ナコスをダウンロードする

springcloud バージョンと一致する nacos ダウンロードを選択します

リリースノート · alibaba/spring-cloud-alibaba Wiki · GitHub

 Windows環境ではzipパッケージを選択します。ダウンロード後解凍してください。

2. 設定を変更して nacos を起動します

1. ダイレクトブート

解凍された bin ディレクトリに入り、startup.cmd を編集し、set MODE 行を変更して MODE="standalone" を設定し、保存します。

「startup.cmd」をダブルクリックするか、管理者として実行します。

bin/logs のログをチェックして、起動が成功したかどうかを確認できます。

2. バックグラウンドスタート

nssm ツールを使用して、nacos をバックグラウンド サービスとしてインストールします。NSSM の使用方法については、以下のリンクを参照してください。

nssm ツールを使用して ES、Kibana、Logstash、またはその他の .bat ファイルを Windows バックグラウンド サービスとして展開する方法

 起動したらアドレスを入力してアクセスします。ユーザー名とパスワードはどちらも nacos です。

http://192.168.1.15:8848/nacos/index.html

3. springcloud で nacos を構成する

コードのディレクトリ構造

1. springcloud設定ファイルpom

プロジェクトの全体的な構成によって、springcloud のバージョンと各コンポーネントのバージョンが決まります。

<parent> を置き換える <dependencyManagement> に注目してください。

<modules> の下のモジュールは、プロジェクトがモジュールを追加するときに自動的に追加されます。

<?xml version="1.0"coding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3 .org/2001/XMLSchema-instance" 
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <modules> 
        <module>stock</module> 
        <module>order</module> 
        <module>stock-nacos</module> 
        <module>order-nacos</module> 
    < /modules> 
    <groupId>com.wind.springcloud</groupId> 
    <artifactId>alibaba</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <name>alibaba</name>  
    <description>springcloudalibaba</description>
    <packaging>pom</packaging> 
    <properties>
        <java.version>1.8</java.version> 
        <spring.cloud.alibaba.version>2.2.5.RELEASE</spring.cloud.alibaba.version> 
        <spring.boot.version>2.3.11.RELEASE</ spring.boot.version> 
        <spring.cloud.version> Hoxton.SR8</spring.cloud.version> 
    </properties> 

    <dependency> 
        <dependency> 
            <groupId>org.springframework.boot</groupId> 
            <artifactId>spring -boot-starter</artifactId> 
        </dependency> 

        <dependency> 
            <groupId>org.springframework。boot</groupId> 
            <artifactId>spring-boot-starter-test</artifactId>  
            <scope>test</scope>
        </dependency> 
    </dependency>
 
    <dependencyManagement> 
        <dependency> 
            <!-- alibaba 版本管理--> 
            <dependency> 
                <groupId>com.alibaba.cloud</groupId> 
                <artifactId>spring-cloud-alibaba-dependency</artifactId> 
                < version>${spring.cloud.alibaba.version}</version> 
                <type>pom</type> 
                <scope>import</scope> 
            </dependency> 
            <!-- springboot版本管理--> 
            <dependency> 
                <グループID>org.springframework。boot</groupId> 
                <artifactId>spring-boot-starter-parent</artifactId>
                <version>${spring.boot.version}</version> 
                <groupId>org.springframework.ブート</groupId>バージョン}</version> 
                <type>pom</type>
                <scope>import</scope> 
            </dependency> 
            <!-- springcloud 版本管理--> 
            <dependency> 
                <groupId>org.springframework.cloud</groupId> 
                <artifactId>spring-cloud-dependency</artifactId> 
                <バージョン>${spring.cloud.version}</version> 
                <type>pom</type> 
                <scope>import</scope> 
            </dependency> 

        </dependency> 
    </dependencyManagement> 

    <build> 
        <plugins> 
            <plugin> 
            </plugin> 
        </plugins>
                <artifactId>スプリングブート-maven-plugin</artifactId>
    </ビルド> 

</プロジェクト>

2. order-nacosオーダーモジュールの構成

pom.xml

<?xml version="1.0"coding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" 
         xmlns:xsi="http://www.w3 .org/2001/XMLSchema-instance" 
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <parent> 
        <artifactId>alibaba</artifactId> 
        <groupId>com.wind.springcloud</groupId> 
        <version>0.0.1-SNAPSHOT</version> 
    </parent> 
    <modelVersion>4.0。0</modelVersion> 

    <artifactId>order-nacos</artifactId> 

    <dependency> 
        <dependency> 
            <groupId>org.springframework.boot</groupId> 
        <!-- nacos服务注册発行现 --> 
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency> 
        <dependency> 
            <groupId>com.alibaba.cloud</groupId> 
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> 
        </dependency> 
    </dependency> 

</project>

アプリケーション.yml

nacos へのサービス登録では、デフォルトでアプリケーション名の値が使用されます。

サーバー:
  ポート: 8020 
spring:
  アプリケーション:
    名前: order-service
  クラウド: 
    nacos:
      サーバーアドレス: 127.0.0.1:8848 
      Discovery:
        ユーザー名: nacos
        パスワード: nacos 
# 名前空間: public #サービス分類管理のデフォルト public 
# ephemeral: false #永続インスタンスのデフォルトは true 一時インスタンス
# サービス: デフォルト ${spring.application.name} 
# グループ: より詳細な分類管理
# 重み: #負荷分散重み
# メタデータ: メタデータはソース コードに従って拡張可能

3. ストックサービスインベントリモジュールの構成

pom.xml は order モジュールと一致しており、application.yml はポートを 8021 に変更するだけで済みます。

4. コード

OrderApplication.java

ここで、 @LoadBalanced は、nacos のデフォルトのロード バランシング呼び出しです。サービス名を解析してIP、ポートを取得します。

package com.wind.order;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.client.RestTemplateBuilder;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;

/**
 * @author dongguanghui
 * @date 2023/5/15 17:51
 */
@SpringBootApplication
public class OrderApplication {

    public static void main(String[] args) {
        SpringApplication.run(OrderApplication.class,args);
    }

    @Bean
    @LoadBalanced
    public RestTemplate restTemplate(RestTemplateBuilder builder){
        RestTemplate restTemplate = builder.build();
        return restTemplate;
    }
}

オーダーコントローラー.java

package com.wind.order.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

/**
 * @author dongguanghui
 * @date 2023/5/15 17:47
 */
@RestController
@RequestMapping("/order")
public class OrderController {

    @Autowired
    private RestTemplate restTemplate;

    @RequestMapping("/add")
    public String add(){
        System.out.println("下单成功");
        String msg = restTemplate.getForObject("http://stock-service/stock/reduct", String.class);
        return "order success!" + msg;
    }

}

StockApplication.java

package com.wind.stock;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.client.RestTemplateBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;

/**
 * @author dongguanghui
 * @date 2023/5/15 17:51
 */
@SpringBootApplication
public class StockApplication {
    public static void main(String[] args) {
        SpringApplication.run(StockApplication.class,args);
    }
}

StockController.java

package com.wind.stock.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

/**
 * @author dongguanghui
 * @date 2023/5/15 17:47
 */
@RestController
@RequestMapping("/stock")
public class StockController {


    @Value("${server.port}")
    private String port;

    @RequestMapping("/reduct")
    public String reduct(){
        System.out.println("下单成功");
        return "reduct success!:"+port;
    }

}

4. プロジェクトの開始と運営

プロジェクト開始後、nacosにサービスを登録します。

ブラウザはインターフェイスを直接呼び出します。バックグラウンドがサービス名を通じて別のサービスを正常に呼び出していることがわかります。

おすすめ

転載: blog.csdn.net/Spring_possible/article/details/130719068