ホームページ Java &#&チュートリアル 分散型で可用性の高い Spring Cloud マイクロサービス システムを構築する

分散型で可用性の高い Spring Cloud マイクロサービス システムを構築する

Jun 22, 2023 am 09:06 AM
高可用性 分散システム 春のクラウドマイクロサービス

インターネット ビジネスの継続的な発展に伴い、マイクロサービス アーキテクチャは、ますます多くの企業で好まれるアーキテクチャ手法となっています。 Spring CloudはSpring Bootをベースとしたマイクロサービスフレームワークとして、分散性と高可用性の特徴を備えており、自社のマイクロサービスシステムの構築に利用する企業が増えています。

この記事では、Spring Cloud を使用して高可用性の分散マイクロサービス システムを構築する方法を紹介します。

1. 登録センターの構築

登録センターは、Spring Cloud マイクロサービス アーキテクチャのコア コンポーネントの 1 つであり、すべてのマイクロサービスは、自身の情報を登録センターに登録し、その後、他の情報を登録する必要があります。このサービスは登録センターで見つけてください。 Spring Cloudでは、Eurekaが非常に優れた登録センターコンポーネントであり、高可用性、分散性などの特徴を持ち、さまざまなシナリオのニーズに対応できるため、登録センターの構築にEurekaを採用することにしました。

Eureka を使用して登録センターを構築する前に、Eureka の基本概念をいくつか理解する必要があります。

  1. Eureka サーバー: Eureka のサーバー側。サービス インスタンスに関する情報のリスト。
  2. Eureka Client: Eureka クライアント。独自のサービスを Eureka Server に登録するために使用されます。
  3. サービス インスタンス: マイクロサービスの実行中のインスタンス。サービス インスタンスには、サービスの IP アドレス、ポート番号、正常性ステータス、およびその他の情報が含まれます。

Eureka を使用して登録センターを構築する手順は次のとおりです。

  1. 新しい Spring Boot プロジェクトを作成します。
  2. 依存関係の追加: pom.xml ファイルに次の依存関係を追加します:
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
ログイン後にコピー
  1. application.yml ファイルに次の構成を追加します:
server:
  port: 8761    #设置服务端口号

eureka:
  instance:
    hostname: localhost    #设置Eureka Server的主机名
  client:
    register-with-eureka: false    #设置是否注册自身服务,默认为true,这里设置为false
    fetch-registry: false    #设置是否获取注册列表,默认为true,这里设置为false
  server:
    enable-self-preservation: false    #设置是否启用自我保护机制,默认为true,这里设置为false
ログイン後にコピー
  1. 新しい Spring Boot スタートアップ クラスを作成し、@EnableEurekaServer アノテーションを追加して Eureka サービスを開始します。
@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekaServerApplication.class, args);
    }
}
ログイン後にコピー

上記の手順により、成功します。エウレカをベースにした登録センターが構築されました。ブラウザに http://localhost:8761 と入力して Eureka Server コンソールにアクセスすると、現在 Eureka Server にサービスが登録されていないことがわかります。

2. サービス プロバイダーの構築

サービス プロバイダーは、特定のビジネスを実装するマイクロサービスであり、他のマイクロサービスがその情報を検出して呼び出せるように、登録センターに自身の情報を登録します。提供されるサービス。

ここでは簡単な例を使用して、HTTP リクエストを受け入れて文字列を返す HTTP サービス プロバイダーを構築します。

Spring Cloud を使用してサービス プロバイダーを構築する手順は次のとおりです。

  1. 新しい Spring Boot プロジェクトを作成します。
  2. 依存関係の追加: pom.xml ファイルに次の依存関係を追加します:
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
ログイン後にコピー
ログイン後にコピー
  1. application.yml ファイルに次の構成を追加します:
server:
  port: 8080    #设置服务端口号

spring:
  application:
    name: test-service    #设置服务名称,用于注册到Eureka Server中

eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/    #设置Eureka Server地址
ログイン後にコピー
  1. 新しいコントローラー クラスを作成し、文字列を返すインターフェイスを追加します。
