Jump to content

Recommended Posts

Posted (edited)

So, I have been thinking about implementing something into a project I am developing. Here is a diagram of how it will work:

 

diagram.png

 

The basic idea is crowd hosting on mobile platforms(because of the project I am developing). I am implementing another feature called voluntary crowd hosting, where a person can choose to crowd host on their mobile device. How it works is there is communication between the recipient and both the crowd hoster and the server containing the content. Both the main server and the crowd hoster(s) contain data. Whenever a recipient requests certain content, something will search for that content. If the recipient both allows content from the server and crowd hosters, the content search will display both the requested content that is available on the main server and the same content that is available on crowd hosting devices.

 

How this works is a recipient(or multiple) send a request to the server. The server, if requested, will then send a request to the crowd hoster's device which then download the data from the crowd hoster to the server. That requested data on the main server will then be sent to the recipient and deleted on the main server(unless the content is requested, which then it will remain on the server until no longer requested).

 

Are the basic mechanics sound? The only problems that I think could be faced are server stress and an attempt to break the security of the system.

 

EDIT: The cool thing I find about this idea is if more and more people voluntarily become crowd hosters, then there is more server space. There are other things involved, such as if someone crowd hosts when their own hosted content will be recognized. Recipients can also be crowd hosters, so it would be a huge network.

Edited by Unity+
Posted

This is an area of distributed computing. Most of what I've seen is distributed processing, such as BOINC, where people volunteer to dedicate a bit of cpu on their devices to perform computations/processing for some data intensive project either aiding a (super)computing cluster or something of that sort. This works because it's not completely reliant on the client nodes, as the server will do whatever processing they don't.

 

However, if you delegate data storage responsibilities to users' phones, you'll be completely reliant on them for that data. I.e., if there is a node X (phone/smart-device) containing the content/data and you route any requests to that resource from another node Y to it, and node X is either off, broken, or not connected to the internet, node Y will not be able to access the resource. Even if you have multiple nodes hosting the same content, that situation is likely to arise, and then permanently when they're all replaced/broken (probably max a few years). If you store it both on the server and on the phones, then there is no advantage to the distribution, and it just causes an extra load on your server.

 

However, there does seem to have been some real work done in the area, so it might just prove fruitful to implement given a bit more research. Here is a relavent patent that may have some more information for you on how such a system would work, and possibly a heads-up on exactly how not to implement it (so that you don't infringe on their intellectual property and get sued, unless you can get permission from them): http://www.google.com/patents/US7546342.

 

Here is an actual build of such a distributed memory system that seems to have developed some sort of solution to that broken node problem I discussed, maybe you should look into it: http://en.wikipedia.org/wiki/OpenSSI.

 

Here is a relevant paper that might also be useful: http://www.sersc.org/journals/IJMUE/vol2_no3_2007/1.pdf.

Posted

This is an area of distributed computing. Most of what I've seen is distributed processing, such as BOINC, where people volunteer to dedicate a bit of cpu on their devices to perform computations/processing for some data intensive project either aiding a (super)computing cluster or something of that sort. This works because it's not completely reliant on the client nodes, as the server will do whatever processing they don't.

 

However, if you delegate data storage responsibilities to users' phones, you'll be completely reliant on them for that data. I.e., if there is a node X (phone/smart-device) containing the content/data and you route any requests to that resource from another node Y to it, and node X is either off, broken, or not connected to the internet, node Y will not be able to access the resource. Even if you have multiple nodes hosting the same content, that situation is likely to arise, and then permanently when they're all replaced/broken (probably max a few years). If you store it both on the server and on the phones, then there is no advantage to the distribution, and it just causes an extra load on your server.

 

However, there does seem to have been some real work done in the area, so it might just prove fruitful to implement given a bit more research. Here is a relavent patent that may have some more information for you on how such a system would work, and possibly a heads-up on exactly how not to implement it (so that you don't infringe on their intellectual property and get sued, unless you can get permission from them): http://www.google.com/patents/US7546342.

 

Here is an actual build of such a distributed memory system that seems to have developed some sort of solution to that broken node problem I discussed, maybe you should look into it: http://en.wikipedia.org/wiki/OpenSSI.

 

Here is a relevant paper that might also be useful: http://www.sersc.org/journals/IJMUE/vol2_no3_2007/1.pdf.

Well, it wouldn't be distribution of one website among multiple computers, but hosting of many websites upon one device. Also, the files are also stored(offline) on the device that published the content, therefore not causing a problem.

Posted

Well, it wouldn't be distribution of one website among multiple computers, but hosting of many websites upon one device. Also, the files are also stored(offline) on the device that published the content, therefore not causing a problem.

 

If you're referring to what I said in paragraph two, line two, sentence two, I meant that was one thing you could do. The rest of the description of the problem before that discussed the case with just one mobile device hosting. Anyway, being familiar with your project (or at least I think it's the one you're talking about), the files need to be accessible all the time if they're published, not just offline on the developer's phone.

Posted

 

If you're referring to what I said in paragraph two, line two, sentence two, I meant that was one thing you could do. The rest of the description of the problem before that discussed the case with just one mobile device hosting. Anyway, being familiar with your project (or at least I think it's the one you're talking about), the files need to be accessible all the time if they're published, not just offline on the developer's phone.

I am still trying to find a way to solve for that. What I was going to do was have it so if the web hosting is discontinued, it would automatically download to the server and simply move onto another crowd hoster.

Posted

I am still trying to find a way to solve for that. What I was going to do was have it so if the web hosting is discontinued, it would automatically download to the server and simply move onto another crowd hoster.

 

Ah, sounds good, but how would you know if the web hosting is discontinued? If their phone breaks, they lose internet connectivity, they turn their phone off, or anything along those lines, it would just cease serving the file, and there wouldn't be any way for the server to get it after that.

 

Have you read any of those articles I posted?? They propose solutions for such problems, one concisely on the OpenSSI wiki page.

Posted (edited)

 

Ah, sounds good, but how would you know if the web hosting is discontinued? If their phone breaks, they lose internet connectivity, they turn their phone off, or anything along those lines, it would just cease serving the file, and there wouldn't be any way for the server to get it after that.

 

Have you read any of those articles I posted?? They propose solutions for such problems, one concisely on the OpenSSI wiki page.

I actually have been reading those slowly. Time is limited for me because college is starting. I will start reading more of them. :P

 

 

 

OpenSSI is designed to be used for both high performance and high availability clusters. It is possible to create an OpenSSI cluster with no single point of failure, for example the file system can be mirrored between two nodes, so if one node crashes the process accessing the file will fail over to the other node. Alternatively the cluster can be designed in such a manner that every node has direct access to the file system.

That is actually a good idea. I will use it.

Edited by Unity+

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.