티스토리 뷰

개발자노트

DHT(Distributed Hash Table)

앤디군 2005. 11. 16. 23:31
DHT(Distributed Hash Table)이란 이름에서 알 수 있듯이 시스템 내의 각 노드(node)들이 키 셋을 나누어 가지고 있는 분산 시스템을 말한다. DHT시스템 외부에서 보면 일반 해쉬 테이블과 다를 게 없지만 일반적인 해쉬 테이블과 다른 특성을 가지고 있다.

특성
1. Decentrialisation : DHT 시스템 전체를 중앙에서 관리하는 조직이 없다.
2. Scalability : DHT를 이루고 있는 노드 수에 영향을 받지 않고 확장할 수 있다.
3. Fault tolerance : DHT 시스템 내부에 노드가 추가되거나 없어지거나 오동작을 하더라도 DHT시스템 전체의 기능에 영향을 끼치지 않는다.

기존 P2P솔루션은 Napster와 같이 중앙집중관리 방식과 Gnutella와 같이 주변 노드들을 활용하는 완전히 분산된 네트워크를 구성하는 방식이 있다. P2P네트워크를 중앙에서 컨트롤할 경우에 네트웍 이용효율은 좋아지겠지만 컨트롤이 중앙에 모여있기 때문에 중앙 관리 시스템이 취약점이 될 수 있다. Peer에 의지하는 방식은 중앙 집중 조직이 없어서 뚜렸한 취약점은 없지만 네트웍을 비효율적으로 사용한다는 문제가 있다. DHT는 structured key based routing이라는 방법으로 위와 같은 P2P시스템의 약점을 극복 했다.

DHT는 크게 Keyspace partitioning, Overlay network의 두부분으로 나뉘는데 해쉬의 키 집합들을 DHT시스템 내부의 각 노드에 분산(keyspace partitioning)시키고 DHT의 엔트리 포인트에 상관없이 키의 위치를 찾아갈 수 있도록 라우팅하는 알고리즘을 이용해서 DHT시스템 내부의 네트워크(overlay network)를 떠돌며 목적지를 찾아가게 된다. 이게 바로 structured key based routing인데 쉽게 얘기하자면 해쉬 테이블 내부의 버킷(bucket)을 그룹으로 묶고 그룹 사이를 링크로 연결하여 자기가 원하는 정보가 있는 그룹을 찾아갈 수 있도록 해주는 것이다. 외부에서 보면 해쉬처럼 보이지만 내부에서 원하는 버킷을 찾아가는 방식은 기존의 해쉬와 다르다.
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함