技術共有

SpringCloudの面接でよく聞かれる質問

2024-07-08

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Spring Cloud は、Spring Boot に基づくマイクロサービス アーキテクチャ ソリューションであり、マイクロサービスを構築および管理するための多くのツールとフレームワークが含まれています。インタビューでは、Spring Cloud に関連する質問は通常、その中核となる概念、コンポーネント、一般的なパターン、ソリューションについて取り上げられます。 Spring Cloud の面接中によくある質問とその回答をいくつか示します。

1. Spring Cloud のコアコンポーネントは何ですか?

Spring Cloud には多くのコアコンポーネントが含まれており、一般的なコンポーネントは次のとおりです。

  • Spring クラウド構成: 構成ファイルの一元管理と動的更新をサポートする分散構成管理ツール。
  • スプリングクラウド Netflix: Eureka (サービスの登録と検出)、Ribbon (クライアントの負荷分散)、Hystrix (サーキット ブレーカー)、Zuul (API ゲートウェイ) などが含まれます。
  • Spring クラウド ゲートウェイ: Zuul に代わる API ゲートウェイ。より効率的なルーティングおよびフィルタリング機能を提供します。
  • 春の雲探偵: Zipkin または Yeter と統合された分散トレース ツール。
  • 春の雲の流れ: さまざまなメッセージ ミドルウェア (Kafka、RabbitMQ など) をサポートするメッセージ駆動型のマイクロサービス フレームワーク。
  • 春雲バス: イベント バス。通常は構成を動的に更新するために使用されます。
  • スプリングクラウドオープンフェイン: HTTP 呼び出しを簡素化する宣言型 HTTP クライアント。

2. サービスの登録と検出とは何ですか? Spring Cloudはどのように実装されていますか?

サービスの登録と検出はマイクロサービス アーキテクチャの重要な概念であり、サービス インスタンスの動的な登録と検出を指します。サービス登録センターは、サービス インスタンスのリストを維持する責任を負い、各マイクロサービスは開始時にそのアドレスとメタデータをサービス登録センターに登録します。

Spring Cloud で一般的に使用されるサービス登録および検出コンポーネントは、Netflix Eureka です。

サービスの登録と検出のプロセス

  1. サービス登録: サービスインスタンスは、起動時に自身の情報(サービス名、インスタンスアドレスなど)をエウレカサーバーに登録します。
  2. サービスディスカバリ: クライアントはサービスを呼び出すときに、呼び出す必要があるサービス インスタンスのリストを Eureka Server に問い合わせます。

サンプルコード

  • Eureka サーバーを構成します。
 

Javaのコードをコピーする

@EnableEurekaServer @SpringBootApplication public class EurekaServerApplication { public static void main(String[] args) { SpringApplication.run(EurekaServerApplication.class, args); } }

  • Eureka クライアントを構成します。
 

Javaのコードをコピーする

@EnableEurekaClient @SpringBootApplication public class EurekaClientApplication { public static void main(String[] args) { SpringApplication.run(EurekaClientApplication.class, args); } }

3. 負荷分散とは何ですか? Spring Cloudはどのように実装されていますか?

負荷分散は、リクエストを複数のサービス インスタンスに分散してシステムの可用性とパフォーマンスを向上させるテクノロジーです。 Spring Cloud は、主にリボンを通じて実装されるクライアント側の負荷分散ソリューションを提供します。

リボンの主な特徴

  • 一連の負荷分散戦略 (ラウンドロビン、ランダム、加重など) を提供します。
  • サービスリストの動的更新をサポートします。

サンプルコード

 

Javaのコードをコピーする

@LoadBalanced @Bean public RestTemplate restTemplate() { return new RestTemplate(); }

4. ヒューズとは何ですか? Spring Cloudはどのように実装されていますか?

サーキット ブレーカーは、サービス間の連鎖的な障害を防ぐために使用される保護メカニズムです。サービス インスタンスが利用できないことを検出すると、利用できないインスタンスの呼び出しを続行することを避けるために、エラー応答を直接返します。

Spring Cloud は Netflix Hystrix を使用してサーキット ブレーカーを実装します。

Hystrix の主な特徴

  • サービスコールを監視し、分離します。
  • フォールバック機構 (Fallback) を提供します。
  • リアルタイムのインジケーター監視を提供します。

サンプルコード

 

Javaのコードをコピーする

@HystrixCommand(fallbackMethod = "fallbackMethod") public String someMethod() { // 可能会失败的服务调用 } public String fallbackMethod() { return "Fallback response"; }

5. APIゲートウェイとは何ですか? Spring Cloudはどのように実装されていますか?

API ゲートウェイは、マイクロサービス アーキテクチャの重要なコンポーネントであり、クライアント リクエストを均一に管理およびルーティングするために使用され、認証、電流制限、ロギングなどの機能を提供します。

Spring Cloud は、次の 2 つの API ゲートウェイ ソリューションを提供します。

  • ズール: Netflix が提供する API ゲートウェイ ソリューション。Spring Cloud Netflix エコシステムで一般的に使用されます。
  • Spring クラウド ゲートウェイ: Spring チームによって開発された API ゲートウェイは、より高いパフォーマンスとより強力な機能を備えており、通常は Zuul の代替として使用されます。

Spring Cloud Gateway のサンプルコード

 

yamlコードをコピー

spring: cloud: gateway: routes: - id: some_route uri: http://some-service predicates: - Path=/some-path/** filters: - StripPrefix=1

6. Spring Cloud Config とは何ですか?どのように機能するのでしょうか?

Spring Cloud Config は、複数のマイクロサービスの構成ファイルを一元管理するために使用される分散構成管理ツールであり、構成の動的更新をサポートします。

動作原理

  1. 構成ストレージ: 設定ファイルは集中リポジトリ (Git、SVN、ファイル システムなど) に保存されます。
  2. サーバーの構成: Spring Cloud Config Server は、集中リポジトリから設定ファイルを読み取り、クライアントに提供します。
  3. クライアントの構成: Spring Cloud Config Client は、起動時に Config Server から構成ファイルを要求し、構成をロードして適用します。

サンプルコード

  • サーバーを構成します。
 

Javaのコードをコピーする

@EnableConfigServer @SpringBootApplication public class ConfigServerApplication { public static void main(String[] args) { SpringApplication.run(ConfigServerApplication.class, args); } }

  • クライアントを構成する (bootstrap.yml):
 

yamlコードをコピー

spring: application: name: some-service cloud: config: uri: http://localhost:8888

7. 分散トレースとは何ですか? Spring Cloudはどのように実装されていますか?

分散トレースは、複数のサービスにわたるリクエスト リンクを追跡するために使用され、開発者が分散システムを監視およびデバッグするのに役立ちます。

Spring Cloud Sleuth は、Zipkin または Yeter を統合する分散トレーシング ソリューションを提供します。

Spring Cloud Sleuth の主な機能

  • 一意のトラッキング ID とスパン ID をアプリに自動的に追加します。
  • ログとトレース データの相関関係を提供します。
  • Zipkin または Yeter を統合して、一元的な追跡データの収集と表示を行います。

サンプルコード

 

xmlコードをコピーする