Search code examples
c#p2pdistributed-systemdht

Distributed System Topology


Trying to implement an electronic voting system as a college project and just faced the most important step towards my aim < the system architecture >

Multi-Server/Multi-Client , MUST really be reliable to the point of about 80 million clients are online , It also MUST permit new server joining to support the voting process , Its output will be statistics & reports so that it MUST allow me gathering information at any time , Supporting encryption , hashing , digest acks , .. etc

My aim is just to support lots of clients without central point of failure then make client fount the suitable server(s) to authenticate & vote
Suitable server(s) depends on 2 criteria :

  • Server distance priority
  • Server load priority

First criteria used Initially only , Both are used during voting process

After searching samples around my project found 6 solutions :

  • Dynamic DNS server in between servers & clients
  • Web Farm Load Balancing Dispatcher in between clients & servers
  • Serverless p2p cloud of servers , client join as the server of p2p using PNRP to get list of servers
  • Serverless/State-Server p2p cloud of servers , client connects to state server to get list of servers
  • Servers tree down from main server
  • DHT network & database system

From my point of view last solution was the suitable as there isn't any bottle neck point of failure , this leads me start searching an out of box DHT library or full distributed system to be integrated in my application or just reinvent the wheel & implement the whole thing from scratch !!

Questions :
- Did i choose the right solution ?
If YES , Please point me to the right route leads to an out of box [ .NET ] library or system !
If NO , Please point me to the suitable [ .NET ] solution even that I didn't mention it in my 6 solutions !

Regards ,


Solution

  • NChord could get you started without having to start from scratch and probably will be good enough for an academic project.