As we all know P2P is nothing new, it is basically distributed computing packaged into the glossy P2P term. This is something that really makes me annoyed, but what is far more worse is the fact that articles like the one in NetWorld Fusion is largely incorrect, when it comes to the technical part of it, and oversimplified.
There are lots of technology that has existed for years that perform similar functionality, like Distributed OS / DB / FS, and cluster technologies. Of course, not all of these implementations are focused on what they want to achieve with a system in this article, but there are also some that will do the exact same job.
Ther are things missing in the article, and there are some of the humourus suggestions.
For example:
"Intel is testing a new peer-to-peer application that the company says will save WAN bandwidth and deliver applications and data more quickly than existing technologies"
This is by the way know as a distributed / hierarchichal caching proxy.
"Mangosoft next week plans to announce Mangomind, which it is billing as the first multiuser, Internet-based, file-sharing service that provides real-time file sharing for secure business communications. The new service is a secure way for multiple users to access, share and store files. Mangomind will let users work on their files offline. When users go back online, Mangomind automatically updates and synchronizes their files."
This is already known as AFS or Coda, Coda allows caching and disconnected operations, and believe it or not is architecture independent, which allow you to operate over the internet.
"Kirschner likes Porivo's offering because the desktop client works with Windows 95. Others, such as TurboLinux's EnFuzion software, only support Windows NT and various flavors of Unix."
Who would ever, except for Kirschner, consider using Windows 9x for what is inherently concurrent computing. Widnows 9x is not capable of propper concurrency.
But what is really lacking in this article is a description of the costs and consequences of implementing this in an environment.
Look at the top diagram, it points out that you can share/distribute CPU and disk usage. But for that to happen you need several upgrades of the client. First of all, you would need something else that an IDE disk on each client, since IDE is not capable of concurrency. Second of all you would need to upgrade your network, because it wont work efficiently on a 10Mbit network, you would need a Gbit network, this also includes the rest of the network infrastructure. Thirdly, you need user software that is capable of distributing processing jobs among the processors on the cluster, i.e. heavily threaded software. All this costs money and stil the software part might not be available for the software the company is using.
There is also the isssue of processing power gained, you have to analyse the load of the computers where you want to implement this to see how much can actually be gained by doing this. Of course there is lots of unused power lying around, but if the gain is only 10% then it is probably not worth it.
There is also the security aspect, escpecially for distribution of disks, and especially if you are using those disks to store company documents on them. The machines would be physically more accessible to thiefs. Or what if the user turns off the power of the machine, without shutting down, that might make, in the worst case, documents inaccsessible, or computing data lost.
Therefore, data storage should be on server clusters instead, and only use the clients for CPU/memory sharing
Lastly the article asks the question about what to do if the computer is busy, and the suggestion to that problem, according to the article, is that P2P should only run when the screensaver runs.
The question I have about that is, how often does the screensaver run compared to the load on the computer throughout the day, not often. Therefore you would not get much benefit of the "P2P" technology. A simple but much better solution is to use a priority configuration for local and networked processes, the simplest could be give local processes higher priority that networked processes. Of course the priority system is not by any means simple a simple system, so it cant be done out of the box, it depends on what really needs to run at higher priority than other processes.
There is probably a lot I forgot to mention, but what was stated, certainly applies as a critique to this article and P2P in general.
I don't know what kind of application your are planning on writing, but for 1 to 1 computer communication Corba should be enough. Others have mentioned EJB, but that is only interresting if you plan on setting up an application server (i.e. n to 1 communication) or something of the sort where you are sharing a server with multiple users.
Since you've already pretty much decided on using Corba as your middleware, and you have a need for multilanguage and multiplatform support, I would suggest you took a look at Orbacus (http://www.ooc.com). It has some features that you need. It is written in Java, so you can run it on any platform(at least theoretically). I ran a NT server with Gemstone app.server and a client on a Linux box with the Blackdown VM and the Gemstone class jars from the NT server, and had no problems, at least for that project. And, I don't think it would be much different for any other platforms. Just make sure you use a propper VM and class jars.
When it comes to the multilanguage part, Orbacus generated ORB class code for at least Java and C++, if I am not mistaken too badly. I don't know how easy it is to get an ORB code generator for Perl, but there might be someone out there who has done it.
You should check the Orbacus web site for the detailed spesifications.
Cheeers
Now for the disclaimer: It has been 6 months since I used Orbacus, so, not everything I said might be completely correct.
And for the usual one: "This disclaimer supersedes all previous ones.
The views expressed here does not nessecarily represent the views of my employer, the university, me or the view out my window. All things considered, the views might just as well be the views of my cat."
I have had my unfair share of problems with the smbfs and smbmount. The smbmount command that don_bailey posted, did not work for me. The only type of command that at least comes as far as asking for a password, but complain about "invalid argument", is as follows:
I also get an error message in the message log that states as follows: May 26 14:14:50 hrotti kernel: SMBFS: need mount version 6
I am currently running a 2.2.3 kernel, with smbfs as kernel driver, samba-1.9.18p10-3, smbmount version is 2.0.1
While suffering from this problem I have had to resort to the smbclient. Which for me, is not at all a satisfying solution, since I copy files to and from the share allmost constantly during a day.
Does anybody have any comments on what might be wrong with the command ?
As we all know P2P is nothing new, it is basically distributed computing packaged into the glossy P2P term. This is something that really makes me annoyed, but what is far more worse is the fact that articles like the one in NetWorld Fusion is largely incorrect, when it comes to the technical part of it, and oversimplified.
There are lots of technology that has existed for years that perform similar functionality, like Distributed OS / DB / FS, and cluster technologies. Of course, not all of these implementations are focused on what they want to achieve with a system in this article, but there are also some that will do the exact same job.
Ther are things missing in the article, and there are some of the humourus suggestions.
For example:
"Intel is testing a new peer-to-peer application that the company says will save WAN bandwidth and deliver applications and data more quickly than existing technologies"
This is by the way know as a distributed / hierarchichal caching proxy.
"Mangosoft next week plans to announce Mangomind, which it is billing as the first multiuser, Internet-based, file-sharing service that provides real-time file sharing for secure business communications. The new service is a secure way for multiple users to access, share and store files. Mangomind will let users work on their files offline. When users go back online, Mangomind automatically updates and synchronizes their files."
This is already known as AFS or Coda, Coda allows caching and disconnected operations, and believe it or not is architecture independent, which allow you to operate over the internet.
"Kirschner likes Porivo's offering because the desktop client works with Windows 95. Others, such as TurboLinux's EnFuzion software, only support Windows NT and various flavors of Unix."
Who would ever, except for Kirschner, consider using Windows 9x for what is inherently concurrent computing. Widnows 9x is not capable of propper concurrency.
But what is really lacking in this article is a description of the costs and consequences of implementing this in an environment.
Look at the top diagram, it points out that you can share/distribute CPU and disk usage. But for that to happen you need several upgrades of the client. First of all, you would need something else that an IDE disk on each client, since IDE is not capable of concurrency. Second of all you would need to upgrade your network, because it wont work efficiently on a 10Mbit network, you would need a Gbit network, this also includes the rest of the network infrastructure. Thirdly, you need user software that is capable of distributing processing jobs among the processors on the cluster, i.e. heavily threaded software. All this costs money and stil the software part might not be available for the software the company is using.
There is also the isssue of processing power gained, you have to analyse the load of the computers where you want to implement this to see how much can actually be gained by doing this. Of course there is lots of unused power lying around, but if the gain is only 10% then it is probably not worth it.
There is also the security aspect, escpecially for distribution of disks, and especially if you are using those disks to store company documents on them. The machines would be physically more accessible to thiefs. Or what if the user turns off the power of the machine, without shutting down, that might make, in the worst case, documents inaccsessible, or computing data lost.
Therefore, data storage should be on server clusters instead, and only use the clients for CPU/memory sharing
Lastly the article asks the question about what to do if the computer is busy, and the suggestion to that problem, according to the article, is that P2P should only run when the screensaver runs.
The question I have about that is, how often does the screensaver run compared to the load on the computer throughout the day, not often. Therefore you would not get much benefit of the "P2P" technology. A simple but much better solution is to use a priority configuration for local and networked processes, the simplest could be give local processes higher priority that networked processes. Of course the priority system is not by any means simple a simple system, so it cant be done out of the box, it depends on what really needs to run at higher priority than other processes.
There is probably a lot I forgot to mention, but what was stated, certainly applies as a critique to this article and P2P in general.
Glo
--
I don't know what kind of application your are planning on writing, but for 1 to 1 computer communication Corba should be enough. Others have mentioned EJB, but that is only interresting if you plan on setting up an application server (i.e. n to 1 communication) or something of the sort where you are sharing a server with multiple users.
Since you've already pretty much decided on using Corba as your middleware, and you have a need for multilanguage and multiplatform support, I would suggest you took a look at Orbacus (http://www.ooc.com). It has some features that you need. It is written in Java, so you can run it on any platform(at least theoretically). I ran a NT server with Gemstone app.server and a client on a Linux box with the Blackdown VM and the Gemstone class jars from the NT server, and had no problems, at least for that project. And, I don't think it would be much different for any other platforms. Just make sure you use a propper VM and class jars.
When it comes to the multilanguage part, Orbacus generated ORB class code for at least Java and C++, if I am not mistaken too badly. I don't know how easy it is to get an ORB code generator for Perl, but there might be someone out there who has done it.
You should check the Orbacus web site for the detailed spesifications.
Cheeers
Now for the disclaimer:
It has been 6 months since I used Orbacus, so, not everything I said might be completely correct.
And for the usual one:
"This disclaimer supersedes all previous ones.
The views expressed here does not nessecarily represent the views of my employer, the university, me or the view out my window. All things considered, the views might just as well be the views of my cat."
I have had my unfair share of problems with the smbfs and smbmount. The smbmount command that don_bailey posted, did not work for me. The only type of command that at least comes as far as asking for a password, but complain about "invalid argument", is as follows:
//server_name/share_name /mount_point -U user_name -I ip_addr
smbmount
I also get an error message in the message log that states as follows:
May 26 14:14:50 hrotti kernel: SMBFS: need mount version 6
I am currently running a 2.2.3 kernel, with smbfs as kernel driver, samba-1.9.18p10-3, smbmount version is 2.0.1
While suffering from this problem I have had to resort to the smbclient. Which for me, is not at all a satisfying solution, since I copy files to and from the share allmost constantly during a day.
Does anybody have any comments on what might be wrong with the command ?