>  기사  >  Java  >  분산형 고가용성 Spring Cloud 마이크로서비스 시스템 구축

분산형 고가용성 Spring Cloud 마이크로서비스 시스템 구축

王林
王林원래의
2023-06-22 09:06:25993검색

인터넷 비즈니스가 지속적으로 발전함에 따라 마이크로서비스 아키텍처는 점점 더 많은 기업에서 선호하는 아키텍처 방법이 되었습니다. Spring Boot 기반의 마이크로서비스 프레임워크로서 Spring Cloud는 분산성과 고가용성이라는 특징을 가지고 있으며, 이를 활용하여 자체 마이크로서비스 시스템을 구축하는 기업이 늘어나고 있습니다.

이 기사에서는 Spring Cloud를 사용하여 고가용성 분산 마이크로서비스 시스템을 구축하는 방법을 소개합니다.

1. 등록 센터 구축

등록 센터는 Spring Cloud 마이크로서비스 아키텍처의 핵심 구성 요소 중 하나입니다. 모든 마이크로서비스는 등록 센터에 자체 정보를 등록해야 하며, 다른 서비스는 등록을 통해 이 서비스를 찾을 수 있습니다. 센터. Spring Cloud에서 Eureka는 매우 뛰어난 등록 센터 구성 요소입니다. 이는 고가용성, 분산 및 기타 특성을 가지며 다양한 시나리오의 요구 사항을 충족할 수 있습니다. 따라서 우리는 Eureka를 사용하여 등록 센터를 구축하기로 결정했습니다.

Eureka를 사용하여 등록 센터를 구축하기 전에 Eureka의 몇 가지 기본 개념을 이해해야 합니다.

  1. Eureka 서버: Eureka의 서버 측, 클라이언트로부터 등록 정보를 받아들이고 서비스 인스턴스의 정보 목록을 유지하는 데 사용됩니다.
  2. Eureka 클라이언트: Eureka 서버에 자체 서비스를 등록하는 데 사용되는 Eureka의 클라이언트입니다.
  3. 서비스 인스턴스: 실행 중인 마이크로서비스 인스턴스입니다. 서비스 인스턴스에는 서비스의 IP 주소, 포트 번호, 상태 및 기타 정보가 포함됩니다.

Eureka를 사용하여 등록 센터를 구축하는 단계는 다음과 같습니다.

  1. 새 Spring Boot 프로젝트를 만듭니다.
  2. 종속성 추가: Eureka 서비스를 시작하는 데 사용되는 pom.EnableEurekaServer 주석에 다음 종속성을 추가합니다.
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
    위 단계를 통해 Eureka 기반 등록 센터를 성공적으로 구축했습니다. 브라우저에 http://localhost:8761을 입력하여 Eureka Server 콘솔에 액세스하면 현재 Eureka Server에 등록된 서비스가 없는 것을 확인할 수 있습니다.
  1. 2. 서비스 제공자 구축
    서비스 제공자는 특정 비즈니스를 구현하는 마이크로서비스입니다. 다른 마이크로서비스가 이를 발견하고 제공하는 서비스를 호출할 수 있도록 등록 센터에 자체 정보를 등록합니다.
  1. @EnableEurekaServer注解,用于启动Eureka服务:
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

通过以上的步骤,我们就成功构建了一个基于Eureka的注册中心。我们可以在浏览器中输入http://localhost:8761访问Eureka Server的控制台,看到当前没有任何服务注册到Eureka Server中。

二、 构建服务提供者

服务提供者是实现具体业务的微服务,它会向注册中心注册自己的信息,让其他的微服务能够发现它并调用它提供的服务。

我们在这里使用一个简单的示例,构建一个HTTP服务提供者,它能够接受HTTP请求,并返回一个字符串。

使用Spring Cloud构建服务提供者的步骤如下:

  1. 新建一个Spring Boot项目。
  2. 添加依赖:在pom.xml文件中添加如下依赖:
@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekaServerApplication.class, args);
    }
}
  1. 在application.yml文件中添加如下配置:
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
  1. 新建一个Controller类,并在其中添加一个返回字符串的接口:
server:
  port: 8080    #设置服务端口号

spring:
  application:
    name: test-service    #设置服务名称,用于注册到Eureka Server中

eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/    #设置Eureka Server地址
  1. 在启动类中添加@EnableDiscoveryClient注解,用于启用服务发现功能:
@RestController
public class TestController {
    @GetMapping("/test")
    public String test() {
        return "Hello World";
    }
}

通过以上的步骤,我们就成功构建了一个服务提供者。我们可以在浏览器中输入http://localhost:8080/test访问它提供的服务,如果一切正常,就可以看到Hello World的返回值。

三、 构建服务消费者

服务消费者是调用其他微服务提供的服务的微服务,它会向注册中心查询需要的微服务,然后调用该微服务提供的服务。

使用Spring Cloud构建服务消费者的步骤如下:

  1. 新建一个Spring Boot项目。
  2. 添加依赖:在pom.xml文件中添加如下依赖:
