インターネット ビジネスの継続的な発展に伴い、マイクロサービス アーキテクチャは、ますます多くの企業で好まれるアーキテクチャ手法となっています。 Spring CloudはSpring Bootをベースとしたマイクロサービスフレームワークとして、分散性と高可用性の特徴を備えており、自社のマイクロサービスシステムの構築に利用する企業が増えています。
この記事では、Spring Cloud を使用して高可用性の分散マイクロサービス システムを構築する方法を紹介します。
1. 登録センターの構築
登録センターは、Spring Cloud マイクロサービス アーキテクチャのコア コンポーネントの 1 つであり、すべてのマイクロサービスは、自身の情報を登録センターに登録し、その後、他の情報を登録する必要があります。このサービスは登録センターで見つけてください。 Spring Cloudでは、Eurekaが非常に優れた登録センターコンポーネントであり、高可用性、分散性などの特徴を持ち、さまざまなシナリオのニーズに対応できるため、登録センターの構築にEurekaを採用することにしました。
Eureka を使用して登録センターを構築する前に、Eureka の基本概念をいくつか理解する必要があります。
Eureka を使用して登録センターを構築する手順は次のとおりです。
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency>
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
@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 を使用してサービス プロバイダーを構築する手順は次のとおりです。
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency>
server: port: 8080 #设置服务端口号 spring: application: name: test-service #设置服务名称,用于注册到Eureka Server中 eureka: client: service-url: defaultZone: http://localhost:8761/eureka/ #设置Eureka Server地址
@RestController public class TestController { @GetMapping("/test") public String test() { return "Hello World"; } }
@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 を使用してサービス コンシューマーを構築する手順は次のとおりです。
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency>
server: port: 8090 #设置服务端口号 spring: application: name: test-consumer #设置服务名称 eureka: client: service-url: defaultZone: http://localhost:8761/eureka/ #设置Eureka Server地址
@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"; } }
@RestController public class TestController { @Autowired private TestService testService; @GetMapping("/test") public String test() { return testService.test(); } }
@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 ゲートウェイを構築する手順は次のとおりです。
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-zuul</artifactId> </dependency>
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 #设置服务提供者名称
@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构建配置中心的步骤如下:
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-config-server</artifactId> </dependency>
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分支
@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 サイトの他の関連記事を参照してください。