>Java >java지도 시간 >Spring Cloud 컨테이너 기반 마이크로서비스 거버넌스 구현

Spring Cloud 컨테이너 기반 마이크로서비스 거버넌스 구현

WBOY
WBOY원래의
2023-06-22 20:43:021369검색

인터넷과 클라우드 컴퓨팅의 발전으로 점점 더 많은 회사가 소프트웨어 시스템을 구축하고 배포하기 위해 마이크로서비스 아키텍처를 채택하기 시작했습니다. 마이크로서비스 아키텍처에서 시스템은 각각 고유한 애플리케이션, 데이터 스토리지 및 비즈니스 로직을 갖춘 여러 개의 소규모 자율 서비스 단위로 분할됩니다. 이 아키텍처 스타일의 장점은 애플리케이션의 탄력성, 확장성 및 유지 관리 가능성이 향상된다는 것입니다. 그러나 마이크로서비스 아키텍처는 서비스 검색, 로드 밸런싱, 내결함성, 시각화 등과 같은 몇 가지 문제를 해결하기 위해 강력한 마이크로서비스 거버넌스 도구가 필요합니다. Spring Cloud는 Spring Boot를 기반으로 하는 마이크로서비스 프레임워크로 개발자가 마이크로서비스 애플리케이션을 보다 편리하게 구축하고 관리할 수 있도록 일련의 마이크로서비스 거버넌스 기술을 제공합니다.

Spring Cloud 컨테이너는 Spring Cloud의 핵심 구성 요소 중 하나이며 서비스 등록 및 검색, 구성 관리, 회로 차단기 등과 같은 다양한 마이크로서비스 거버넌스 기능을 제공합니다. 이 기사에서는 Spring Cloud 컨테이너를 사용하여 마이크로서비스 거버넌스를 구현하는 방법을 소개합니다.

1. 서비스 등록 및 검색

마이크로서비스 아키텍처에서 서비스 간 호출을 위해서는 서비스의 네트워크 주소를 알아야 하며 서비스 주소는 자주 변경됩니다. 이를 위해서는 서비스 주소를 관리하기 위한 서비스 등록 및 검색 메커니즘이 필요합니다. Spring Cloud 컨테이너는 이 문제를 해결하기 위해 Eureka를 제공합니다.

Eureka는 Netflix의 오픈소스 서비스 등록 및 검색 구성 요소로 RESTful API를 기반으로 서비스 등록 및 검색의 기본 기능을 구현하고 서비스 상태 확인, 로드 밸런싱, 장애 조치 등의 고급 기능도 제공합니다. Spring Cloud에서 Eureka를 사용하는 것은 매우 간단합니다. Spring Boot 프로젝트에 관련 종속성을 도입하고 application.yml 또는 application.properties를 구성하기만 하면 됩니다. 다음은 간단한 application.yml 구성 예입니다.

spring:
  application:
    name: service-provider
  cloud:
    config:
      uri: http://config-server:8888 # 配置中心地址
    consul:
      host: consul-server # 基于Consul模式时Consul服务器地址
  profiles:
    active: dev
eureka:
  client:
    serviceUrl:
      defaultZone: http://eureka-server:8761/eureka/ # Eureka注册中心地址
  instance:
    preferIpAddress: true
  server:
    enable-self-preservation: false # 测试场景,不关闭则Eureka客户端会每隔30s向Eureka Server发送一次心跳包作为健康检查,因为测试场景是手动杀掉实例,所以不执行自我保护

위 구성 파일에서는 Eureka 등록 센터와 Spring Cloud Config 구성 센터 및 Consul 서비스 검색을 사용하여 서비스 이름을 service-provider로 구성했습니다. 구성 항목은 필요에 따라 수정될 수 있습니다. 유레카 등록 센터를 사용하는 것은 매우 편리합니다. 서비스를 유레카 서버에 등록하려면 시작 클래스에 @EnableEurekaClient 주석을 추가하기만 하면 됩니다.

2. 구성 관리

