노력과 삽질 퇴적물
분산 시스템 정리 본문
개념
① 독립된 컴퓨터들의 집합이나, 사용자(end-user)입장에서는 1개의 시스템으로 인식되는 구조를 가진 시스템이다. NW를 통신선로로 사용하기때문에 다수의 컴퓨터나 DB를 하나의 시스템처럼 활용할수 있도록 제공하는 시스템. 메시지에 기반한 통신을 사용한다.-> 메모리나 클럭 공유는 없다.
-> N대의 컴퓨터들이 1개처럼 보임.
-> 점묘화는 가까이서 보면, 일반적인 관람에서는 하나의 면으로 보이는것처럼
-> 첩보영화나 SF물등에서 다수의 PC를 여러대 연결시켜서 슈퍼컴퓨터 대용품으로 쓰는것과 같다.
② 장점
-> economics(경제성) : mainframe보다는 저렴.
-> performance(성능) : mainframe보다는 높은 성능.
-> reliability(신뢰성) : 시스템 일부가 다운되어도 나머지 구성원이 지탱.
-> Incremental(?) : 시스템내 자원이 추가될수록 성능 향상.
-> communication(?) : 구성원간의 통신이 쉽다(메시지 기반)
-> flexibility(융통성, 유연성) : 부하분산이 가능.
-> heterogenity(이종성) : 상이한 시스템간의 공유가 가능.
③ 단점
-> 별도의 SW가 필요.
-> 시스템에 대한 접근이 다양하기때문에 보안관리가 취약.
-> NW가 포화상태시 문제가 발생. NW가 부재인 상황이면 무용지물이 된다.
④ 분산처리와 집중처리의 차이점
*
그로슈의 법칙(law)가 불성립. -> 성능과 비용에 비례하지 않음. -> HW의 가격이 저렴해지고, 시스템 수준에서 병렬처리하는것으로 슈퍼컴퓨터에 근접한 성능이 가능하다. * 장점 : 시분할방식보다 높은 신뢰도 고가의 HW를 공유하기 쉽다. * 단점 -> 접근경로가 다양해서 취약한 보안. -> 가성비가 좋더라도 슈퍼 컴퓨터의 성능만큼은 아니다. |
* 그로슈의 법칙(law)가 성립. -> 대형화에 근거한 가격대와 성능으로 구성. * 장점 : 신뢰&안정&성능&유지보수성 좋다. * 단점 : 시스템 가동률에 잠재위험이 있다. -> 달걀을 한 바구니에 모아놓은 격. |
분산 시스템의 목적
① 자원공유-> 다수의 노드가 NW를 통해 상호연결
-> 한 노드에 있는 사용자가 다른 노드의 자원을 사용가능.
② 투명성(transparency)
-> 물리적 은닉(?). 시스템의 구성원들을 사용자가 인식할수 없다. (사용만 가능)
-> 위치에 대한 투명성 : SW/HW 자원의 위치를 몰라도 사용가능.
-> 이동에 대한 투명성 : 자원의 위치가 변경되도 사용자는 별 지장없이 사용가능.
-> 중복에 대한 투명성 : 같은 자원이 다수여도 사용자는 1개로만 인식.
가령 DNS에서 모든서버가 root서버로 작용해도 사용자에게는 하나의 root로만 인식되고 서비스를 받음.
-> 시스템장애 투명성 : 시스템 구성요소중 하나가 고장나도 사용자는 남은 구성원을 통해 서비스 이용가능.
-> 투명성을 지나치게 높이면 성능이 저하된다.
③ 개방성(openness)
-> 상이한 구성요소간의 호환&이식&확장이 가능.
-> 시스템내 자원들간의 상호작용이 가능하고, 구성원인 머신들의 플랫폼이나 언어에 상관이 없어서 인터페이스에 지장을 주지 않는다.
④ 확장성(scalability)
-> 사용자와 자원에 변동이 있어도 표면적으로 나타나지 않거나 관리자적 복잡성이 증가시키는것이 가능한 특성.
-> 구성원의 추가나 삭제에 유연서이 있는 시스템.
-> 자원의 분산, 캐싱, 자원의 복사본등을 사용해서 가능한 기술.
HW에서의 분산시스템
① 멀티프로세서-> bus기반. bus공유로 데이터 처리에 잠재적 문제 존재.
-> 확장가능.
-> 캐시사용으로 일관성.
② 멀티컴퓨터
-> Homogeneous : 같은 제조사 / 같은 기종 / 같은 모델 / 같은 성능으로 도배한거.
CPU 단위연결로 낮은 트래픽. CPU를 박스 형태로 연결.
-> Heterogeneous : CPU등이 제각각이여도 사용자 입장에서는 이들의 차이에 상관없이 이용이 가능.
③ 컴퓨터들의 네트워크
SW에서의 분산시스템
시스템 | 설명 | 시스템 목적 |
(Distributed Operating System) |
동프로세스와 (단일종)컴퓨터들의 연결도가 높다. 독립적인 컴퓨터들을 다루진 못한다. 멀티프로세서(메모리 공유 기반) 멀티컴퓨터(메시지 기반) 폐쇄적인 시스템 |
HW자원 관리와 은닉 -> 투명성 강조 |
(Network Operating System) |
이종 컴퓨터간 연결도가 느슨하다.(OOP처럼) 개방적인 시스템 |
원거리 사용자에게 서비스 제공 -> 로컬서비스 제공 강조 |
NOS에서 추가적인 레이어를 사용해서 서비스 제공을 용이하게 한다. | 분산 투명성 |
미들웨어
① 정의-> 분산 시스템에서 단일사용자 환경을 제공하고, 사양이 다른 시스템들이 네트워크를 연결하거나 클라이어트 서버 혹은 컴퓨터간의 연결을 담당하는 시스템 소프트웨어.
-> OS와 분산 어플리케이션 사이에 위치. 각기 분리된 2개 이상의 프로그램 사이에서 매개&연합하는 프로그램.
-> (예) ODBC/JDBC, JADE, CORBA
② 장점
-> NW로 연결된 일련성 있는 서비스를 가능하게 한다.
③ 단점
-> 성능상 문제가 있지만, HW자체의 성능향상으로 보완이 되었다.
-> 미들웨어 어플리케이션간에 중복되는 동작이 있을수 있다.
④ 기타
-> RPC : Remote Procedure Call
-> RMI : Remote Method Invocation
JAVA전용
RMI | CORBA |
JAVA에 한정된 기술 별다른 인증없이도 접근이 가능. |
다양한 언어에서 가능 인증이 안 된 접근은 차단. |
프로세스
① 프로세스 VS. 스레드(thread)-> 프로그램 : HW에 저장된 명령어 집합체
-> 프로세스 : 메모리상에 실행중이 프로그램.
멀티태스킹 | 멀티스레딩 |
프로세스 N개 / 1 OS | 스레드 N개 / 1 프로세스 |
② 프로세스간 통신법
-> 신뢰성 낮은 NW상에서 연결된 프로세스간 통신에선 효율이 중요.
-> 메모리공유 : 멀티프로세서에 적합
-> 메시지기반 : NOS에 적합. 시스템내 프로세스들이 사용.
RPC
① 분산컴퓨팅이 중앙화된 컴퓨터처럼 보이게 한다.② 메시지기반의 단점을 보완.
-> NW된 컴퓨터들을 관리
-> 클라이언트와 서버간의 통신이 가능.
-> 가상의 프로시져 호출을 위해 데이터와 컨트롤을 전달하는 것과 관련된 모든 세부사항 은닉
③ 2가지 전달방식
파리미터 전달형 | 참조 전달형 |
-> 메시지 팩 전달 -> 쉬운 전송 -> 이기종끼리는 데이터형이 달라지므로 XDR인코딩을 사용. |
-> 포인터 값을 전송. |
④ 굳이 UDP도 쓰는 이유?
-> RPC 메시지보다 작고, 패킷이 안정적
-> Stateless라서 복구가 용이하고, 클라이언트 접속량이 늘어도 수용이 가능.
-> RPC에는 잠재적 failure가 존재해서.
Statefull & Stateless
① Statefull : 시스템등에 접속하는 클라이언트들의 상태를 저장.시스템 에러시 복구하기 어려움.
과서 모뎀, PC통신등에서 사용한 방식.
② Stateless : 시스템등에 접속하는 클라이언트들의 상태를 저장하지 않는다.
확장성이 좋은 방식.
TCP/IP등등
기타등등.
① 에뮬레이션과 가상화의 차이는?에뮬레이션 | 가상화 |
HW적 접근. 하나의 컴퓨터가 다른 텀퓨터처럼 동작 |
SW적 접근. OS를 시스템 구소나 HW의 영향없이 설치가 가능. (예) VMware, VMplayer XPmode, VirtualBox등등 |
참고자료.
TXSeries for Multiplatforms Version 6.2
분산시스템
'📂기초 및 세팅 note > CS 기초' 카테고리의 다른 글
노트정리: 네트워크 기초 (0) | 2012.01.03 |
---|---|
노트정리: 자료구조 기초 (0) | 2012.01.03 |
프로세스의 정의와 이해 (0) | 2011.12.14 |
STL: 리스트&벡터&맵 (0) | 2011.05.24 |
Embedded: 타겟보드 포팅(porting), zImage, 램디스크(Ramdisk) (0) | 2011.04.25 |