ホームページ  >  記事  >  Java  >  Spring Cloud でマイクロサービスの力を解き放つ

Spring Cloud でマイクロサービスの力を解き放つ

DDD
DDDオリジナル
2023-09-08 10:23:09693ブラウズ

マイクロサービス アーキテクチャの台頭により、開発者がアプリケーションを構築およびデプロイする方法が変わりました。 Spring Cloud は、マイクロサービスの開発と管理の複雑さを簡素化するように設計された Spring エコシステムの一部です。 この包括的なガイドでは、Spring Cloud とその機能を調査し、シンプルなマイクロサービス アプリケーションを構築することでその機能を実証します。

Spring Cloud とは何ですか?

Spring Cloud は、構成管理、サービス検出、サーキット ブレーカー、分散トラックなど、分散システムの一般的なパターンと課題に対するソリューションを提供するツールとライブラリのセットです。 。 これは Spring Boot 上に構築されており、スケーラブルでフォールトトレラントなマイクロサービスを簡単に作成できます。

Spring Cloud の主な機能

  1. 構成管理: Spring Cloud Config が配布されていますこのアプリケーションは、一元的な 構成管理を提供します。
  2. サービス検出: Spring Cloud Netflix Eureka は、より優れた負荷分散とフォールト トレランスを実現するために、サービス登録と検出をサポートしています。
  3. サーキットブレーカー: Spring Cloud Netflix Hystrix は、サービス間でアクセス ポイントを分離することで、連鎖的な障害の防止に役立ちます。
  4. 分散トレース: Spring Cloud Sleuth と Zipkin は、可観測性とデバッグを向上させるために、複数のサービスにわたるリクエストのトレースをサポートしています。

Spring Cloud を使用して単純なマイクロサービス アプリケーションを構築する

この例では、2 つの要素を含む単純なマイクロサービス アプリケーションを作成します。サービス:user-serviceorder-serviceまた、一元化された構成とサービス検出のために Spring Cloud Config と Eureka も使用します。

前提条件

次のソフトウェアがコンピュータにインストールされていることを確認してください:

  • #Java 8 以降
  • Maven または Gradle
  • お好みの IDE

依存関係

<!-- maven -->
<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-config-server</artifactId>
</dependency>
<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
</dependency>


または

##

//Gradle 
implementation &#39;org.springframework.cloud:spring-cloud-config-server&#39;
implementation &#39;org.springframework.cloud:spring-cloud-starter-netflix-eureka-client&#39;
implementation &#39;org.springframework.cloud:spring-cloud-starter-netflix-eureka-server&#39;
implementation &#39;org.springframework.cloud:spring-cloud-starter-config&#39;
implementation &#39;org.springframework.cloud:spring-cloud-starter-netflix-eureka-client&#39;
implementation &#39;org.springframework.boot:spring-boot-starter-web&#39;


##ステップ 1: Spring Cloud 構成サーバーをセットアップする

Spring Initializr (https://start.spring.io/) を使用して新しい Spring Boot プロジェクトを作成し、

Config Server Eureka Discovery 依存関係。 プロジェクトに名前を付けますconfig-server次のプロパティを

application.yml ファイルに追加します:

server:
  port: 8888
spring:
  application:
    name: config-server
  cloud:
    config:
      server:
        git:
          uri: https://github.com/your-username/config-repo.git # Replace with your Git repository URL
eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/

通过将以下注释添加到您的主类中来启用 和Config ServerEureka Client

import org.springframework.cloud.config.server.EnableConfigServer;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
@EnableConfigServer
@EnableEurekaClient
@SpringBootApplication
public class ConfigServerApplication {
    public static void main(String[] args) {
        SpringApplication.run(ConfigServerApplication.class, args);
    }

第2步:设置Spring Cloud Eureka服务器

使用Spring Initializr创建一个新的 Spring Boot 项目并添加Eureka Server依赖项。为项目命名eureka-server

将以下属性添加到您的application.yml文件中:

server:
  port: 8761
spring:
  application:
    name: eureka-server
eureka:
  client:
    registerWithEureka: false
    fetchRegistry: false

通过将以下注释添加到主类来启用 Eureka Server:

import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
@EnableEurekaServer
@SpringBootApplication
public class EurekaServerApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekaServerApplication.class, args);
    }
}

第三步:创建用户服务

使用 Spring Initializr 创建一个新的 Spring Boot 项目并添加Config ClientEureka DiscoveryWeb依赖项。为项目命名user-service

将以下属性添加到您的bootstrap.yml文件中:

spring:
  application:
    name: user-service
  cloud:
    config:
      uri: http://localhost:8888
eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/

创建一个简单REST controllerUser Service

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class UserController {
    @GetMapping("/users/{id}")
    public String getUser(@PathVariable("id") String id) {
        return "User with ID: " + id;
    }
}

第四步:创建订单服务

使用 Spring Initializr 创建一个新的 Spring Boot 项目并添加Config ClientEureka DiscoveryWeb依赖项。为项目命名order-service

将以下属性添加到您的bootstrap.yml文件中:

spring:
  application:
    name: order-service
  cloud:
    config:
      uri: http://localhost:8888
eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/

创建一个简单REST controllerOrder Service

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class OrderController {
    @GetMapping("/orders/{id}")
    public String getOrder(@PathVariable("id") String id) {
        return "Order with ID: " + id;
    }
}

第 5 步:运行应用程序

按以下顺序启动config-servereureka-serveruser-service和应用程序。order-service所有服务运行后,您可以访问 Eureka 仪表板http://localhost:8761并查看已注册的服务。

您现在可以访问用户服务http://localhost:0b167090b1669846200c0675170164bd/users/1和订单服务http://localhost:a31569b7d36261b492b7c8937c63c67c/orders/1

结论

在本综合指南中,我们探索了 Spring Cloud 及其功能,并通过构建简单的微服务应用程序展示了其功能。通过利用 Spring Cloud 的强大功能,您可以简化微服务的开发和管理,使它们更具弹性、可扩展性并且更易于维护。使用 Spring Cloud 拥抱微服务世界,将您的应用程序提升到新的高度。

以上がSpring Cloud でマイクロサービスの力を解き放つの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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