春の雲アリババ
春の雲-アリババ-ナコス
序文
会社がシステムをリファクタリングしたので、使用されたテクノロジーはSpring-cloud-Alibabaファミリーバケットに基づいていたので、仕事の後にこのテクノロジーを研究しました。
学習教材
Program ape DD Spring Cloud Aliabab特別トピックブログNacos
ドキュメント
はじめに
ナコス公式サイトの紹介をご覧ください:ナコスの紹介
Nacosをインストールする
ダウンロードアドレス:バージョン1.0 Nacosダウンロードリンク
ダウンロード後、解凍すると、オペレーティングシステムによってコマンドの実行方法が異なります。
Linux/Unix/Mac:sh startup.sh -m standalone
Windows:cmd startup.cmd -m standalone
上記のコマンドに従ってNacosを起動した後、http://127.0.0.1:8848 / nacos /にアクセスして、次のようにNacosサービス管理ページに入ります。
Nacos登録センターへのアプリケーションアクセスを構築する
Nacosが起動したら、それを登録センターとして使用してインターフェースを管理できます(プロバイダーとコンシューマーの両方のアプリケーションが必要です)
サービスプロバイダー
ワン:春-クラウドアリババ-ダボ:春ブーツと呼ばれるプロジェクトを作成 -provider
追加:2 pom.xml
のような必要な依存関係の設定を、追加し、ファイルを:
<parent>
<!-- 定义spring boot的版本 -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.4.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-dubbo</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<!--spring cloud的版本以及spring cloud alibaba的版本,
由于spring cloud alibaba还未纳入spring cloud的主版本管理中,所以需要自己加入-->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Finchley.SR1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>0.2.2.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
3:HTTPインターフェースを作成する
@RestController
@RequestMapping("/provider")
public class ProviderController {
@Autowired
private ConfigurableApplicationContext applicationContext;
@Value("${server.port}")
private Integer port;
@Resource
private DiscoveryClient discoveryClient;
@GetMapping("/demo")
public Object demo(String instance) {
return "port= " + port + ", name=" + applicationContext.getEnvironment().getProperty("user.name") + ", age=" + applicationContext.getEnvironment().getProperty("user.age")
+ "discoveryClient" + discoveryClient.getInstances(instance);
}
}
注:Spring Cloudサービスの登録と検出を有効にするには、@ EnableDiscoveryClientアノテーションをスタートアップクラスに追加する必要があります
。4:サービス名とNacosアドレスを構成する
spring:
application:
name: spring-cloud-alibaba-dubbo-provider
cloud:
nacos:
discovery:
server-addr: 47.104.219.70:8848
server:
port: 8899
5:上記で作成したアプリケーションを起動します。
アプリケーションが起動すると、コンソールまたはログに次のコンテンツが表示され、登録が成功したことが示されます。
INFO 10476 --- [ main] o.s.c.a.n.registry.NacosServiceRegistry : nacos registry, alibaba-nacos-discovery-server 10.123.18.216:8001 register finished
問題なく起動したら、Nacos管理ページhttp://127.0.0.1:8848/nacos/にアクセスして、サービスリストを
表示し、現在登録されているすべてのサービス、および各サービスのクラスター、インスタンス、正常なインスタンスの数を表示できます。 。[詳細]をクリックすると、各サービスの特定のインスタンス情報も表示されます。
消費者へのサービス
次に、正常に登録されたサービスを利用するためのアプリケーションを構築する必要があります。
ステップ1:という名前のSpring Bootアプリケーションを作成します。spring-cloud-alibaba-dubbo-consumer
ステップ2:上記のサービスプロバイダーと同様に、pom.xmlの依存コンテンツを編集します。
手順3:アプリケーションのメインクラスを作成し、サービスプロバイダーのインターフェイスを呼び出すHTTPインターフェイスを実装します。
@EnableDiscoveryClient
@SpringBootApplication
public class TestApplication {
public static void main(String[] args) {
SpringApplication.run(TestApplication.class, args);
}
@Slf4j
@RestController
static class TestController {
@Autowired
LoadBalancerClient loadBalancerClient;
@GetMapping("/test")
public String test() {
// 通过spring cloud common中的负载均衡接口选取服务提供节点实现接口调用
ServiceInstance serviceInstance = loadBalancerClient.choose("alibaba-nacos-discovery-server");
String url = serviceInstance.getUri() + "/hello?name=" + "didi";
RestTemplate restTemplate = new RestTemplate();
String result = restTemplate.getForObject(url, String.class);
return "Invoke : " + url + ", return : " + result;
}
}
}
ステップ4:サービス名とNacosアドレスを構成して、サービスコンシューマーが上記のNacosに登録されたサービスを検出できるようにします。
spring.application.name=alibaba-nacos-discovery-client-common
server.port=9000
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
5番目のステップ:サービスコンシューマーを開始してから、curlやpostmanなどのツールを使用してアクセスを開始します。次の例ではcurlを使用しています。
request url:http://132.147.3.156:8899/provider/demo