@RestController
public class TestController {
    @GetMapping("/test")
    public String test() {
        return "Hello World";
    }
}
ログイン後にコピー
  1. @EnableDiscoveryClient アノテーションをスタートアップ クラスに追加します。 using サービス検出機能を有効にするには:
@SpringBootApplication
@EnableDiscoveryClient
public class TestServiceApplication {
    public static void main(String[] args) {
        SpringApplication.run(TestServiceApplication.class, args);
    }
}
ログイン後にコピー

上記の手順により、サービス プロバイダーを正常に構築できました。ブラウザに http://localhost:8080/test と入力すると、ブラウザが提供するサービスにアクセスできます。すべてが正常であれば、Hello World の戻り値が表示されます。

3. サービス コンシューマの構築

サービス コンシューマは、他のマイクロサービスによって提供されるサービスを呼び出すマイクロサービスであり、登録センターに必要なマイクロサービスを問い合わせて、提供されるマイクロサービスを呼び出します。 。

Spring Cloud を使用してサービス コンシューマーを構築する手順は次のとおりです。

  1. 新しい Spring Boot プロジェクトを作成します。
  2. 依存関係の追加: pom.xml ファイルに次の依存関係を追加します:
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
ログイン後にコピー
ログイン後にコピー
  1. application.yml ファイルに次の構成を追加します:
server:
  port: 8090    #设置服务端口号

spring:
  application:
    name: test-consumer    #设置服务名称

eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/    #设置Eureka Server地址
ログイン後にコピー
  1. サービス プロバイダーを呼び出すための Service クラスを追加します:
@Service
public class TestService {
    @Autowired
    private RestTemplate restTemplate;

    @HystrixCommand(fallbackMethod = "fallback")
    public String test() {
        return restTemplate.getForObject("http://test-service/test", String.class);
    }

    public String fallback() {
        return "fallback";
    }
}
ログイン後にコピー
  1. サービス インターフェイスを公開するための Controller クラスを追加します:
@RestController
public class TestController {
    @Autowired
    private TestService testService;

    @GetMapping("/test")
    public String test() {
        return testService.test();
    }
}
ログイン後にコピー
  1. スタートアップ クラスに @EnableDiscoveryClient アノテーションを追加して、サービス検出機能を有効にします:
@SpringBootApplication
@EnableDiscoveryClient
@EnableCircuitBreaker    #启用熔断器功能
public class TestConsumerApplication {
    public static void main(String[] args) {
        SpringApplication.run(TestConsumerApplication.class, args);
    }

    @Bean
    @LoadBalanced    #启用负载均衡功能
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }
}
ログイン後にコピー

上記の手順を通じて、サービス コンシューマを正常に構築しました。サービスプロバイダーのサービスを実行し、正しい結果を返します。

4. API ゲートウェイの構築

API ゲートウェイはマイクロサービス システムの入り口であり、ルーティング、負荷分散、セキュリティ制御などの複数の役割を果たします。 Spring Cloud では、Zuul はさまざまなニーズを満たすことができる優れた API ゲートウェイ コンポーネントです。

Spring Cloud を使用して API ゲートウェイを構築する手順は次のとおりです。

  1. 新しい Spring Boot プロジェクトを作成します。
  2. 依存関係の追加: pom.xml ファイルに次の依存関係を追加します:
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-zuul</artifactId>
</dependency>
ログイン後にコピー
  1. application.yml ファイルに次の構成を追加します:
server:
  port: 8888    #设置服务端口号

spring:
  application:
    name: api-gateway    #设置服务名称

eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/    #设置Eureka Server地址

