Distribution related questions.

Hi,

I'd like to build and application that will distribute it's database across multiple machines by encoding the files conerned and making them available as sources to other copies of the application, so that the said application can decode and download a file from this fragmented database when the user requests it. I don't understand the mechanics and technicalities of the BitTorrent system so i was hoping someone could tell me if this is feasible or not.

The reason i want to do this is that i'd like to build a basic software repository for the distribution of freeware files across the internet. I want the files to be uploaded to one server initially. When they are requested by the application installed on the client's computer, then they will be downloaded to that computer and the downloaded file would then become another source, so the more popular the download is the faster it will download. Now i understand that this is in essence the bittorrent/P2P method (thought i am unfamiliar with either), so i was wondering if i could layer the service on top of an existing system? That way the original installation file of the software concerned could be spread across many servers and systems to reduce strain on the initial server and increase overall download speeds.

If my request is a little baffling i could try and rephrase!

Thanks in advance.

P.S. I'd like to tie this all in with XML on the original server which the application can use to view the database contents.

#413986

Easiest method:

One "delegator" server, that delegates requests to one of the multiple file-servers.

Pro's:

+ Easy to set up

+ Easy to understand

+ Synchronisation is pretty easy, since there is one access point

Con's:

+ One-access point, thus one point of failure [if the delegator goes down, the system goes down]

+ limited by number of connections

+ there are better solutions

There's a lot of well funded theory on distributed systems - the famous A. Tanenbaum has written a pretty easy-to-read book on it, called Distributed Systems.

#413988

Thanks for the pointers. I'll look into that book, but in the meantime, the delgator system seems quite suitable. I'll somewhat counter the reliability and capacity issues of the system by mirroring the delegators (which would also have to serve as file servers initially when the file first appears on the network) across a few servers. It's also a nice place to start from while it's still a small project :) Then if i discover the need for a more robust system i'll alter it accordingly. My other main concern will be maintaining the network using computers with dynamic IPs. I guess a system whereby the application updates the delegator by checking the IP address each time it is launched would be simple and effective enough?

#413994