インターネット ビジネスの継続的な発展に伴い、単一のアプリケーションでは複雑なビジネス ニーズを満たすことができなくなり、マイクロサービス アーキテクチャが徐々に一般的なビジネス アーキテクチャ モデルになってきました。 Spring Cloudはマイクロサービスアーキテクチャ体系における重要な支援技術の一つであり、そのサービス発見・登録機能の実装は非常に重要である。この記事では、Spring Cloud のサービス登録と検出機能について詳しく説明します。
マイクロサービス アーキテクチャでは、各機能モジュールは独立したサービスであり、サービス間で通信する必要があるため、サービスを管理するメカニズムが必要です。サービス間。サービス登録および発見メカニズムは、サービスが他のサービスを動的に登録および発見し、通信および連携できるようにするメカニズムです。
Spring Cloud は、Eureka や consul などのさまざまな登録センターを統合するサービス登録および検出メカニズムを提供します。その中でも、Eureka は高い可用性とパフォーマンスを備えた最も人気のある登録センターの 1 つです。
サービス登録の目的は、他のサービスがそのサービスを使用できるように、登録センターにサービスを登録することです。 Spring Cloud では、@EnableDiscoveryClient アノテーションを使用してサービスの検出および登録機能を有効にすると同時に、関連する構成情報を application.yml ファイルに追加する必要があります。
server: port: 8080 spring: application: name: service-demo eureka: client: service-url: defaultZone: http://localhost:8000/eureka/
上記の構成では、application.name はサービスの名前、eureka.client.service-url.defaultZone は登録センターのアドレスです。
サービス ディスカバリの目的は、登録センターから必要なサービス インスタンスを見つけて、負荷分散ポリシーに従ってこれらのサービス インスタンスを呼び出すことです。 Spring Cloud は、Ribbon、Feign など、サービス検出と負荷分散のためのさまざまなソリューションを提供します。
リボンを使用してサービス検出と負荷分散を実装する場合は、関連する依存関係を pom.xml ファイルに追加する必要があります。サンプル コードは次のとおりです。
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> <version>2.2.6.RELEASE</version> </dependency>
まず、@EnableDiscoveryClient アノテーションをスタートアップ クラスに追加して、サービスの登録および検出機能を有効にする必要があります。次に、@LoadBalanced アノテーションを使用して負荷分散された RestTemplate インスタンスを作成し、このインスタンスを使用して他のサービスを呼び出すことができます。サンプル コードは次のとおりです:
@RestController public class ServiceController { @Autowired private RestTemplate restTemplate; @RequestMapping("/getProduct") public String getProduct() { String result = restTemplate.getForObject("http://product-service/product", String.class); return "get product from " + result; } @Bean @LoadBalanced public RestTemplate restTemplate() { return new RestTemplate(); } } @SpringBootApplication @EnableDiscoveryClient public class ServiceDemoApplication { public static void main(String[] args) { SpringApplication.run(ServiceDemoApplication.class, args); } }
上記のコードでは、restTemplate を使用します。 .getForObject() メソッドを使用して他のサービスを呼び出す場合は、「http://product-service/product」など、実際のアドレスの代わりに「アプリケーション名」を使用する必要があります。ここで、product-service はサービス名です。
Spring Cloud は、サービス登録および検出機能を提供し、各サービス インスタンスが相互に検出して呼び出しできるようにします。このメカニズムにより、マイクロサービス アーキテクチャの各コンポーネントの管理とスケジュールがより便利になり、システム全体の可用性と拡張性が向上します。
以上がSpring Cloud マイクロサービスでのサービスの登録と検出の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。