마이크로서비스 아키텍처에서는 서비스 구성 관리도 매우 중요한 문제입니다. Spring Cloud는 마이크로서비스 구성 관리를 구현하기 위해 구성 서버 구성 요소를 제공하여 구성 정보를 로컬(Git, Svn과 같은 코드 관리 도구) 또는 원격 저장소(예: GitHub)에 저장할 수 있으며 클라이언트는 Restful API를 사용하여 구성을 얻을 수 있습니다. 정보를 저장하고 자동으로 캐시를 새로 고칩니다.

Spring Cloud에서 Config Server를 사용하는 것은 매우 간단합니다. Spring Boot 프로젝트에 관련 종속성을 도입하고 application.yml 또는 application.properties를 구성하기만 하면 됩니다. 다음은 간단한 application.yml 구성 예입니다.

spring:
  application:
    name: config-server
  cloud:
    config:
      server:
        git:
          uri: https://github.com/Alice52/spring-cloud-config-example.git # 配置文件所在的远程仓库
          search-paths: {config} # 配置文件所在的搜索路径
server:
  port: 8888 # 配置Server的端口

위 구성 파일에서 구성 서버 이름은 config-server, 시작 포트는 8888로 구성하고 Git을 사용하여 구성 파일을 관리했습니다. https://github.com/Alice52/spring-cloud-config-example.git입니다. 클라이언트의 경우 클라이언트가 구성 서버에서 구성 정보를 얻을 수 있도록 @EnableAutoConfiguration 및 @EnableConfigServer 주석을 시작 클래스에 추가하기만 하면 됩니다.

3. 서비스 호출

마이크로 서비스 아키텍처에서는 서비스가 네트워크 기반 RESTful API를 통해 서로 호출합니다. 그러나 서비스 호출의 경우 로드 밸런싱이 필요한 경우도 있으며 서비스 저하 또는 다운타임을 방지하기 위해 회로 차단기 보호도 필요합니다. .

Spring Cloud는 로드 밸런싱 기능을 제공하는 Ribbon 컴포넌트를 제공하고, 회로 차단기 기능을 제공하는 Hystrix 컴포넌트도 제공합니다. Spring Cloud에서 Ribbon과 Hystrix를 사용하는 것도 매우 간단합니다. Spring Boot 프로젝트에 관련 종속성을 도입하고 application.yml 또는 application.properties를 구성하기만 하면 됩니다. 다음은 간단한 application.yml 구성 예입니다.

spring:
  application:
    name: service-consumer
server:
  port: 8080
eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/
  instance:
    preferIpAddress: true
    instanceId: ${spring.cloud.client.ipAddress}:${spring.application.name}:${server.port}
  server:
    enable-self-preservation: false # 测试场景,不关闭则Eureka客户端会每隔30s向Eureka Server发送一次心跳包作为健康检查,因为测试场景是手动杀掉实例,所以不执行自我保护

위 구성 파일에서 서비스 이름을 service-consumer로 구성하고 유레카 등록 센터를 사용했으며 유레카 방지를 위해 서비스의 자체 보호 메커니즘을 켰습니다. 서버 검색에서 서비스가 실패하여 제거되었습니다. 클라이언트는 서비스를 호출할 때 리본을 사용해 로드 밸런싱을 하고, Hystrix를 서킷 브레이커로 구성해 서비스의 고가용성과 안정성을 보장합니다.

4. 요약

이 기사에서는 Spring Cloud 컨테이너를 사용하여 서비스 등록 및 검색, 구성 관리 및 서비스 호출을 포함한 마이크로서비스 거버넌스를 구현하는 방법을 소개합니다. Spring Cloud에서 제공하는 Eureka, Config Server, Ribbon, Hystrix 등의 구성요소를 통해 개발자는 마이크로서비스 애플리케이션을 보다 쉽게 ​​구축하고 관리할 수 있습니다. 물론 서비스 게이트웨이, 분산 추적, 비밀 키 관리 등 마이크로서비스 아키텍처와 관련된 다른 많은 측면이 있으므로 이러한 내용은 후속 기사에서 소개하겠습니다.

위 내용은 Spring Cloud 컨테이너 기반 마이크로서비스 거버넌스 구현의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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