오늘은 교수님의 늦잠 이슈로 수업을 30분 늦게 시작했다는 럭키비키한 날
교수님의 랩에도 불구하고 진도는 얼마 나가지 못했지만 생각보다 엄청난 과제를 받아버렸다.. 이건 또 언제 공부해서 구현하나 ...
전 수업에 RPC에 대해 배웠다.
rpcgen이라는 코드 자동 생성 기능으로 simple하게 RPC를 구현할 수 있다.
하지만 RPC에도 단점이 존재하는데,
서로 다른 언어를 사용하는 이질적 시스템을 지원하는 것은 어렵고,
중간에 네트워크를 껴서 작동하기 때문에 네트워크에 문제가 생겨버리면 프로시저 콜에 대한 리턴을 보장하기 어렵다.
RPC 구현을 위해 소켓을 쌍으로 연결하여 사용하는 ZeroMQ가 기억나는가?
세 가지 통신 패턴을 제공함으로써 소켓 프로그래밍보다 쉽게 접할 수 있었다.
각각의 패턴들이 어떤 상황에 사용되는지 알아보겠다.
Request-Reply Pattern
데이터를 요청하고 그 데이터를 받는 패턴이다. 요청을 하면, 그 요청에 대한 업데이트와 결과를 받을 수 있다.
추가, 수정, 삭제에 대한 작업은 이루어지지 않는다.
REQ-REP 코드는 RPC 코드를 대체할 수도 있다.
단방향 통신과 양방향 통신 모두 가능한데, 일반적으로 클라이언트가 서버에 요청을 하는 경우는 단방향 통신이고, 서버가 클라이언트에 요청을 하는 특별한 경우도 존재한다.
Publish-Subscribe Pattern
이벤트 알림이나, 분산 캐싱, 분산 로깅 등에 사용할 수 있다.
예를 들자면 데이터베이스의 트리거나, 메일 리스트, RSS 등에 사용한다.
콜백 함수를 사용하는 경우에는 대부분 Pub/Sub을 사용한다고 볼 수 있다.
Push-Pull Pattern
병렬 프로세싱, Job의 분산, 로드 밸런싱(Request distirbute) 등에 사용한다.
빅데이터 분석, 웹 크롤링 등에 주로 쓰인다.
Combination of Communication Patterns
여러가지 패턴들을 함께 사용한 예시로 SDN을 볼 것이다.
SDN이란, 소프트웨어를 통해 네트워크 리소스를 가상화하고 추상화하는 네트워크 인프라에 대한 접근 방식이다.
기존의 라우터에는 제어부와 전송부가 같이 존재하는데, SDN을 사용하면 제어부와 전송부를 분리한다. 네트워크 장비는 데이터 전송 기능만 담당하게 되는 것이고, 최적 경로를 계산하는 컨트롤러 부분은 하나로 집중되었다.
그림을 보면 동서남북으로 인터페이스가 구분되어 있다.
- Southbound Interface: SDN controller와 네트워크 Forwarding element사이의 인터페이스다. 이 부분은 Push-Pull 패턴이나 Req-Rep 패턴이 사용된다.
- East/Westbound Interface: 가용성(HA)이나 상태 동기화를 위한 SDN controller 간의 인터페이스다. 이 부분은 Req-Rep 패턴이 사용된다.
- Northbound Interface: SDN controller에 의해 제시된 인터페이스로 애플리케이션과 연결되어있는 인터페이스다. 이 부분은 Push-Pull 패턴이 사용된다.
좀 더 자세히 뜯어보자면 위 그림처럼 구성되어 있다.
중간 부분의 Control Layer는 Middleware 느낌으로 볼 수 있다. Pub-Sub pattern으로 control layer가 정보를 모두 저장해놓고 있으면, 각각의 Management가 구독해 놓은 event만을 받는다.
여러앱들이 존재하는 환경에는 job distribution을 위해 Push-Pull pattern을 사용한다.
Distributed Core 덕분에 여러개의 머신이지만 하나의 머신에서 실행되는 것처럼 보인다.
** 대학교 수업을 듣고 이해한 부분을 최대한 풀어서 작성한 글입니다.
틀린 정보가 존재할 수 있으며, 언제나 피드백은 환영입니다. **
'DKU > 분산처리' 카테고리의 다른 글
Distributed System 10 (1) | 2024.10.17 |
---|---|
Distributed System 9 (5) | 2024.10.14 |
Distributed System 7 (2) | 2024.09.30 |
Distributed System 6 (0) | 2024.09.30 |
Distributed System 5 (2) | 2024.09.23 |