目次
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にサービスを登録します。
ブラウザはインターフェイスを直接呼び出します。バックグラウンドがサービス名を通じて別のサービスを正常に呼び出していることがわかります。