Eureka는 서비스 등록 및 발견을 제공하는 Netflix 오픈 소스 제품이며 서비스 레지스트리 및 서비스 검색의 완벽한 구현을 제공합니다. 또한 SpringCloud 시스템에서 가장 중요하고 핵심 구성 요소 중 하나입니다.
배경 소개
서비스 센터
서비스 센터는 등록 센터라고도하며 서비스 등록, 검색, 회로 차단기,로드, 다운 그레이드 등 Dubbo 관리자 배경의 다양한 기능과 같은 다양한 서비스 기능을 관리합니다.
서비스 센터 통화 관계에서 어떤 변화가 발생합니까? 이해하는 데 도움이되는 몇 가지 간단한 다이어그램을 그립니다
프로젝트 A 통화 프로젝트 b
일반적으로 프로젝트를 요청하려면 프로젝트를 요청하십시오. b
서비스 센터를 사용한 후에는 서비스를 직접 제거하고 사용할 수 없으며 서비스 센터를 통해 호출해야합니다.
프로젝트 A 통화 프로젝트 B, 프로젝트 B가 프로젝트 C를 호출하고 있습니다.
현재 호출 단계는 두 단계입니다. 첫 번째 단계는 프로젝트 A가 서비스 센터에서 프로젝트 B 서버를 요청한 다음 프로젝트 B가 서비스 센터에서 프로젝트 C 서비스를 요청합니다.
위의 프로젝트는 2 ~ 3 개 사이의 간단한 전화이지만 20 개가 넘는 프로젝트와 30 개의 프로젝트가있는 경우 2015 년 말까지 회사의 분산 프로젝트가 20 개 이상에 도달했습니다. 수십 개의 프로젝트와 모든 라인 간의 관계를 설명하는 그림을 그립니다. 프로젝트 중 하나에 대한 변경에는 여러 프로젝트가 다시 시작되며, 이는 매우 번거롭고 오류가 발생하기 쉽습니다. 서비스 센터를 통해 서비스를 얻으려면 호출하는 프로젝트 IP 주소에주의를 기울일 필요가 없습니다. 여러 서버로 구성됩니다. 서비스 센터에 가서 이용 가능한 서비스를받을 때마다 전화 할 때마다.
모든 종류의 서비스가 서비스 센터에 등록되었으므로해야 할 많은 고급 기능이 있습니다. 예를 들어, 여러 서비스는 부하의 균형을 맞추기 위해 동일한 서비스를 제공합니다. 서버 호출의 성공률을 모니터링하여 회로 파괴를 수행하고 서비스 목록의 결함 지점을 제거하십시오. 서비스 호출 시간을 모니터링하여 다른 서버 등 다른 가중치를 설정하십시오.
유레카에 대해 이야기하기 전에 Netflix에 대해 험담하겠습니다
넷플릭스
다음 소개는 Baidu Encyclopedia에서 나옵니다.
Netflix는 미국과 캐나다의 온라인 스트리밍 미디어와 Custom DVD 및 Blu-Ray Disc Online Rental Services를 제공하는 미국 회사입니다. 1997 년에 설립 된이 회사는 캘리포니아 Los Gaitu에 본사를두고 있으며 1999 년에 가입 서비스를 시작했습니다. 2009 년 에이 회사는 최대 10 만 DVD 영화를 제공하고 1 천만 명의 가입자가있었습니다. 2007 년 2 월 25 일, Netflix는 10 억의 DVD를 판매했다고 발표했습니다. 그의 보고서에 따르면 2011 년 Netflix 온라인 영화 판매는 미국 사용자의 총 온라인 영화 판매량의 45%를 차지했다고 밝혔다.
내가이 단어를 처음 보았을 때, 그것은 다양한 미국 드라마 나 영화의 시작에있었습니다. Netflix가 촬영 한 대표적인 미국 드라마에는 "House of Cards", "Drug Lords"및 "Stranger Things"가 포함됩니다. 나중에 Springcloud를 공부할 때 Netflix 회사를 발견하고 그들이 같은 회사인지 궁금했습니다. GitHub에서 이메일 접미사를 확인한 후 실제로 같은 회사라고 판단했습니다. 실제로 SpringCloud의 마이크로 서비스는 Netflix의 오픈 소스 제품을 기반으로합니다.
Netflix의 오픈 소스 프레임 워크 구성 요소는 Netflix의 대규모 분산 마이크로 서비스 환경에서 수년간 입증되었으며 마이크로 서비스 프레임 워크를 구성하기위한 표준 구성 요소로 커뮤니티에 의해 점차 허용되고 있습니다. 스프링 클라우드 오픈 소스 제품은 주로 넷플릭스 오픈 소스 구성 요소의 추가 포장을 기반으로하며, 스프링 개발자가 기본 마이크로 서비스 프레임 워크를 구축 할 수 있도록 촉진합니다. 마이크로 서비스 프레임 워크 시스템을 구축하고, Netflix의 오픈 소스 마이크로 서비스 구성 요소 (또는 스프링 클라우드)를 최대한 활용 하거나이 기반으로 필요한 엔터프라이즈 사용자 정의를 수행하는 일부 회사의 경우 마이크로 서비스 아키텍처의 단축키가 의심 할 여지가 있습니다.
유레카
공식 소개에 따르면 :
Eureka는 중간 계층 서버의로드 밸런싱 및 장애 조치를 위해 서비스를 찾기 위해 AWS 클라우드에서 주로 사용되는 REST (표현 상태 전송) 기반 서비스입니다.
Eureka는 주로 AWS 클라우드에 사용되는 REST 기반 서비스이며 중간 계층 서버의 밸런싱 및 장애 조치를로드하는 서비스를 찾습니다.
Spring Cloud는 Netflix가 개발 한 Eureka 모듈을 캡슐화하여 서비스 등록 및 발견을 가능하게합니다. 유레카는 CS 디자인 아키텍처를 채택합니다. Eureka Server는 서비스 등록 기능이있는 서버이며 서비스 등록 센터입니다. 시스템의 다른 마이크로 서비스는 Eureka의 클라이언트를 사용하여 Eureka Server에 연결하고 하트 비트 연결을 유지합니다. 이러한 방식으로 시스템 유지 보수 인력은 시스템의 각 마이크로 서비스가 Eureka Server를 통해 정상적으로 실행되는지 모니터링 할 수 있습니다. Zuul과 같은 다른 스프링 클라우드 모듈은 Eureka Server를 사용하여 시스템의 다른 마이크로 서비스를 발견하고 관련 논리를 실행할 수 있습니다.
Eureka는 Eureka Server와 Eureka 클라이언트의 두 가지 구성 요소로 구성됩니다. Eureka 서버는 서비스 등록 서버로 사용됩니다. Eureka 클라이언트는 서버와의 상호 작용을 단순화하고, 폴링로드 밸런서 역할을하며, 서비스 장애 조치 지원을 제공하는 데 사용되는 Java 클라이언트입니다. Netflix는 생산 환경에서 다른 클라이언트를 사용하여 트래픽, 자원 활용 및 오류 상태를 기반으로 가중로드 밸런싱을 제공합니다.
그림을 사용하여 다음을 이해하십시오.
위의 그림은 3 가지 역할로 구성된 유레카의 기본 아키텍처를 간략하게 설명합니다.
1. 유레카 서버
2. 서비스 제공 업체
3. 서비스 소비자
사례 연습
유레카 서버
Spring Cloud는 서비스 등록 센터를 구현하는 데 도움이되었으며 완료하기위한 몇 가지 간단한 단계 만 있으면됩니다.
1. POM의 종속성 추가
<pectionies> <pectionency> <groupid> org.springframework.cloud </groupid> <artifactid> Spring-Cloud-Starter </artifactid> </fectionency> <groupIdency> <groupId> org.springframework.cloud </groupid> </eppoaltalenca-server </artifactid> <groupid> org.springframework.boot </groupid> <artifactid> 스프링-부트 스타터-테스트 </artifactid> <scope> test </scope> </fectionency> </fectionencies>
2. 시작 코드에 @EnableEurekaServer 주석을 추가하십시오
@SpringBootApplication@enableEureKaserPublic 클래스 SpringCloudeureKaApplication {public static void main (String [] args) {springApplication.run (springCloudeurekaApplication.class, args); }}3. 구성 파일
기본적으로 서비스 레지스트리는 또한 클라이언트로 등록하려고하므로 클라이언트 등록 동작을 비활성화하고 application.properties 에서 다음 구성을 추가해야합니다.
spring.application.name = spring-cloud-eurekaserver.port = 8000eureka.client.register-with-eureka = falseureka.client.fetch-registry = falseureka.client.serviceurl.defaultzone = http : // localhost : $ {server.port}/eureka/eureka.client.register-with-eureka : Eureka Server에 자신을 등록할지 여부를 나타냅니다. 기본값은 참입니다.eureka.client.fetch-registry : Eureka Server에서 등록 정보를 얻을 것인지를 나타냅니다. 기본값은 참입니다.eureka.client.serviceUrl.defaultZone : Eureka Server와 상호 작용하도록 주소를 설정합니다. 쿼리 서비스와 등록 서비스는이 주소에 의존해야합니다. 기본값은 http : // localhost : 8761/eureka입니다. 여러 주소를 사용하고 분리 할 수 있습니다.프로젝트를 시작한 후 방문 : http : // localhost : 8000/그리고 아래 페이지를 볼 수 있습니다.
무리
등록 센터로서의 중요한 서비스는 단일 지점 인 경우 실패를 일으키는 것이 치명적입니다. 분산 시스템에서 서비스 등록 센터는 가장 중요한 기본 부분이며 언제든지 서비스를 제공 할 수있는 주에 있어야합니다. 가용성을 유지하려면 클러스터를 사용하는 것이 좋습니다. Eureka는 서로를 등록하여 사용 가능한 고도로 배포를 구현하므로 사용 가능한 다른 서비스를 제공하기 위해 사용 가능한 다른 서비스를 구성하기 위해 Eureke Server 만 구성하면됩니다.
이중 노드 등록 센터
처음으로 듀얼 노드 등록 센터를 구축하려고합니다.
1. Peer1 서비스 센터의 구성으로 Application-Peer1.properties를 작성하고 Point ServiceUrl to Peer2
spring.application.name = spring-cloud-eurekaserver.port = 8000eureka.instance.hostname = peer1eureka.client.serviceurl.defaultzone = http : // peer2 : 8001/eureka/
2. Peer2 서비스 센터의 구성으로 Application-Peer2.Properties를 작성하고 Point ServiceUrl to Peer1
spring.application.name = spring-cloud-eurekaserver.port = 8001eureka.instance.hostname = peer2eureka.client.serviceurl.defaultzone = http : // peer1 : 8000/eureka/
3. 호스트 변환
호스트 파일에 다음 구성을 추가하십시오
127.0.0.1 PEER1 127.0.0.1 PEER2
4. 패키지 시작
다음 명령을 차례로 실행하십시오
#Package MVN Clean Package# Peer1 및 Peeer2 구성 정보를 갖춘 Eurekajava 시작 Spring-Cloud-Eureka-0.0.1-SnapShot.jar -spring.profiles.active = peer1java -jar spring-cloud-eureka-0.0.1-snapshot.jar-sprest.- sprest.-sproffer.
하나씩 시작한 후 브라우저는 다음과 같습니다. http://localhost:8000/ 렌더링은 다음과 같습니다.
그림에 따르면, PEER1 등록 센터의 DS 복제에는 PEER2의 관련 구성 정보가 있으며 사용 가능한 반응에 나타납니다. PEER2를 관찰하기 위해 수동으로 중지하고 PEER2가 사용할 수없는 반성기 열로 이동하여 PEER2를 사용할 수 없음을 나타냅니다.
이 듀얼 노드의 구성이 완료되었습니다.
유레카 클러스터 사용
생산시 서비스의 안정성을 보장하기 위해 3 개 이상의 등록 센터가 필요할 수 있습니다. 구성 원칙은 실제로 동일하며 등록 센터를 각각 다른 등록 센터에 지적합니다. 여기서는 세 클러스터의 구성 만 소개합니다. 실제로, 그것은 듀얼 노드 등록 센터와 유사합니다. 각 등록 센터는 각각 다른 두 노드를 가리키고 Application.YML을 사용하여 구성 할 수 있습니다.
application.yml 구성 세부 사항은 다음과 같습니다.
-스프링 : 응용 프로그램 : 이름 : Spring-Cloud-Eureka 프로파일 : Peer1Server : 포트 : 8000eureka : 인스턴스 : hostname : peer1 클라이언트 : serviceurl : defaultzone : http : // peer2 : 8001/eureka/, http : // peer3 : 8002/eureka/--- 포트 : 8001eureka : 인스턴스 : 호스트 이름 : Peer2 클라이언트 : ServiceUrl : defaultzone : http : // peer1 : 8000/eureka/, http : // peer3 : 8002/eureka/--- 스프링 : 응용 : 이름 : Spring-Cloud-Eureka Profiles : Peer3Server : 8002eureka : HoSTUR3 : HoSTUR3 : Clientname : Clientname : 8002Eureka : DefaultZone : http : // peer1 : 8000/eureka/, http : // peer2 : 8001/eureka/
PEER1, PEER2 및 PEER3의 구성 매개 변수로 Eureka 등록 센터를 시작하십시오.
java -jar spring-cloud-eureka-0.0.1-snapshot.jar ---spring.profiles.active = peer1java -jar spring-cloud-eureka-0.0.1-snapshot.jar -sprofiles.active = peer2java -jar spring-cloud-eureka-0.0.1-shot.jar -spring.profiles.active = peer3
하나씩 시작한 후 브라우저는 다음과 같습니다. http://localhost:8000/ 렌더링은 다음과 같습니다.
PEER1에서 PEER2 및 PEER3에 대한 관련 정보를 볼 수 있습니다. 지금까지 유레카 클러스터가 완료되었습니다
샘플 코드
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.