微服务架构的兴起改变了开发人员构建和部署应用程序的方式。Spring Cloud是 Spring 生态系统的一部分,旨在简化开发和管理微服务的复杂性。在本综合指南中,我们将探索 Spring Cloud 及其功能,并通过构建简单的微服务应用程序来展示其功能。
什么是Spring Cloud?
Spring Cloud 是一组工具和库,为分布式系统中的常见模式和挑战提供解决方案,例如配置管理、服务发现、断路器和分布式跟踪。它基于 Spring Boot 构建,可以轻松创建可扩展、容错的微服务。
Spring Cloud 的主要特性
- 配置管理: Spring Cloud Config为分布式应用程序提供集中配置管理。
- 服务发现: Spring Cloud Netflix Eureka 支持服务注册和发现,以实现更好的负载平衡和容错能力。
- 断路器: Spring Cloud Netflix Hystrix 通过隔离服务之间的访问点来帮助防止级联故障。
- 分布式跟踪: Spring Cloud Sleuth 和 Zipkin 支持跨多个服务跟踪请求,以实现更好的可观察性和调试。
使用 Spring Cloud 构建简单的微服务应用程序
在此示例中,我们将创建一个简单的微服务应用程序,其中包含两个服务: auser-service和 an order-service。我们还将使用 Spring Cloud Config 和 Eureka 进行集中配置和服务发现。
先决条件
确保您的计算机上安装了以下软件:
- Java 8 或更高版本
- Maven 或 Gradle
- 您选择的 IDE
依赖关系
org.springframework.cloud spring-cloud-config-server org.springframework.cloud spring-cloud-starter-netflix-eureka-client org.springframework.cloud spring-cloud-starter-netflix-eureka-server org.springframework.cloud spring-cloud-starter-config org.springframework.cloud spring-cloud-starter-netflix-eureka-client org.springframework.boot spring-boot-starter-web
或者
//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配置服务器
使用 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 Server:Eureka 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 Client、Eureka Discovery和Web依赖项。为项目命名user-service。
将以下属性添加到您的bootstrap.yml文件中:
spring:
application:
name: user-service
cloud:
config:
uri: http://localhost:8888
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/创建一个简单REST controller的User 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 Client、Eureka Discovery和Web依赖项。为项目命名order-service。
将以下属性添加到您的bootstrap.yml文件中:
spring:
application:
name: order-service
cloud:
config:
uri: http://localhost:8888
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/创建一个简单REST controller的Order 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-server、eureka-server、user-service和应用程序。order-service所有服务运行后,您可以访问 Eureka 仪表板http://localhost:8761并查看已注册的服务。
您现在可以访问用户服务http://localhost:和订单服务http://localhost:。
结论
在本综合指南中,我们探索了 Spring Cloud 及其功能,并通过构建简单的微服务应用程序展示了其功能。通过利用 Spring Cloud 的强大功能,您可以简化微服务的开发和管理,使它们更具弹性、可扩展性并且更易于维护。使用 Spring Cloud 拥抱微服务世界,将您的应用程序提升到新的高度。










