SpringCloud 기본 원리

8014 단어 SpringCloud
SpringCloud의 기본 원리는 마이크로 서비스 구조에서 몇 가지 기초적인 서비스 관리 구성 요소가 필요하다. 이는 서비스 등록과 발견, 서비스 소비, 부하 균형, 차단기, 스마트 루트, 설정 관리 등을 포함한다. 이 몇 가지 기초 구성 요소가 서로 협력하여 간단한 마이크로 서비스 시스템을 공동으로 구축했다.다른 몇 장의 소개는 SpringCloud의 기본 원리를 바탕으로 한 프로젝트로 이루어진 것이다.1. 우선 저희가 제공하는 SpringBoot 마이크로서비스 프로젝트는 넷플릭스 유레카에 등록합니다.기타 소비 서비스의 스프링부트 마이크로 서비스 항목은 넷플릭스 유레카에서 서비스를 구독할 수 있다.소비 서비스의 스프링부트 마이크로서비스 프로젝트는 넷플릭스 유레카를 통해 서비스 제공자의 실제 주소를 확보해 서비스 제공자의 서비스를 호출한다.4. 소비 서비스의 SpringBoot 마이크로 서비스 프로젝트는RestTemplate, 또는 Feign을 통해 서비스 제공자를 호출한다.서비스 제공자가 집단 서비스를 제공할 때 RestTemplate나 Feign이 서비스를 호출할 때 리본 부하 균형기를 추가하면 RestTemplate나 Feign의 부하 균형 호출을 실현할 수 있다.6. 서비스 제공자든 소비자든 모든 SpringBoot 마이크로 서비스 프로젝트에 공통된 프로필 속성이 있으면 SpringCloud이 제공하는 분포식 프로필 센터spring-cloud-config-server 7.수없이 많은 SpringBoot 마이크로 서비스 프로젝트의 URL 호출과 통일된 권한 처리 등은 어려운 문제가 될 것이다. 넷플릭스 Zuul은 인터페이스 루트로서 이 문제를 잘 처리할 것이다. 모든 URL의 루트를 통일적으로 관리하고 동적 루트, 모니터링, 탄력성, 안전 등 가장자리 서비스를 제공할 것이다.8. 마이크로 서비스 프로젝트에서 각종 원격 호출 이상 상황을 만날 수 있습니다. 이때 우리는 넷플릭스 Hystrix를 통해 서비스 강등, 차단기 보호 등 조치를 취하여 마이크로 서비스 프로젝트의 용착 능력을 향상시켜야 합니다.9. 전체적으로 클러스터의 각 기능 구성 요소가 조화롭게 작업하면 SpringCloud 아키텍처의 프로젝트가 더 높은 합병량을 견딜 수 있고 더 강한 내결함성과 높은 가용성을 가지게 됩니다.**********************Eureka 등록 센터 단계: 5단계*********** 1> SpringBoot 프로젝트 만들기 2>pom.xml 파일에 Eureka를 도입하여spring-cloud-starter-eureka-server 설정SpringCloud의 하위 프로젝트 버전 집중 관리spring-cloud-dependencies 설정SpringCloud 공식 원격 창고https://repo.spring.io/milestone


org.springframework.cloud
spring-cloud-starter-eureka-server



org.springframework.boot
spring-boot-starter-test
test



3> 프로젝트 프로필 응용 프로그램.yml에서 eureka 등록 센터 설정 설정
server:
#     
port: 8888
eureka:
instance:
#eureka      
hostname: localhost
client:
#  eureka      :    
registerWithEureka: false
#  eureka      :    
fetchRegistry: false
serviceUrl:
#eureka      
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

4> 프로젝트 포털 함수에서 등록 센터 @EnableEurekaServer 활성화
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
@EnableEurekaServer
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}

5> 프로젝트 시작, 등록 센터 액세스http://localhost:8888/
*********************Eureka 서버 공급자 단계: 6단계*************1>SpringBoot 프로젝트 만들기 2>pom.xml 파일에 Eureka 클라이언트를 도입하여spring-cloud-starter-eureka 설정SpringCloud의 하위 프로젝트 버전 집중 관리spring-cloud-dependencies 설정SpringCloud 공식 원격 창고https://repo.spring.io/milestone


org.springframework.cloud
spring-cloud-starter-eureka



3> 프로젝트 프로필 응용 프로그램.yml에서 eureka 설정
eureka:
client:
serviceUrl:
#eureka      
defaultZone: http://localhost:8888/eureka/
server:
#     
port: 8002
spring:
application:
#    ,   
name: service-provider

