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

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

王林
王林オリジナル
2023-06-22 09:06:251012ブラウズ

インターネット ビジネスの継続的な発展に伴い、マイクロサービス アーキテクチャは、ますます多くの企業で好まれるアーキテクチャ手法となっています。 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 までご連絡ください。