序文
この記事では、SpringCloud が構成センターおよび登録センターとして Nacos を使用し、簡単なデモを通じて Nacos の基本構成を学習し、RestTemplate と openfeign を通じて異なるマイクロサービス間のインターフェイス呼び出しを完了することを主に紹介します。
Nacos のインストール構成
Nacos の学習リソースには主に次の 2 つが含まれます
- ナコス パイプ ネットワークナコス パイプ ネットワーク
- ナコスGitHubナコスGitHub
ナコスをダウンロード
Nacos の対応するバージョンをGitHub https://github.com/alibaba/nacos/releasesから直接ダウンロードします。この記事では 2.1.0 を使用します。GitHub アクセラレーションがない場合は、CSDN から直接ダウンロードできます。アップロードしました、完全に無料、ポイント不要https://download.csdn.net/download/whzhaochao/88074308
ナオクスを開始する
startup.cmd
Windows 変更の構成がset MODE="standalone"
スタンドアロン モードとして構成されている場合は、 startup.cmd
[実行] をクリックして Nacos を有効にするか、 を使用してstartup.sh -m standalone
起動モードを指定します。
8848 が表示されたら起動成功ですので、ブラウザにhttp://127.0.0.1:8848/nacos/、ユーザー名 nacos 、パスワード nacos と入力して Nacos にログインします。
nacosを設定する
Nacos に入った後、簡単に説明する必要があるいくつかの概念があります。
名前空間
異なる環境として理解できます。たとえば、dev/test/prod は、development/test/official に対応します。これら 3 つの環境を別々に作成できます。ネームスペース ID に注意してください (未入力の場合は自動生成されます) ). 入力せずに自動生成させます。
構成リスト
構成リストは、前のプロジェクトの yml またはプロパティ ファイルを置き換えるものです。開発環境を選択して、ユーザー サービスとして DataID を作成し、ショップとしてグループを作成します。ここで、DataID はマイクロサービスの 1 つに対応すると理解でき、グループ私たちのプロジェクトの一つとして理解していただければと思いますが、モールを作り、ユーザーセンターとオーダーセンターを作ります。ここで、モールプロジェクトはグループ、ユーザーセンターはデータIDとして理解できます。
サービス管理
ここでのサービス管理はマイクロサービスの 1 つに対応します。マイクロサービスが開始されると、ここに自動的に登録されます。まだデータはありません。
Spring Cloud環境構築
非常に単純なデモを作成します。基本的なロジックは、nacos 構成センターからユーザー構成を取得するユーザー センターを有効にし、ID を通じてユーザー情報を取得するインターフェイスを提供し、注文センターでインターフェイスを作成し、ユーザー センターのインターフェイス ユーザー情報を取得します。基本的なプロジェクト構造は次のとおりです。
ここでは、注記付きで POM を参照します。 SpingBoot の異なるバージョンは、cloud-alibaba および nacos と互換性がない可能性があります。https://githubからダウンロードできます。 .com/spring-cloud- incubator/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E 対応する互換性のあるバージョンを確認してください
<properties>
<spring-boot-start-web.version>2.3.11.RELEASE</spring-boot-start-web.version>
<spring-cloud-alibaba.version>2.2.5.RELEASE</spring-cloud-alibaba.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>${spring-boot-start-web.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${spring-cloud-alibaba.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
</project>
ユーザーセンターのbootstrap.yml設定
ここでは主に 2 つの主要な設定 nacos.config と nacos.discovery を見ていきます。config は主に nacos から設定情報を取得するように設定されています。ここで、プレフィックスは nacos バックグラウンド ユーザー サービスに適用され、名前空間は開発環境に対応し、グループはグループに対応します弊社プロジェクトショップに相当します。
server:
port: 82
spring:
profiles:
active: dev
application:
name: user-service
cloud:
nacos:
config:
server-addr: 127.0.0.1:8848
group: shop
enabled: true
prefix: user-service
namespace: 6835622b-e819-4a78-a4d0-3fdc12b29ae9
file-extension: yaml
discovery:
server-addr: 127.0.0.1:8848
username: nacos
password: nacos
namespace: 6835622b-e819-4a78-a4d0-3fdc12b29ae9
group: shop
依存関係の構成
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<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>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
</dependency>
このクラスを見てみましょうUserConfig
。このクラスを通じて、nacos で構成された users.list データを取得できます。
@Configuration
@ConfigurationProperties("users")
@Data
public class UserConfig {
private List<User> list;
}
このクラスは、ID を通じて nacos 構成センターのユーザー情報を取得するUserController
方法を提供します。/user/{id}
@RestController
@RequestMapping("/user")
@Slf4j
public class UserController {
@Value("${server.port}")
private Integer port;
@Resource
private UserConfig userConfig;
@GetMapping("/{id}")
public User info(@PathVariable Long id){
return userConfig.getList().stream().filter(x->x.getId().equals(id)).peek(x-> x.setPort(port)).findFirst().get();
}
}
nacos-user プロジェクトを有効にします。nacos-user プロジェクトを開始すると、nacos のバックグラウンドで user-service が表示されます。ポートは 82 です。
nacosに表示されるIP とポートhttp://192.168.1.103:82/user/1を通じて、nacosの構成情報を正常に取得できます。
オーダーセンター
オーダーセンターの構成
server:
port: 81
spring:
profiles:
active: dev
application:
name: order-service
cloud:
nacos:
config:
server-addr: 127.0.0.1:8848
group: shop
enabled: true
prefix: order-service
namespace: 6835622b-e819-4a78-a4d0-3fdc12b29ae9
file-extension: yaml
discovery:
server-addr: 127.0.0.1:8848
username: nacos
password: nacos
namespace: 6835622b-e819-4a78-a4d0-3fdc12b29ae9
group: shop
依存関係の構成
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
<version>2.2.6.RELEASE</version>
</dependency>
注文センター、注文センターでは、ユーザー センターのインターフェイスを呼び出すことと、/order/{id}
ユーザーセンターのインターフェイスを呼び出すことによって2 つのインターフェイスを作成しました。ここでは、構成に追加する必要があることに注意してください。そうしないと、インターフェイス アドレスが追加されません。ロード バランシングは、ユーザー サービスを通じて登録センターから対応するサービス アドレスを見つけます。restTempate
/order/feign/{id}
openFeign
RestTemplate
@LoadBalanced
ribon
ribon
@RestController
@RequestMapping("/order")
public class OrderController {
@Resource
private RestTemplate restTemplate;
@Resource
private UserFeign userFeign;
@GetMapping("/{id}")
public User info(@PathVariable Long id){
return restTemplate.getForObject("http://user-service/user/".concat(id.toString()), User.class);
}
@GetMapping("/feign/{id}")
public User feign(@PathVariable Long id){
return userFeign.getUser(id);
}
}
@Configuration
public class RestTempleteConfig {
@LoadBalanced
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}
}
@FeignClient(value = "user-service")
@Component
public interface UserFeign {
@GetMapping("user/{id}")
User getUser(@PathVariable Long id);
}
開始するnacos-order
と、nacos サービスの 1 つが表示されますorder-service
。IP とポートを介して対応するインターフェイスにアクセスし、ユーザー センター サービスへの呼び出しを完了します。http://192.168.1.103:81/order/1
と入力して、ユーザー センター インターフェイスを呼び出します。 restTempate 経由http : //192.168.1.103:81/order/feign/2を入力すると、openFeign 経由でユーザー センター インターフェイスが呼び出されます。
ここでは、ユーザー サービスの起動設定をコピーし、service.port
2 つのユーザー サービスを上書きして起動します。
nacos バックグラウンド ユーザー サービスのインスタンスが 2 つあることがわかります。
order-service が呼び出されると、負荷分散を実現するためにさまざまなユーザー サービスによって提供されます。
やっと
この記事はnacos
学習の入門書であり、その他のnacos
関連コンテンツは後で学習します
プロジェクトのソース コード: https://gitee.com/whzhaochao/nacos-study