4> 컨트롤러 서비스 쓰기
@RestController
public class UserController {
@Value("${server.port}")
private String serverPort;
/**
* http://localhost:8002/getFuture
* @return
*/
@RequestMapping("/getFuture")
public List getFuture() {
List list = new ArrayList<>();
list.add("    ,     ;");
list.add("    ,     。");
list.add("     :"+serverPort);
return list;
}

5> 프로젝트 포털 함수에서 등록 센터 클라이언트 @EnableEurekaClient 활성화
@EnableEurekaClient
@SpringBootApplication
public class Application {
public static void main(String[] args) {
Sp

6> 프로젝트 액세스 시작http://localhost:8002/getFuture프로젝트 시작 성공 등록 센터 방문 설명http://localhost:8888/등록 센터에 서비스-provider 서비스가 등록되어 있는 것을 보았습니다*****************Eureka 서버 소비자 RestTemplate 단계: 7단계**************1>SpringBoot 프로젝트 만들기 2>pom.xml 파일에 Eureka 클라이언트를 도입하여spring-cloud-starter-eureka 설정SpringCloud의 하위 프로젝트 버전 집중 관리spring-cloud-dependencies 설정SpringCloud 공식 원격 창고https://repo.spring.io/milestone

org.springframework.cloud
spring-cloud-starter-eureka


3> 프로젝트 프로필 응용 프로그램.yml에서 eureka 설정
eureka:
client:
serviceUrl:
#eureka      
defaultZone: http://localhost:8888/eureka/
server:
#     
port: 8001
spring:
application:
#    ,   
name: service-consumer

4> Spring 컨테이너에 RestTemplate 객체 추가
@Configuration
public class SpringConfig {
@Bean
@LoadBalanced
public RestTemplate restTemplate() {
return new RestTemplate();
}
}

5> 서비스 계층에 RestTemplate 객체 자동 주입 eureka 등록 센터의 원격 서비스 호출
@Service
public class ConsumerService {
@Autowired
private RestTemplate restTemplate;
public List getProviderFuture() {
return restTemplate.getForObject("http://service-provider/getFuture",
List.class);
}
}


6> 디렉터 레이어를 작성하여 이전 서비스 레이어 호출
@Autowired
private ConsumerService consumerService;
/**
* http://localhost:8001/getProviderFuture
* @return
*/
@RequestMapping("/getProviderFuture")
public List getProviderFuture(){
return consumerService.getProviderFuture();
}


7> 프로젝트 포털 함수에서 eureka 클라이언트 @EnableEurekaClient 활성화
@EnableEurekaClient
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}


프로젝트 시작, 액세스http://localhost:8001/getProviderFuture비교 서비스 제공자http://localhost:8002/getFuture*********************Eureka 서버 소비자 Feign 단계: 6단계*************1>SpringBoot 프로젝트 만들기 2>pom.xml 파일에 유레카 클라이언트 도입spring-cloud-starter-eureka 도입Feign 의존spring-cloud-starter-feign 설정 SpringCloud의 하위 프로젝트 버전 집중 관리 의존spring-cloud-dependencies 설정 SpringCloud 공식 원격 창고https://repo.spring.io/milestone


org.springframework.cloud
spring-cloud-starter-eureka



org.springframework.cloud
spring-cloud-starter-feign



3> 프로젝트 프로필 응용 프로그램.yml에서 eureka 설정
eureka:
client:
serviceUrl:
#eureka      
defaultZone: http://localhost:8888/eureka/
server:
#     
port: 8001
spring:
application:
#    ,   
name: service-consumer

4> 서비스 층에서 인터페이스, 추상적인 방법을 작성하고 각각 @FeignClient, @RequestMapping을 사용하여 원격 서비스 이름, 서비스 맵을 설명한다.
@FeignClient("service-provider")
public interface ConsumerService {
@RequestMapping("/getFuture")
public List getProviderFuture();
}

5> 컴파일 컨트롤러층이 자동으로 이전 인터페이스 형식 bean에 주입
@RestController
public class ConsumerController {
@Autowired
private ConsumerService consumerService;
/**
* http://localhost:8001/getProviderFuture
* @return
*/
@RequestMapping("/getProviderFuture")
public List getProviderFuture(){
return consumerService.getProviderFuture();
}

6> 프로젝트 입구 함수에서 eureka 클라이언트 @EnableEurekaClient feign 클라이언트 @EnableFeignClients 활성화
@EnableFeignClients
@EnableEurekaClient
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}


프로젝트 시작, 액세스http://localhost:8001/getProviderFuture비교 서비스 제공자http://localhost:8002/getFuture부하 균형spring-cloud-starter-ribbon, SpringCloud는 기본적으로 리본을 부하 균형 구성 요소로 사용합니다. 서비스provider 서비스가 집단 서비스일 때 RestTemplate 호출은 아무런 처리도 하지 않고 @LoadBalanced는 자동으로 부하 균형을 실현합니다.

좋은 웹페이지 즐겨찾기