본문 바로가기

컴퓨터공학/분산시스템

분산시스템의 구조 (ARCHITECTURES)

반응형

분산시스템의 구조는 크게보면 논리적구조(S/W) 그리고 물리적구조(시스템) 으로 나뉜다.

 

분산 시스템을 위한 중요한 아키텍처 스타일 (논리적구조)
- Layered architectures 계층화 된 아키텍처 (네트워크 OSI 7계층 또는 인터넷의 5계층 구조)
- Object-based architectures 객체 기반 아키텍처
- Data-centered architectures 데이터 중심 아키텍처 (pubsub방식: publish subscribe 방식)
- Event-based 이벤트 기반 아키텍처 (pubsub방식: publish subscribe 방식)

 
(a) 는 계층화된 구조로써, 위쪽으로는 User층 밑으로 갈 수록 Systems층을 이루고있다. 대표적으로 OSI 7layer 또는 TCP/IP 5layer 예로 들 수 있다.
각 계층간 Data-Flow는 데이터 요청/송신(Request)시 Top-Down, 데이터 전송/수신(Resopnse)시 Bottom-Up
(b) 는 오브젝트 기반의 구조로써, 여러 객체 (다른시스템) 에서 함수를 콜하여 task를 수행한다. 예) RMI: Remote Method Invocation
* 대표적인 Object 기반으로 코바(Corba)가 있다.
 
(a)와 (b)는 둘 다 PUB/SUB 방식이다. PUB/SUB방식은 시간적인, 공간적인 제약을 벗어난 Flexible한 환경 (언제든지 어디서든!)
(a)는 Event-based 구조이며Event-Bus(Channel)내 어떤 Component가 발생한 Event(Publish)를 다른 Component가 수신(Subscribe)하는 형태
클라이언트/서버 모델과 달리 Event가 동시 에 발생하지 않아도 됨.
(b)는 데이터 중심 구조이며 Component 간 같은 공유 데이터 영역을 가짐.
공유 데이터 영역에 Component들이 자유롭게 Pub-Sub 함
 
분산 시스템을 위한 중요한 아키텍처 스타일 (물리적구조)
물리적 구조에 따른 분산시스템 Architecture 종류
○ Centralized(중앙집중형)
- 1. Client-Server Model
- 2. Application Layering
- 3. Multitier
○ Decentralized(비집중형)
- Peer-to-Peer
 
 
 
 
1. Client-Server Model
▲ Centralized 방식 Client-Server Model
○ 클라이언트는 서버에게 서비스 요청
○ 서버의 처리시간 동안 클라이언트 대기
○ 서버의 응답을 클라이언트가 수신하면 다음 단계 진행
 
 
2. Application Layering
계층구조
사용자 인터페이스 레벨
처리 레벨
데이터 레벨
각 계층별로 수행 Task 분할**
그리고 이와 함께 중앙집중방식에서 어떻게 보이는지 다음 그림을 통해 알아보자.
 
 
▲ 인터넷 검색 엔진을 세 가지 계층으로 단순화.
유저레벨 / 프로세싱레벨 / 데이터레벨로 3계층이다.
유저는 키 값을 주고 쿼리제네레이터를 통해 해당 DB로 접근한다.
그리고 데이터에서 웹페이지 타이틀과 정보를 랭킹알고리즘을 통해 리스트화하고
HTML 제너레이터를 통해 다시 유저의 화면에 뿌려준다.
여기서 말하는 중앙집중은 하나의 데이터 베이스이다.
클라이언트와 서버와의 소통이다.
 
 
3. Multitier
다중계층구조 (Multitiered Architectures)
 
 
단순한 형태: 클라이언트/서버 - 2 Tier Model
- 클라이언트와 서버의 역할 수준에 따라 세분화
- 단순한 구현은 클라이언트 UI Level, 서버가
Application 처리 및 데이터 보관
 
 
▲ 클라이언트와 서버가 어느정도 분담할 것인가.
- (a)에서 (e)로 갈수록 클라이언트 머신의 성능이 좋아야 한다.
 
 
 
복잡한 형태: 3 Tier 이상
- Ex. UI는 클라이언트에서 Application Level은
Application Server에서, Data Level은 DB
서버가 담당은 3 Tier 모델
 
 
▲ 클라이언트 역할을하는 서버의 예.
- Application Server가 클라이언트 역활을 하는 서버이다.
 
 
 
Decentralized(비집중형)
 
Peer-to-Peer(P2P) Model
- Structured: DHT(Distributed Hash Table)
- Unstructured
 