zuul:
  routes:
    test-service:
      path: /test/**
      serviceId: test-service    #设置服务提供者名称
ログイン後にコピー
  1. @EnableZuulProxy アノテーションをスタートアップ クラスに追加して、Zuul プロキシ機能を有効にします:
@SpringBootApplication
@EnableZuulProxy
public class ApiGatewayApplication {
    public static void main(String[] args) {
        SpringApplication.run(ApiGatewayApplication.class, args);
    }
}
ログイン後にコピー

上記の手順により、API ゲートウェイを正常に構築しました、 http://localhost:8888/test リクエストをサービス プロバイダーに転送し、正しい結果を返すことができます。

5. コンフィグレーション センターの構築

コンフィグレーション センターは、マイクロサービス システムの構成情報を一元管理することができ、より便利にシステムを構築することができます。

在Spring Cloud中,Config Server是一个优秀的配置中心组件,它可以与Eureka、Zuul等组件配合使用,构建一个完整的微服务体系。

使用Spring Cloud构建配置中心的步骤如下:

  1. 新建一个Spring Boot项目。
  2. 添加依赖:在pom.xml文件中添加如下依赖:
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-config-server</artifactId>
</dependency>
ログイン後にコピー
  1. 在application.yml文件中添加如下配置:
server:
  port: 8888    #设置服务端口号

spring:
  application:
    name: config-server    #设置服务名称

eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/    #设置Eureka Server地址

# 配置中心
spring:
  cloud:
    config:
      server:
        git:
          uri: https://github.com/{username}/{repository}.git    #设置git仓库地址
          username: {username}    #设置git用户名
          password: {password}    #设置git密码
          search-paths: respo1A/config, respo1B/config    #设置配置文件搜索路径
          default-label: main    #设置git分支
ログイン後にコピー
  1. 在启动类中添加@EnableConfigServer注解,用于启用Config Server功能:
@SpringBootApplication
@EnableConfigServer
public class ConfigServerApplication {
    public static void main(String[] args) {
        SpringApplication.run(ConfigServerApplication.class, args);
    }
}
ログイン後にコピー

通过以上的步骤,我们就成功构建了一个Config Server。我们可以将配置文件上传到git仓库中,然后通过http://localhost:8888/application-dev.properties的方式获取指定的配置文件。

六、 总结

通过以上的步骤,我们成功地构建了一个高可用、分布式的Spring Cloud微服务体系,包括了注册中心、服务提供者、服务消费者、API网关和配置中心。在实际应用过程中,我们可以通过这些组件自由组合,构建出更加复杂、高效的微服务体系。

以上が分散型で可用性の高い Spring Cloud マイクロサービス システムを構築するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PHP 分散システムのアーキテクチャと実践 PHP 分散システムのアーキテクチャと実践 May 04, 2024 am 10:33 AM

PHP 分散システム アーキテクチャは、ネットワークに接続されたマシン全体にさまざまなコンポーネントを分散することで、スケーラビリティ、パフォーマンス、およびフォールト トレランスを実現します。このアーキテクチャには、アプリケーション サーバー、メッセージ キュー、データベース、キャッシュ、ロード バランサーが含まれます。 PHP アプリケーションを分散アーキテクチャに移行する手順は次のとおりです。 サービス境界の特定 メッセージ キュー システムの選択 マイクロサービス フレームワークの採用 コンテナ管理への展開 サービスの検出

Workerman を使用して高可用性負荷分散システムを構築する方法 Workerman を使用して高可用性負荷分散システムを構築する方法 Nov 07, 2023 pm 01:16 PM

Workerman を使用して高可用性ロード バランシング システムを構築する方法には、特定のコード サンプルが必要です。現代のテクノロジーの分野では、インターネットの急速な発展に伴い、大量の同時リクエストを処理する必要がある Web サイトやアプリケーションがますます増えています。高可用性と高性能を実現するために、負荷分散システムは不可欠なコンポーネントの 1 つになっています。この記事では、PHP オープン ソース フレームワーク Workerman を使用して高可用性負荷分散システムを構築する方法を紹介し、具体的なコード例を示します。 1. ワーカーマンワークの紹介

Redis: 高可用性データベース システムを構築するための主要なテクノロジー Redis: 高可用性データベース システムを構築するための主要なテクノロジー Nov 07, 2023 am 09:39 AM

Redis: 高可用性データベース システムを構築するための主要テクノロジー インターネットの発展とビッグデータ時代の到来により、高可用性データベース システムの必要性がますます高まっています。インメモリ ストレージ NoSQL データベース システムである Redis は、その優れたパフォーマンスと柔軟なデータ モデルにより、高可用性データベース システムを構築するための重要なテクノロジーの 1 つとなっています。この記事では、Redis の高可用性テクノロジについて詳しく説明し、具体的なコード例を使用してそれを実証します。 1. 実際のアプリケーションにおける Redis の高可用性要件

Golang テクノロジーを使用して分散システムを設計する場合、どのような落とし穴に注意する必要がありますか? Golang テクノロジーを使用して分散システムを設計する場合、どのような落とし穴に注意する必要がありますか? May 07, 2024 pm 12:39 PM

分散システム設計時の Go 言語の落とし穴 Go は、分散システムの開発によく使用される言語です。ただし、Go を使用する場合は注意すべき落とし穴がいくつかあり、システムの堅牢性、パフォーマンス、正確性が損なわれる可能性があります。この記事では、いくつかの一般的な落とし穴を調査し、それらを回避する方法に関する実践的な例を示します。 1. 同時実行性の過剰使用 Go は、開発者が並行性を高めるためにゴルーチンを使用することを奨励する同時実行言語です。ただし、同時実行性を過剰に使用すると、ゴルーチンがリソースをめぐって競合し、コンテキスト切り替えのオーバーヘッドが発生するため、システムが不安定になる可能性があります。実際のケース: 同時実行性の過剰な使用は、サービス応答の遅延とリソースの競合につながり、CPU 使用率の高さとガベージ コレクションのオーバーヘッドとして現れます。

Golang 分散システムでキャッシュを使用するにはどうすればよいですか? Golang 分散システムでキャッシュを使用するにはどうすればよいですか? Jun 01, 2024 pm 09:27 PM

Go 分散システムでは、groupcache パッケージを使用してキャッシュを実装できます。このパッケージは、一般的なキャッシュ インターフェイスを提供し、LRU、LFU、ARC、FIFO などの複数のキャッシュ戦略をサポートします。グループキャッシュを活用すると、アプリケーションのパフォーマンスが大幅に向上し、バックエンドの負荷が軽減され、システムの信頼性が向上します。具体的な実装方法は以下の通りです。必要なパッケージのインポート、キャッシュプールサイズの設定、キャッシュプールの定義、キャッシュ有効期限の設定、同時値リクエスト数の設定、値リクエスト結果の処理を行います。

C++ ネットワーク プログラミングの高度な実践: 拡張性の高い分散システムの構築 C++ ネットワーク プログラミングの高度な実践: 拡張性の高い分散システムの構築 Nov 27, 2023 am 11:04 AM

インターネットの急速な発展に伴い、分散システムは現代のソフトウェア開発の標準となっています。分散システムでは、さまざまな複雑なビジネス ロジックを実装するためにノード間の効率的な通信が必要です。高性能言語である C++ には、分散システムの開発においても独自の利点があります。この記事では、C++ ネットワーク プログラミングの高度な実践方法を紹介し、拡張性の高い分散システムを構築するのに役立ちます。 1. C++ ネットワーク プログラミングの基礎知識 C++ ネットワーク プログラミングの高度な実践について説明する前に、

Golang 関数を使用して分散システムでメッセージ駆動型アーキテクチャを構築する Golang 関数を使用して分散システムでメッセージ駆動型アーキテクチャを構築する Apr 19, 2024 pm 01:33 PM

Golang 関数を使用してメッセージ駆動型アーキテクチャを構築するには、イベント ソースの作成とイベントの生成の手順が含まれます。イベントを保存および転送するためのメッセージ キューを選択します。 Go 関数をサブスクライバーとしてデプロイして、メッセージ キューからのイベントをサブスクライブして処理します。

高可用性分散システムを実装するための Golang ソリューション 高可用性分散システムを実装するための Golang ソリューション Jan 16, 2024 am 08:17 AM

Golang は、開発者が高可用性の分散システムを実装するのに役立つ、効率的で簡潔かつ安全なプログラミング言語です。この記事では、Golang が高可用性分散システムを実装する方法を検討し、いくつかの具体的なコード例を示します。分散システムの課題 分散システムは、複数の参加者が協力するシステムです。分散システムの参加者は、地理的位置、ネットワーク、組織構造などの複数の側面で分散された異なるノードである場合があります。分散システムを実装する場合、次のような多くの課題に対処する必要があります。

See all articles