当前位置:Java -> 释放Spring Cloud的微服务之力

释放Spring Cloud的微服务之力

微服务架构的兴起改变了开发人员构建和部署应用程序的方式。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构建简单的微服务应用程序

在这个例子中,我们将创建一个简单的微服务应用程序,包括两个服务:一个user-service和一个order-service。我们还将使用Spring Cloud Config和Eureka进行集中式配置和服务发现。

先决条件

确保您的计算机已安装以下内容:

  • Java 8或更高版本
  • Maven或Gradle
  • 您选择的集成开发环境

依赖项

<!-- 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 'org.springframework.cloud:spring-cloud-config-server'
implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client'

implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-server'

implementation 'org.springframework.cloud:spring-cloud-starter-config'
implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client'
implementation 'org.springframework.boot:spring-boot-starter-web'


步骤1:设置Spring Cloud Config服务器

使用Spring Initializr(https://start.spring.io/)创建一个新的Spring Boot项目,并添加Config ServerEureka 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);
    }
}


步骤3:创建用户服务

使用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控制器

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;
    }
}


步骤4:创建订单服务

使用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控制器

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-serviceorder-service应用程序。当所有服务都在运行时,您可以在http://localhost:8761访问Eureka仪表板,并查看注册的服务。

您现在可以在http://localhost:<user-service-port>/users/1访问用户服务,并在http://localhost:<order-service-port>/orders/1访问订单服务。

结论

在这篇全面的指南中,我们探索了Spring Cloud及其特性,并通过构建一个简单的微服务应用程序来展示其能力。通过利用Spring Cloud的力量,您可以简化微服务的开发和管理,使其更具弹性、可扩展,并更易于维护。借助Spring Cloud,拥抱微服务的世界,并将您的应用程序提升至新的高度。

推荐阅读: 3. js隐式类型转换

本文链接: 释放Spring Cloud的微服务之力