Peer-to-Peer 세대별 구분
- 1세대: Server-Oriented 방식
* 서버 Down시 전체 시스템 Fail 발생
* Napster
- 2세대: Flooding Query Model (1세대 개선책)
* Query를 채널 내 모든 Component에게 전달 (파일이 분산되어있고 전체에 쿼리를 보냄)
* Overhead가 큼
* 예) Gnutellar
- 3세대: Superpeer
* 각 계층별로 Component를 Grouping (피어를 그룹핑하여 관리)
- 4세대: Structured
* DHT를 이용하는 것이 대표적
* 예) Kedemlia
 
Hash Table
▲ Hash Table 구조
modular 방식 - 나머지를 취함
record값이 25인 경우에 10을 나누면 나머지가 5가나오며, 5인덱스에 삽입합니다.
장점은 사전형식처럼 Lookup이 빠릅니다.
 
 
▲ Distributed Hash Table 구조
 
 
장점은 사전형식처럼 Lookup이 빠릅니다.
Hash Table의 빠른 검색속도를 이용, Peer
마다 Hash Table 공간 할당
- 분할 단위: Bucket
- Bucket 구성이 중요한 과제
 
○ Chord 방식(1차원)
- 각 Node마다 Key 범위를 할당하여 분할
 
 
○ CAN(Context Area Network)
 
- 각 Node마다 Key면적(2차원)을 할당
- 데이터를 Hashing하여 나타난 좌표(x,y)에 맞는 Node에 저장
- 전체 공간은 고정되어 있으므로 Node 추가시 영역을 분할
 
 
 
Unstructured P2P: Topology Management of Overlay Networks
▲ 이웃노드 C개                                                         
Push -> P에게 보냄 
Pull -> P에게서 가져옴
 
 
Structured Overlay: 토폴로지 특정노드에 대한 링크
Random Overlay: 랜덤 노드간 아는 정보를 교환
 
○ 각 Node는 자신만의 Network Partial View 를 가짐
○ Partial View를 교환할 Node를 임의로 선택
○ 다른 Node와 Partial View를 교환하면서 전체 Structure 완성
○ 동작구조
- Active, Passive의 2개 Thread 존재
- Active Thread
* Push Mode: C개의 Partial View를 임의의 P에게 전송
* Pull Mode: 다른 Node로부터 View를 요청·수신
- Passive Thread: Pull Mode만 존재
 
Superpeers
 
 
- 어떤 그룹을 대표하는 Peer(=Superpeer) 존재
- 그룹 외부의 Peer로부터 전송되는 Query는 Superpeer에게 전달
- Superpeer가 수신한 Query는 그룹 내부 Peer에게 다시 전달
즉 슈퍼피어가 내부 피어를 관리한다.
 
 
Edge-Server Systems
 
- Structured P2P와 Unstructured P2P의 혼합 (Hybrid)
- Centralized Architecture
- Ex. Internet
 
 
Collaborative Distributed Systems(Hybrid)
 
- File을 여러 개의 Node에서 Scattered Query 하여 각 Node가 Partial 전송
- 3종의 Component로 구성
  ㄴ 요청(Redirect): 클라이언트의 요청을 다른 서버로 Redirect 시키는 Component
  ㄴ 접근(Analyzing): 접근 패턴을 분석하는 Component
  ㄴ 복제(Replication): Web Page의 복사본을 관리하는 Component
- Ex. Bittorrent
 
 
Interceptors
▲ 인터셉터를 사용하여 원격 객체 호출을 처리
- Interceptor: 어떤 Level에서 발생한 쿼리를 처리하기 쉽도록 중간에서 구분/변환하여 다음 Level로 전달
- 변환자(Interceptor)는 각 Level 중간에 위치
 
 
Adaptive Software 방식
○ 3가지 기본 접근방법
- 관심 분리 ⇒ Modular화 (각각의 기능을 쪼개서...)
- 과거(연산결과) 반영 ⇒ 결과를 스스로 Check
- Component 기반 설계
 
 
Feedback Control Model(Adaptive 방식)
 
실행→관찰→평가→분석→조정→재실행
                    ↓
                 결과만족→종료
 
 
Example: Systems Monitoring with Astrolabe
▲ 3대의 컴퓨터로 구성된 분산시스템: 각각의 시스템의 사용률을 평균값으로 한눈에 Astrolabe
 
 
 
Example: Differentiating Replication Strategies in Globule (Globule에서 복제 전략 차별화)
▲ The edge-server model assumed by Globule. 
- ISP회사 등에서 ACCESS 패턴을 분석하여 데이터를 어느정도 저장할건지 분석
 
▲ The dependency between prediction accuracy and trace length
- Trace 기간을 길게 늘려도 오류 발생율이계속 줄어들지 않음
 
Example: Automatic Component Repair Management in Jade
Jade
○ 자동복구 Model
○ 복구과정
㉮ Network 내 어떤 Node가 Fail 시 Manager에게 새 Node를 요청
㉯ 새 Node는 Fail이 발생한 Node와 동일하게 구성
㉰ 새 Node를 Network에 Binding
 
반응형