Spring Cloud Eureka는 무엇입니까?
Spring Cloud Eureka는 Spring Cloud의 구성 요소입니다. Netflix Eureka를 기반으로 캡슐화 된 2 차 캡슐화이며, 이는 주로 마이크로 서비스 프레임 워크에서 서비스 거버넌스 기능을 완료하는 데 책임이 있습니다. Spring Cloud는 Spring Boot 스타일 자동화 구성을 Eureka에 추가합니다. Spring Boot가 마이크로 서비스 관리 시스템과 쉽게 통합 할 수 있도록 간단한 참조 종속성 및 주석 만 있으면됩니다.
서비스 거버넌스
서비스 거버넌스는 마이크로 서비스 프레임 워크에서 가장 핵심적이고 기본적인 모듈입니다. 주로 다양한 마이크로 서비스 인스턴스의 자동화 된 등록 및 발견을 실현하는 데 사용됩니다.
처음에는 구축 될 수있는 마이크로 서비스 시스템 서비스가 많지 않았으며 일부 정적 구성을 통해 서비스 호출을 완료 할 수 있습니다. 예를 들어, 두 가지 서비스 A와 B가 있습니다. 서비스 A는 서비스 A를 호출하여 서비스 B를 호출하여 비즈니스 운영을 완료해야합니다. 서버의 복잡한 잔액을 채택하든 클라이언트의로드 밸런싱에 관계없이 서비스 B의 고 가용성 B를 달성하기 위해 B 인스턴스 목록을 수동으로 유지해야합니다. 그러나 비즈니스 개발로 인해 시스템 기능이 점점 더 복잡해지고 해당 마이크로 서비스가 점점 더 어려워지고 있습니다.
이 문제를 해결하기 위해 많은 서비스 거버넌스 프레임 워크 및 제품이 생성되었습니다. 이러한 프레임 워크는 실제로 서비스 등록 및 서비스 검색 메커니즘을 중심으로 마이크로 서비스 응용 프로그램 인스턴스의 자동화 된 관리를 완료합니다.
서비스 등록
서비스 거버넌스 프레임 워크에서 서비스 등록 센터가 일반적으로 구축됩니다. 각 서비스 인스턴스 단위는 자체 서비스를 등록 센터에 등록하고 등록 센터에 인스턴스 호스트 위치, 포트 번호, 버전 번호, 커뮤니케이션 프로토콜 등과 같은 일련의 추가 정보를 알려줍니다. 등록 센터는 서비스 이름에 따라 서비스 목록을 구성합니다.
서비스 발견
서비스 거버넌스 프레임 워크에 따라 운영되기 때문에 특정 인스턴스 주소를 지정하여 서비스 간의 통신 및 통화는 더 이상 구현되지 않고 서비스 이름으로 요청 호출을 시작합니다. 따라서 서비스 호출자가 서비스 제공 업체의 인터페이스를 호출 할 때 특정 서비스 인스턴스 위치를 모릅니다. 따라서 먼저 레지스트리에 쿼리 요청을 시작하고 특정 서비스 인스턴스에 대한 액세스를 달성하기 위해 인스턴스 목록을 얻어야합니다.
유레카 등록 센터 서비스를 구축하십시오
단일 센터 유레카를 구축하십시오
우리의 모든 후속 개발은 위 버전을 기반으로합니다. Sring Cloud는 Snapshot 버전을 사용하므로 POM 파일에 저장소 주소를 지정해야합니다.
먼저, 새로운 스프링 부팅 프로젝트를 만들고 Spring-Cloud-Eureka라는 이름을 짓고 POM에 필요한 종속성을 추가합니다. 특정 POM 파일은 다음과 같습니다.
<? xml version = "1.0"encoding = "utf-8"?> <project xmlns = "http://maven.apache.org/pom/4.0.0"xmlns : xsi = "http://www.w3.org/2001/xmlschema-instance" xsi : schemalocation = "http://maven.apache.org/pom/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 </modelversion> <groupid> com.sagesource> <artifactid> spring-cloud-- in <버전> 0.0.1-snapshot </version> <packaging> jar </packaging> <name> spring-cloud-eureka </name> <부모> <groupid> org.springframework.boot </groupId> <artifactid> spring-boot-starter-parent </artifactid> <version <!-releasation </version> </version> </parent> <properties> <proffect.build.sourceencoding> utf-8 </project.build.sourceencoding> <project.reporting.outputencoding> utf-8 </project.reporting.outputencoding> <java.version> 1.8 </java.version> <Spring-cloud.version> Finchley.Build-SnapShot </spring-cloud.version> </properties> <pectionements> <pectionency> <groupid> org.springframework.boot </groupId> <artifactid> Spring-Boot-Starter-Web </artifactid> <peenceplency> <groupid> org.springframework.cloud </groupid> <artifactid> spring-cloud-starter-netflix-eureka-server </artifactid> </eppendency> <groupid> org.springframework.boot </groupid> <artifactid> spring-scope-test> </의존성> </dependencies> <pectionement 관리> <pectionemies> <pectionency> <groupid> org.springframework.cloud </groupid> <artifactid> spring-cloud-dependencies </artifactid> <버전> $ {spring-cloud.version} </virte> pom> </scope> </scope> </scope> </scope> </dependency> </fectionencyManagement> <플러그인> <groupId> org.springframework.boot </groupid> <artifactid> spring-boot-maven-plugin </artifactid> </plugin> </plugins> </build> <repositories> <id> spring-shots </id> <url> https://repo.spring.io/snapshot </url> <snapshots> <enabled> true </enabled> </snapshots> </repository> <repository> <id> Spring-milestones </id> <name> spring milestones </name> <url> httpso.spro. <snapshots> <enabled> false </enabled> </snapshots> </repository> </repositories> </project>서비스 레지스트리를 시작하여 @enableeurekaserver 주석을 통해 다른 응용 프로그램과 대화를 제공합니다. 이 단계는 매우 간단합니다. 이 주석을 일반 스프링 부팅 애플리케이션에 추가 하여이 기능을 켤 수 있습니다.
@springbootApplication@enableEureKaserPublic Class ApplicateEureKaserver {public static void main (String [] args) {springApplication.run (ApplicationEureKaserver.class, args); }}기본 구성에 따라 등록 센터 서버도 클라이언트로 등록됩니다. 일반적 으로이 기능을 비활성화해야하며 수정 된 Application.yml은 다음과 같습니다.
# Spring Configspring : Application : 이름 : Spring-Boot-Eureka # Server Configserver : Port : 9871 # Eureka Configureureka : 인스턴스 : HostName : LocalHost Client : Register-With-Eureka : False # 등록 센터 Fetch-Registry : False # Service Service-URL : DefaultZone : DefaultZone : False # Do n't Regrice the Service-URL : DEFAULTZONE : http : // $ {eureka.instance.hostname} : $ {server.port}/eureka/ 우리는 모두 로컬로 실행 중이므로 후속 서비스 차이를 위해 Server.port를 통해 서비스 레지스트리의 포트를 설정하여 포트를 실행합니다. 9871
위 구성을 완료 한 후 응용 프로그램을 시작하고 http : // localhost : 9871을 방문하십시오. 현재 Eureka에 등록 된 인스턴스 목록이 비어있는 다음 페이지를 볼 수 있습니다. 이는 등록 센터에 서비스가 등록되지 않았 음을 나타냅니다.
나는 모든 사람들이 위의 두 줄의 눈길을 끄는 빨간 단어를 발견했다고 생각합니다.
비상! 유레카는 인스턴스가 그렇지 않을 때 상승한다고 잘못 주장 할 수 있습니다. 갱신은 임계 값보다 작으므로 인스턴스는 안전하기 위해 만료되지 않습니다.
원인 : 자기 보호 메커니즘. Eureka Server가 작동하는 동안 하트 비트 실패의 비율이 15 분 이내에 85% 미만인지를 계산합니다. 발생하는 경우 (독립형 디버깅 중에 만족할 수 있지만 실제로는 일반적으로 생산 환경에서 네트워크 불안정성으로 인해 발생합니다) Eureka Server는 현재 인스턴스 등록 정보를 보호 하고이 경고를 촉구합니다.
이 문제는 독립형 상황에서 발생하기 쉽기 때문에 온라인 구성에 따라 자체 보호를 끄면 유레카가 여전히 알람을 호출하여 안전 모드가 꺼져 있으며 인스턴스의 정확성을 보장 할 수 없습니다. 따라서 당분간이 문제를 무시하고 클러스터 배포가 나중에있을 때 해결할 수 있습니다.
서비스 제공 업체를 등록하십시오
등록 센터 서비스 설립을 완료 한 후 유레카의 서비스 거버넌스 시스템에 기존 스프링 부트 응용 프로그램을 추가 할 수 있습니다.
우리는 여전히 이전의 스프링 클라우드 서버를 예로 들어갑니다. Application.yml의 다음 구성 만 수정하면됩니다.
# 응용 프로그램 이름 스프링 : 응용 프로그램 : 이름 : Spring-Cloud-Server# Eureka 등록 센터 위치 Eureka : Client : Service-URL : http : // localhost : 9871/eureka/
수정이 완료되면 서비스를 시작할 수 있습니다. 현재 Eureka의 관리 페이지를 새로 고치고 현재 Eureka에 등록 된 인스턴스의 목록 정보를 다음과 같이 본다.
이는 당사의 서비스가 등록 센터에 성공적으로 등록되었음을 보여줍니다.
관련 예제 코드 : https://github.com/sagesource/spring-cloud-set
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.