インターネットとクラウド コンピューティングの発展に伴い、ソフトウェア システムの構築と展開にマイクロサービス アーキテクチャを採用する企業が増えています。マイクロサービス アーキテクチャでは、システムは複数の小さな自律的なサービス ユニットに分割され、それぞれが独自のアプリケーション、データ ストレージ、ビジネス ロジックを備えています。このアーキテクチャ スタイルの利点は、アプリケーションの復元性、拡張性、保守性が向上することです。ただし、マイクロサービス アーキテクチャには、サービス検出、負荷分散、フォールト トレランス、可視化などのいくつかの課題もあり、解決するには強力なマイクロサービス ガバナンス ツールが必要です。 Spring Cloud は Spring Boot に基づくマイクロサービス フレームワークであり、開発者がマイクロサービス アプリケーションをより簡単に構築および管理できるようにする一連のマイクロサービス ガバナンス テクノロジを提供します。
Spring Cloud コンテナは Spring Cloud のコアコンポーネントの 1 つであり、サービスの登録と検出、構成管理、サーキット ブレーカーなどのさまざまなマイクロサービス ガバナンス機能を提供します。この記事では、Spring Cloud コンテナを使用してマイクロサービス ガバナンスを実装する方法を紹介します。
1. サービスの登録と検出
マイクロサービス アーキテクチャでは、サービス間の呼び出しにはサービスのネットワーク アドレスを知る必要があり、サービス アドレスは頻繁に変更されます。これには、サービス アドレスを管理するためのサービス登録および検出メカニズムが必要です。 Spring Cloud コンテナは、この問題を解決するために Eureka を提供します。
Eureka は、Netflix のオープンソースのサービス登録および検出コンポーネントであり、RESTful API に基づいてサービスの登録および検出の基本機能を実装するだけでなく、サービスの健全性チェック、負荷分散、フェイルオーバーなどの高度な機能も提供します。 Spring Cloud での Eureka の使用は非常に簡単で、関連する依存関係を Spring Boot プロジェクトに導入し、application.yml または application.properties を設定するだけです。以下は、単純な application.yml 設定例です:
spring: application: name: service-provider cloud: config: uri: http://config-server:8888 # 配置中心地址 consul: host: consul-server # 基于Consul模式时Consul服务器地址 profiles: active: dev eureka: client: serviceUrl: defaultZone: http://eureka-server:8761/eureka/ # Eureka注册中心地址 instance: preferIpAddress: true server: enable-self-preservation: false # 测试场景,不关闭则Eureka客户端会每隔30s向Eureka Server发送一次心跳包作为健康检查,因为测试场景是手动杀掉实例,所以不执行自我保护
上記の設定ファイルでは、Eureka 登録センターを使用し、Spring Cloud Config 設定センターと Consul を使用して、サービス名をサービスプロバイダーとして設定しました。これらの設定項目は必要に応じて変更できることがわかります。 Eureka 登録センターを使用すると、スタートアップ クラスに @EnableEurekaClient アノテーションを追加するだけでサービスを Eureka Server に登録できるため、非常に便利です。
2. 構成管理
マイクロサービス アーキテクチャでは、サービスの構成管理も非常に重要な問題です。 Spring Cloud は、マイクロサービス構成管理を実装するための Config Server コンポーネントを提供します。Config Server は構成情報をローカル (Git、Svn などのコード管理ツール) またはリモート リポジトリ (GitHub など) に保存でき、クライアントは Restful API を使用して構成を取得できます。情報を取得し、キャッシュを自動的に更新します。
Spring Cloud での Config Server の使用は非常に簡単で、関連する依存関係を Spring Boot プロジェクトに導入し、application.yml または application.properties を設定するだけです。以下は、単純な application.yml 構成の例です。
spring: application: name: config-server cloud: config: server: git: uri: https://github.com/Alice52/spring-cloud-config-example.git # 配置文件所在的远程仓库 search-paths: {config} # 配置文件所在的搜索路径 server: port: 8888 # 配置Server的端口
上記の構成ファイルでは、構成サーバーの名前を config-server として構成し、開始ポートを 8888 として構成し、構成の管理に Git を使用しました。 file. 、構成ファイルのアドレスは https://github.com/Alice52/spring-cloud-config-example.git です。クライアントの場合は、@EnableAutoConfiguration および @EnableConfigServer アノテーションをスタートアップ クラスに追加するだけで、クライアントが Config Server から構成情報を取得できるようになります。
3. サービス呼び出し
マイクロサービス アーキテクチャでは、サービスはネットワーク ベースの RESTful API を介して相互に呼び出します。ただし、サービス呼び出しについては、負荷分散が必要になる場合があります。サービスの低下や停止を防ぐには、サーキットブレーカー保護が必要です。
Spring Cloud は、ロード バランシング機能を提供するためのリボン コンポーネントを提供し、サーキット ブレーカー機能を提供するための Hystrix コンポーネントも提供します。 Spring Cloud でのリボンと Hystrix の使用も非常に簡単で、関連する依存関係を Spring Boot プロジェクトに導入し、application.yml または application.properties を設定するだけです。以下は、単純な application.yml 設定例です。
spring: application: name: service-consumer server: port: 8080 eureka: client: serviceUrl: defaultZone: http://localhost:8761/eureka/ instance: preferIpAddress: true instanceId: ${spring.cloud.client.ipAddress}:${spring.application.name}:${server.port} server: enable-self-preservation: false # 测试场景,不关闭则Eureka客户端会每隔30s向Eureka Server发送一次心跳包作为健康检查,因为测试场景是手动杀掉实例,所以不执行自我保护
上記の設定ファイルでは、サービス名を service-consumer として設定し、Eureka 登録センターを使用し、自己保護メカニズムを有効にしました。 Eureka Server がサービスの障害を検出して削除するのを防ぐためのサービス。クライアントがサービスを呼び出すと、リボンを使用して負荷分散を行い、サービスの高可用性と安定性を確保するために Hystrix をサーキット ブレーカーとして構成します。
4. 概要
この記事では、Spring Cloud コンテナーを使用して、サービスの登録と検出、構成管理、サービス呼び出しなどのマイクロサービス ガバナンスを実装する方法を紹介します。 Spring Cloud が提供する Eureka、Config Server、Ribbon、Hystrix などのコンポーネントを通じて、開発者はマイクロサービス アプリケーションをより簡単に構築および管理できます。もちろん、マイクロサービス アーキテクチャには、サービス ゲートウェイ、分散追跡、秘密鍵管理など、他にも多くの側面が関係しますが、これらの内容については、次の記事で紹介します。
以上がSpring Cloudコンテナに基づいたマイクロサービスガバナンスの実装の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。