나는 최근에 마이크로 서비스에 노출 되었으며이 측면을 이해하고 있습니다. 나는 그것을 당신과 공유 할 것입니다.
Spring Cloud는 스프링 부팅을 기반으로 마이크로 서비스를 구현하기위한 전체 프레임 워크 세트입니다. 스프링 부팅은 프레임 워크와 스프링 클라우드로 마이크로 서비스가 함께 무시할 수없는 새로운 프레임 워크 시스템을 형성한다고 말할 수 있습니다. 구성 관리, 서비스 검색, 회로 차단기, 지능형 라우팅, 마이크로 에이전트, 제어 버스, 글로벌 잠금 장치, 의사 결정 캠페인, 분산 세션 및 클러스터 상태 관리와 같은 마이크로 서비스 개발에 필요한 구성 요소를 제공합니다. Spring Cloud는 많은 서브 프레임이 포함되어 있으며 Spring Cloud Netflix는 주로 서비스 검색, 회로 차단기 및 모니터링, 지능형 라우팅, 클라이언트로드 밸런싱 등 모듈을 제공하는 프레임 워크 중 하나입니다.
특성
(1) 서비스 등록 및 발견 인 Eureka는 서비스 등록 센터, 서비스 검색 클라이언트 및 모든 등록 된 서비스를 볼 수있는 편리한 인터페이스를 제공합니다. 모든 서비스는 Eureka의 서비스 검색 클라이언트를 사용하여 Eureka의 서버에 등록합니다.
(2) Zuul, Gateway, 모든 고객은이 게이트웨이를 통해 백엔드 서비스에 액세스하도록 요청합니다. 특정 라우팅 구성을 사용하여 특정 URL을 처리하는 서비스를 결정할 수 있습니다. 그리고 요청을 전달하기 위해 Eureka에서 등록 된 서비스를 받으십시오.
(3) 리본, 즉로드 밸런싱. Zuul Gateway가 특정 서비스의 응용 프로그램에 요청을 보내면 서비스가 여러 인스턴스를 시작하면 특정로드 밸런싱 정책을 통해 리본을 통해 특정 서비스 인스턴스로 보냅니다.
(4) Feign, Service Client, 서비스가 서로 액세스 해야하는 경우 RestTemplate 또는 Feign 클라이언트를 사용하여 액세스 할 수 있습니다. 기본적으로 리본을 사용하여로드 밸런싱을 달성합니다.
(5) Hystrix, 모니터링 및 회로 차단기. 이 인터페이스의 모니터링 및 회로 차단기 기능을 실현하기 위해 서비스 인터페이스에 Hystrix 태그 만 추가하면됩니다.
(6) 모니터링 패널 인 Hystrix 대시 보드는 각 서비스에서 서비스 호출로 소비 시간을 모니터링 할 수있는 인터페이스를 제공합니다.
(7) 터빈, 모니터링 집계, Hystrix 모니터링을 사용하여 각 서비스 인스턴스의 모니터링 정보를 열어야합니다. 터빈은 모든 서비스 인스턴스의 모니터링 정보를 통합 시청을 위해 한 곳으로 집계하는 데 도움이됩니다.
문서를 참조 할 수 있습니다 : https://springcloud.cc/spring-cloud-netflix.html
(1) 서비스 등록 및 모니터링 센터 :
@springbootApplication@enableEureKaserver@enableHyStrixDashBoardPublic Class ApplicationRegistry {public static void main (string [] args) {new springApplicationBuilder (Application.class) .web (true) .run (args); }}여기서 Spring Boot 태그를 사용한 @SpringBootApplication은 현재 응용 프로그램이 Spring Boot 응용 프로그램임을 보여줍니다. 이런 식으로, 기본 기능을 직접 사용하여 IDE에서 응용 프로그램을 시작하거나 포장 후 명령 줄로 시작할 수 있습니다. 물론 Tomcat과 같은 서버로 패키지 전쟁 패키지를 시작할 수도 있습니다. 시작하는 동안 태그 @enableeurekaserver를 사용하여 Eureka Service Registry의 구성 요소를 시작하십시오. 기본적으로 8761 인 포트를 듣고 서비스 등록을받습니다. 웹 페이지를 제공합니다. 그것을 열면 등록 된 서비스를 볼 수 있습니다. @enableHyStrixDashboard를 추가하면 모니터링 페이지가 제공됩니다. Hystrix 모니터링이 활성화 된 인터페이스의 통화 상태를 볼 수 있도록 서비스 주소를 모니터링 할 수 있습니다. 물론, 위의 구성 요소를 사용하려면 스프링 클라우드 스타터-eureka-server 및 Spring-Cloud-Starter-Hystrix-Dashboard에 의존하는 스프링 보트 스타터 부모를 사용하는 것과 같은 Maven POM 파일에 해당 종속성을 추가해야합니다.
(2) 서비스 간 호출 :
서비스 호출, resttemplate 및 feignclient를 만드는 두 가지 방법이 있습니다. 메소드가 무엇이든, 그것은 나머지 인터페이스를 통해 서비스의 HTTP 인터페이스를 호출하고, 매개 변수와 결과는 잭슨을 통해 기본적으로 직렬화되고 사제화됩니다. Spring MVC의 RestController에 의해 정의 된 인터페이스가 있으므로 반환 된 데이터는 Jackson을 통해 JSON 데이터로 직렬화됩니다.
첫 번째 유형 : resttemplate, resttemplate bean 만 정의하고 부하 밸런스로 설정하면됩니다.
@ConfigurationPublic Class SomeCloudConfiguration {@loadBalanced @bean resttemplate resttemplate () {return new RestTemplate (); }}이런 식으로, 우리는 필요한 곳에이 콩을 주입 할 수 있습니다.
공개 클래스 someserviceClass {@autowired private resttemplate resttemplate; public string getUserById (long userId) {userdto results = resttemplate.getForObject ( "http : // users/getUserDetail/" + userDto.class); 반환 결과; }}사용자가 서비스 ID 인 경우 리본은 서비스 인스턴스 목록 에서이 서비스의 인스턴스를 얻고 요청을 보내고 결과를 얻습니다. 객체 userDTO는 일련 번호가 필요하며 항-시리얼 번호는 자동으로 완료됩니다.
두 번째 유형 : feignclient
@feignclient (value = "user", path = "/user") public interface usercompositeservice {@requestmapping (value = "/getUserDetail/{id}", method = requestMethod.get, produces = mediaType.application_json_value) uspitherdto getUserBarial Long id);@feignclient를 사용하여 변명 만 정의하면됩니다. Spring Cloud Feign은 구현을 생성하고 해당 사용자 서비스로부터 데이터를 얻는 데 도움이됩니다. 그중에서도 @feignclient (value = "user", path = "/user/getUserDetail")의 값은 서비스 ID이며 경로는이 인터페이스 그룹의 경로 접두사입니다. 다음 메소드 정의에서, 스프링 MVC 인터페이스 설정과 마찬가지로이 메소드의 경우 해당 URL은/users/getUserDetail/{id}입니다. 그런 다음 사용할 때 일반 서비스를 주입 한 다음 사용하는 것과 같습니다.
공개 클래스 일부 OtherserviceClass {@autowired private usercompositeservice userervice; public void dosomething () {// ...... userdto results = userervice.getUserById (userId); // 기타 작업 ...}}(3) 회로 차단기 :
// 회로 차단기 : 메소드 호출이 실패 할 때 실패한 메소드를 대체하기 위해 폴백 메소드를 호출하는 문제를 해결하기 위해 결함 허용 오류/차단 캐스케이드 오류의 기능이 달성되었습니다. // fallbackMethod 폴백 메소드 @HyStrixCommand (hystrixCommand = "dostudentFallback") @requestMapping (value = "dostudent", method = requestmethod.get) public String dostudent () {return "당신의 이름 : 비밀 : 당신의 나이 :} public string dostudentall back () {return"your name : your your your your your your your your your your your your your your your your your hene "그중에서도 @enablecircuitbreaker를 사용하여 회로 차단기 지원을 활성화하십시오. Spring Cloud는 @enableHyStrixDashboard 주석을 통해 활성화되는 회로 차단기의 작동을 모니터링하는 콘솔을 제공합니다.
위의 것은 Spring Cloud Netflix 구성 요소에 대한 간단한 소개입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.