使用 Spring Cloud 释放微服务的力量

DDJ
DDJ 原创
2023-09-08 11:24:06 343浏览

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

在此示例中,我们将创建一个简单的微服务应用程序,其中包含两个服务: auser-service和 an order-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 '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 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);
    }
}

第三步:创建用户服务

使用 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:<user-service-port>/users/1和订单服务http://localhost:<order-service-port>/orders/1

结论

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

以上就是使用 Spring Cloud 释放微服务的力量的详细内容,更多请关注php中文网其它相关文章!

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。