문제

현재 무료 Pastry DHT로 일부 성능 테스트를하고 있습니다.FreePastry는 Java에서 수행 된 오픈 소스 DHT입니다.

특정 수의 노드가 내려갈 때 DHT의 효과를 모니터하는 것입니다.내 문제는 노드를 제거하는 가장 좋은 방법을 잘 모르겠습니다.현재 각 노드가 내 컴퓨터의 다른 포트에서 실행 중입니다.Pastry API http://www.freepstry.org/freepstry/javadoc21a3/rice/pastry/pastrynode.html#destroy ()

노드 오류를 시뮬레이션하는 데 비현실적 일 수 있고 TCPKILL을 사용하는 것과 같이 다른 방식으로 노드를 죽여야하는지 여부를 걱정할 수 있습니까?

나는 Mac OS X Snow Leopard를 실행하고 제안을 듣는 데 관심이있을 것입니까?

도움이 되었습니까?

해결책

노드 오류의 다른 형태가 있습니다.

가장 일반적인 것은 DHT를 실행중인 응용 프로그램이 종료되기 때문에 오프라인으로 이동하는 노드입니다.

국내 인터넷 연결의 동적 IP의 변경은 본질적으로 모든 기존 라우팅 테이블 항목에 대한 모든 기존 라우팅 테이블 항목이 무효화되어 있지만 모든 노드 수를 무효화하는 것과 같습니다. 당신은 하나를 잃고 새로운 것을 얻습니다.

또 다른 일반적인 문제는 NATS로 인한 도달 가능성 문제입니다. 해당 노드의 가시성은 NAT 유형과 최근 접촉 여부에 따라 달라질 수 있습니다.

churn의 결과 효과는 실제로 매우 복잡 할 수 있습니다. 우선, 개별 노드의 가동 시간은 일반적으로 지수 분포를 따릅니다. 많은 사람들이 짧은 시간 동안 만 사용할 수 있으며 며칠이나 몇 달 동안 안정적인 체류가 거의 없습니다.

네트워크의 90 %를 실제로 만드는 장기간 노드에 적당히 안정적으로 핵심적인 핵심이 있다고 가정합니다. 동일한 노드의 10 %가 끊임없이 존재하지 않고 끊어지고 일부 오버 헤드 트래픽을 유발할 수 있지만 네트워크에 많은 해를 끼치 지 않습니다. 당신은 많은 휘젓는 것이지만 충격이 거의 없습니다.

노드 인구의 10 %가 10 분 후에 오프라인 상태가되고 비활성 풀에서 새로운 노드 세트로 대체 된 경우 10 분마다 중복 10 %를 잃어 버렸습니다. 노드 간의 데이터 복제가 해당 없음을 유지하지 않거나 존재하지 않는 경우 데이터가 기하 급수적으로 붕괴됩니다. 당신은 또한 많은 휘젓는 것이지만 거대한 충격이 있습니다.

나는 어떤 시뮬레이션이 현실을 가장 좋은 방법으로 반영하는지 확실하지 않습니다. 가장 현실적인 제약 조건은 단순히 고정 된 풀의 잠재적 인 노드를 갖는 것 같습니다. DHT 구현이 설치된 컴퓨터입니다.

각 노드는 평균적으로 얼마나 오래 머물러 있는지, 평균 (두 매개 변수가 서로 상관 관계가있는 곳에서 서로 상관 관계가 있는지). 아마도 항상 켜져있는 것처럼 매우 긴 가동 시간입니다.) 각 노드는 독립적으로 이러한 매개 변수에서 작동합니다. 실제로 시간은 HTTP : //dsn.tm.uni-karlsruhe.de/english/2936.php

그래서 ... 긴 이야기가 짧아서 몇 가지 노드를 무작위로 달리고 죽이는 것만으로는 충격이 널리 다를 것이므로 DHT의 탄력성에 대한 현실적인 결과를주지 않습니다.

기술 부품에 대해서는 동일한 Java VM에서 모든 것을 실행하고 멀티 스레딩 또는 비 블로킹 IO를 사용하여 각 인스턴스를 별도의 VM으로 실행하는 오버 헤드를 줄이려면서 수행 할 수 있습니다. 이것은 또한 당신이 당신이 더 현실적인 방식으로 그들의 상승과 시동 시간을 예약 할 수 있습니다.

단일 컴퓨터에 여러 IP를 할당 할 수 있으므로 IP / 포트 수를 기반으로 간단히 컴퓨터에서 백합니다. 그러나 프로세스의 자원 소비는 최종적으로 가장 빠른 시스템조차도 완화 될 수 있습니다.

컴퓨터 당 몇 천 개의 노드가있는 네트워크 에서이 작업을 수행하여 현실적인 것을 얻을 수 있습니다.

실제 구현을 실행하는 대신 더 많은 수학적 시뮬레이션에 의지합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top