1. 게이트웨어 프로젝트 설정
2. Netty와 Tomcat의 차이란
2.1 Netty
- 비동기 이벤트 기반의 네트워크 애플리케이션을 개발하기 위한 프레임워크
- 즉각적으로 요청이 들어오는 것 중에 성능이 요구되는 고성능, 확장 가능한 네트워크 서버를 개발하는데 사용
- 보통 웹 서버, 게임 서버, 채팅 서버, 프록시 서버 , 독립적으로 돌아가는 비동기식 서버 등과 같은 네트워크 기반의 애플리 케이션을 개발하는데 활용
- 네트워크 통신에 대한 이벤트 기반의 비동기 IO를 사용
- NIO(Non-blocking IO)를 기반으로 하여 매우 빠르고 확장 가능한 네트워크 서버를 만들 수 있음
- 대용량 데이터를 다루거나 수천 이상의 연결을 처리하는데 적합
2.2 Tomcat
- 서블릿(Servlet) 컨테이너로서, JSP와 Servlet 기술을 사용하여 java 웹 애플리케이션을 실행하는데 사용
- 웹 어플리케이션 웹 서버로서, 웹 애플리케이션을 호스팅하고 관리하는 역할을 수행
- 대부분 java 웹 애플리케이션은 Tomcat에서 실행됨
- 전통적인 서블릿 기반의 동기식 IO를 사용
- 기본적으로는 스레드 풀을 사용하여 요청당 하나의 스레드를 할당하는 방식이기 때문에, 많은 수의 연결을 동시에 처리하기 어려움면이 있음.
- Tomcat은 고객의 요구에 따라 클러스터링이나 로드 밸런싱 등을 추가 구현해야 할 수 있습니다.
3. 마이크로서비스 서버 프로젝트 두 개 추가
4. 게이트웨이 서버라는 단일 진입점으로 접근하도록 설정
4.1 게이트웨이 서버 .yml
id : 추후 eureka 서버 등에 등록할 서비스 명을 미리 식별할수있도록 부여
uri : 게이트웨이 서버가 아래에 등록할 predicates의 패턴을 감지했을때 어떤 서버로 포워딩할지
predicates : 어떤 조건을 만족할떄 연동된 uri로 보내줄지 조건 작성
server:
port: 8000
spring:
application:
name: apigateway-server
cloud:
gateway:
routes: #개별 마이크로서비스 정보를 routes에 기입함
- id: first-service
uri: http://localhost:8081/
predicates:
- Path=/first-service/** # /로 서버주소인 uri부분을 생략한다는 의미이다. => 실제 값 : Path=http://localhost:8000/first-service
- id: second-service
uri: http://localhost:8082/
predicates:
- Path=/second-service/**
4.2 마이크로서버 controller
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
@RestController()
@RequestMapping("/first-service")
public class FirstserviceController {
@RequestMapping(value="hello",method = RequestMethod.GET)
public String hello(){
return "Hello, First-service";
}
}
'MSA' 카테고리의 다른 글
기존 마이크로서비스를 Eureka 클라이언트로 등록 (0) | 2023.10.24 |
---|---|
스프링 디스커버리를 위한 Eureka 클라이언트 생성 (1) | 2023.10.24 |
스프링 디스커버리를 위한 Eureka 서버 세팅 (1) | 2023.10.24 |
yml 파일에 필터 적용하기 (2) | 2023.10.23 |
Config파일을 이용한 라우팅 정보 설정 + 기본 필터 활용 (0) | 2023.10.19 |