นี่คือแนวทางปฏิบัติใน UDP Multicasting และการทดลอง DHT ในโลคัลโฮสต์ แนวคิดคือการเรียกใช้ daemon นี้ให้มากเท่าที่คุณต้องการ และอินสแตนซ์ทั้งหมดจะค้นหากันและกันผ่าน udp multicast และสร้างเครือข่าย dht แต่ละเพียร์ของเครือข่ายจะสร้างคู่คีย์ ed25519 และเชื่อมโยงกับพอร์ตแบบสุ่ม พอร์ตเป็นบริการ http ที่รับคำขอที่จุดสิ้นสุดเหล่านี้:
จุดสิ้นสุด /dht ให้บริการคำขอ websocket rpc
จุดสิ้นสุด /api ให้บริการคำขอ https curl ตอนนี้การโทร rpc ที่นำไปใช้งานเพียงอย่างเดียวคือ "ping"
มันเป็นงานที่อยู่ระหว่างดำเนินการ งานที่จะเพิ่มเข้ามาเร็ว ๆ นี้
เนื่องจากแต่ละอินสแตนซ์ถูกดำเนินการบนเครือข่าย (หรือบนคอมพิวเตอร์เครื่องเดียวกัน) ทุกๆ 5 วินาที อินสแตนซ์จะออกอากาศแพ็กเก็ต UDP ที่มีคีย์สาธารณะที่สร้างขึ้นใหม่ พอร์ตบริการแบบสุ่ม และส่งผลให้ที่อยู่ IP ของตัวเองจากแพ็กเก็ต IP ตามมา แต่ละครั้งที่อินสแตนซ์ได้รับแพ็กเก็ตมัลติคาสต์ UDP อินสแตนซ์จะตรวจสอบคีย์สาธารณะของเพียร์ใหม่กับแมป หากเป็นเพียร์ที่พบใหม่ อินสแตนซ์จะบันทึกลงใน stdout และเพิ่มลงในแมปในหน่วยความจำ ที่ฝากข้อมูลจะถูกพิมพ์ทุกๆ 5 วินาที
git clone
โปรเจ็กต์นี้ หรือดาวน์โหลดที่นี่: master.zip./build.sh
เพื่อสร้างใน docker หรือใช้ go build
./demo.sh
เพื่อสร้างอินสแตนซ์สิบอินสแตนซ์ curl -kvs https://localhost:port/api/ping
^^^ สิ่งนี้จะบอกเพียร์ให้ดำเนินการ RPC ping กับเพียร์สามอันดับแรกที่ใกล้เคียงที่สุดในที่เก็บข้อมูล
บางสิ่งที่ควรทราบ: