dswarm
1.0.0
이는 UDP 멀티캐스팅의 관행이자 로컬 호스트에서의 DHT 실험입니다. 아이디어는 이 데몬의 인스턴스를 원하는 만큼 실행하는 것입니다. 모든 인스턴스는 UDP 멀티캐스트를 통해 서로를 찾고 dht 네트워크를 구축합니다. 네트워크의 각 피어는 ed25519 키 쌍을 생성하고 임의의 포트에 바인딩합니다. 포트는 다음 끝점에서 요청을 받는 http 서비스입니다.
/dht 엔드포인트는 websocket rpc 요청을 처리합니다.
/api 엔드포인트는 https 컬 요청을 제공합니다. 현재 구현된 유일한 rpc 호출은 "ping"입니다.
모두 진행 중인 작업입니다. 곧 더 많은 작업이 추가될 예정입니다.
각 인스턴스가 네트워크(또는 동일한 컴퓨터)에서 실행될 때 인스턴스는 5초마다 새로 생성된 공개 키, 임의 서비스 포트 및 결과적으로 IP 패킷의 자체 IP 주소가 포함된 UDP 패킷을 브로드캐스트합니다. 인스턴스가 UDP 멀티캐스트 패킷을 수신할 때마다 맵과 비교하여 새 피어의 공개 키를 확인하고, 새로 발견된 피어인 경우 이를 stdout에 기록하고 메모리의 맵에 추가합니다. 버킷은 5초마다 인쇄됩니다.
git clone
하거나 여기에서 다운로드하세요: master.zip./build.sh
사용하여 docker에서 빌드하거나 go build
사용하세요../demo.sh
실행하여 10개의 인스턴스를 생성합니다. curl -kvs https://localhost:port/api/ping
^^^ 이는 피어에게 버킷에서 가장 가까운 상위 3개 피어에 대해 RPC 핑을 수행하도록 지시합니다.
참고할 사항: