1.春の雲の紹介
「史上最もシンプルなSpringCloudチュートリアル」が読者に非常に人気があることを考慮して、もう一度特別にバージョンをアップグレードしました。現在サポートされているバージョンはSpring Bootバージョン2.0.3.RELEASEで、SpringCloudバージョンはFinchleyです。リリース。
フィンチリー版の公式文書は次のとおりです。
https://cloud.spring.io/spring-cloud-static/Finchley.RELEASE/single/spring-cloud.html
Springクラウドは、構成管理、サービスディスカバリ、サーキットブレーカー、ルーティング、マイクロエージェント、イベントバス、グローバルロック、意思決定キャンペーン、分散セッションなど、分散システムを迅速に構築するためのツールを開発者に提供します。シンプルな環境で実行され、開発者のコンピューターで実行できます。さらに、Spring CloudはSpringbootに基づいているため、開発中にSpringbootについてある程度理解しておく必要があります。わからない場合は、次の記事を読むことができます:2時間でSpringbootを学ぶ。また、「マイクロサービスアーキテクチャ」がわからない場合は、検索エンジンで「マイクロサービスアーキテクチャ」を検索できます。
2.サービスレジストリを作成します
ここでも、サービスの登録と発見のコンポーネントとしてユーレカを使用しています。領事については、後で詳細に記事を紹介します。
2.1最初にMavenメインプロジェクトを作成します。
最初にメインのMavenプロジェクトを作成し、そのpomファイルに依存関係を導入します。SpringBootバージョンは2.0.3.RELEASEで、SpringCloudバージョンはFinchley.RELEASEです。このpomファイルは、依存バージョン管理の役割を果たす親pomファイルとして使用され、他のモジュールプロジェクトはpomを継承します。この一連の記事はすべてこのモードを採用しており、他の記事のpomはこのpomと同じです。繰り返しになりますが、今後は紹介を繰り返しません。コードは次のように表示されます。
<?xml version="1.0" encoding="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">
<modelVersion>4.0.0</modelVersion>
<groupId>com.forezp</groupId>
<artifactId>sc-f-chapter1</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<name>sc-f-chapter1</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.3.RELEASE</version>
<relativePath/>
</parent>
<modules>
<module>eureka-server</module>
<module>service-hi</module>
</modules>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<spring-cloud.version>Finchley.RELEASE</spring-cloud.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
2.2次に、2つのモデルプロジェクトを作成します
1つのモデルプロジェクトはサービスレジストリ、つまりEurekaサーバーとして機能し、もう1つはEurekaクライアントとして機能します。
以下では、サーバーの作成を例として取り上げ、作成プロセスを詳細に説明します。
以下に示すように、プロジェクトを右クリック->モデルを作成->スプリングイニシャルを選択します。
次のステップ->クラウド検出-> eurekaサーバーを選択し、次のステップに進みます。
プロジェクトが作成された後、そのpom.xmlは親pomファイルを継承し、spring-cloud-starter-netflix-eureka-serverの依存関係を導入します。コードは次のとおりです。
<?xml version="1.0" encoding="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">
<modelVersion>4.0.0</modelVersion>
<groupId>com.forezp</groupId>
<artifactId>eureka-server</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>eureka-server</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>com.forezp</groupId>
<artifactId>sc-f-chapter1</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
</dependencies>
</project>
2.3サービスレジストリを開始する
@EnableEurekaServerのアノテーションは1つだけ必要です。このアノテーションは、springbootプロジェクトのスタートアップアプリケーションクラスに追加する必要があります。
@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaServerApplication.class, args );
}
}
Eurekaは高可用性コンポーネントであり、バックエンドキャッシュはありません。各インスタンスが登録された後、レジストリにハートビートを送信する必要があります(メモリ内で実行できるようにします)。デフォルトでは、erurekaサーバーもeurekaです。クライアント、およびサーバーを指定する必要があります。eurekaサーバーの構成ファイルappication.yml:
server:
port: 8761
eureka:
instance:
hostname: localhost
client:
registerWithEureka: false
fetchRegistry: false
serviceUrl:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
spring:
application:
name: eurka-server
eureka.client.registerWithEureka:falseおよびfetchRegistry:falseを使用して、eurekaサーバーであることを示します。
Eurekaサーバーにはインターフェースがあり、プロジェクトを開始し、ブラウザーを開いてアクセスします:
http:// localhost:8761 、インターフェースは次のとおりです。
もちろん、登録されたサービスなしではサービスを見つけることができないため、利用可能なアプリケーションはありません(サービスが見つかりません)。
3つ目は、サービスプロバイダー(eurekaクライアント)を作成することです。
クライアントがサーバーに登録すると、ホストとポート、URL、ホームページなどのメタデータが提供されます。Eurekaサーバーは、各クライアントインスタンスからハートビートメッセージを受信します。ハートビートがタイムアウトした場合、インスタンスは通常、登録済みサーバーから削除されます。
作成プロセスはサーバーに似ており、pom.xmlは次のように作成されます。
<?xml version="1.0" encoding="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">
<modelVersion>4.0.0</modelVersion>
<groupId>com.forezp</groupId>
<artifactId>service-hi</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>service-hi</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>com.forezp</groupId>
<artifactId>sc-f-chapter1</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
@EnableEurekaClientに注釈を付けて、自分がeurekaclientであることを示します。
@SpringBootApplication
@EnableEurekaClient
@RestController
public class ServiceHiApplication {
public static void main(String[] args) {
SpringApplication.run( ServiceHiApplication.class, args );
}
@Value("${server.port}")
String port;
@RequestMapping("/hi")
public String home(@RequestParam(value = "name", defaultValue = "forezp") String name) {
return "hi " + name + " ,i am from port:" + port;
}
}
@EnableEurekaClientだけでは不十分です。また、構成ファイルでサービスレジストリのアドレスを指定する必要があります。application.yml構成ファイルは次のとおりです。
server:
port: 8762
spring:
application:
name: service-hi
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/
spring.application.nameを指定する必要があります。これは非常に重要です。これは通常、サービスとサービス間の将来の呼び出しでこの名前に基づいています。
プロジェクトを開始し、eurekaサーバーのURLであるhttp:// localhost:8761を開きます。
サービスがサービスに登録されていることがわかります。サービス名はSERVICE-HI、ポートは7862です。
次に、 http:// localhost:8762 / hi?name = forezpを開く と、ブラウザに次のように表示されます。
こんにちはforezp、私はポートからです:8762
ソースのダウンロード:https://github.com/forezp/SpringCloudLearning/tree/master/sc-f-chapter1
続きを読む
4、参考資料
http://blog.csdn.net/forezp/article/details/69696915
http://cloud.spring.io/spring-cloud-static/Finchley.RELEASE/single/spring-cloud.html
転載:http://blog.csdn.net/forezp/article/details/81040925