@SpringBootApplication
@EnableDiscoveryClient
public class TestServiceApplication {
    public static void main(String[] args) {
        SpringApplication.run(TestServiceApplication.class, args);
    }
}
  1. 在application.yml文件中添加如下配置:
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
  1. 添加一个Service类,用于调用服务提供者:
server:
  port: 8090    #设置服务端口号

spring:
  application:
    name: test-consumer    #设置服务名称

eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/    #设置Eureka Server地址
  1. 添加一个Controller类,用于暴露服务接口:
@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";
    }
}
  1. 在启动类中添加@EnableDiscoveryClient注解,用于启用服务发现功能:
@RestController
public class TestController {
    @Autowired
    private TestService testService;

    @GetMapping("/test")
    public String test() {
        return testService.test();
    }
}

通过以上的步骤,我们就成功构建了一个服务消费者,它可以调用服务提供者的服务并返回正确的结果。

四、 构建API网关

API网关是微服务体系的入口,它起到了路由、负载均衡、安全控制等多种作用。在Spring Cloud中,Zuul是一个优秀的API网关组件,可以满足我们的各种需求。

使用Spring Cloud构建API网关的步骤如下:

  1. 新建一个Spring Boot项目。
  2. 添加依赖:在pom.xml文件中添加如下依赖:
@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();
    }
}
  1. 在application.yml文件中添加如下配置:
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-zuul</artifactId>
</dependency>
  1. 在启动类中添加@EnableZuulProxy여기에서는 간단한 예를 사용하여 HTTP 요청을 수락하고 문자열을 반환할 수 있는 HTTP 서비스 공급자를 구축합니다.
Spring Cloud를 사용하여 서비스 공급자를 구축하는 단계는 다음과 같습니다.

새 Spring Boot 프로젝트를 생성합니다.

종속성 추가: pom. :

🎜
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    #设置服务提供者名称
    🎜서비스 검색 기능을 활성화하려면 시작 클래스에 @EnableDiscoveryClient 주석을 추가하세요. 🎜 🎜
    @SpringBootApplication
    @EnableZuulProxy
    public class ApiGatewayApplication {
        public static void main(String[] args) {
            SpringApplication.run(ApiGatewayApplication.class, args);
        }
    }
    🎜위의 단계를 통해 성공적으로 A 서비스 제공자를 구축했습니다. 브라우저에 http://localhost:8080/test를 입력하면 제공되는 서비스에 액세스할 수 있습니다. 모든 것이 정상이면 Hello World의 반환 값을 볼 수 있습니다. 🎜🎜3. 서비스 소비자 구축🎜🎜 서비스 소비자는 다른 마이크로서비스에서 제공하는 서비스를 호출하는 마이크로서비스입니다. 등록 센터에서 필요한 마이크로서비스를 쿼리한 다음 마이크로서비스에서 제공하는 서비스를 호출합니다. 🎜🎜Spring Cloud를 사용하여 서비스 소비자를 구축하는 단계는 다음과 같습니다. 🎜🎜🎜새 Spring Boot 프로젝트를 생성합니다. 🎜🎜종속성 추가: pom.
      🎜Controller 클래스를 추가하여 서비스 인터페이스를 노출합니다. 🎜🎜
      <dependency>
          <groupId>org.springframework.cloud</groupId>
          <artifactId>spring-cloud-config-server</artifactId>
      </dependency>
        🎜@를 추가합니다. 서비스 검색 기능 활성화를 위한 시작 클래스의 EnableDiscoveryClient 주석: 🎜🎜
        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分支
        🎜위 단계를 통해 서비스 공급자의 서비스를 호출하고 올바른 결과를 반환할 수 있는 서비스 소비자를 성공적으로 구축했습니다. 🎜🎜4. API 게이트웨이 구축🎜🎜API 게이트웨이는 마이크로서비스 시스템의 입구이며 라우팅, 로드 밸런싱, 보안 제어 등 다양한 역할을 수행합니다. Spring Cloud에서 Zuul은 다양한 요구 사항을 충족할 수 있는 탁월한 API 게이트웨이 구성 요소입니다. 🎜🎜Spring Cloud를 사용하여 API 게이트웨이를 구축하는 단계는 다음과 같습니다. 🎜🎜🎜새 Spring Boot 프로젝트를 생성합니다. 🎜🎜종속성 추가: Zuul 프록시 기능을 활성화하는 데 사용되는 pom. /서비스 제공자에게 요청하고 올바른 결과를 반환합니다. 🎜🎜5. 구성 센터 구축🎜🎜구성 센터에서는 마이크로서비스 시스템의 구성 정보를 중앙에서 관리할 수 있어 시스템을 보다 편리하게 구성할 수 있습니다. 🎜

        在Spring Cloud中,Config Server是一个优秀的配置中心组件,它可以与Eureka、Zuul等组件配合使用,构建一个完整的微服务体系。

        使用Spring Cloud构建配置中心的步骤如下:

        1. 新建一个Spring Boot项目。
        2. 添加依赖:在pom.xml文件中添加如下依赖:
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-config-server</artifactId>
        </dependency>
        1. 在application.yml文件中添加如下配置:
        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分支
        1. 在启动类中添加@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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.