January 2008 Archives
1. Mobile objects reduce network traffic by transforming network conversations to local conversations making ongoing connections and data transfers unnecessary (reducing chatter).
2. Mobile objects reduce network load by going to where the data is rather than sending the data to where the processing is (reducing throughput).
3. Data exchange in distributed systems involves protocols that evolve. Mobile code can provide evolving adapters that handle legacy protocol channels without disturbing the network system.
4. Mobile devices rely on fragile networks. Mobile objects operate asynchronously and autonomously. Loss of connections does not affect the viability of mobile object code.
5. Mobile objects can sense their execution environment and react autonomously to changes. Multiple mobile objects, for example, can configure themselves in a network to optimally provide a solution.
6. Since mobile objects are computer and transport independent (they live within the mobile object runtime environment), they provide for seamless system integration.
7. Mobile objects ability to react dynamically to unfavorable situations make it easier to build robust and fault-tolerant systems.
8. There are no “killer mobile object applications” but merely applications that use mobile objects, or mobility, to their advantage. Mobility is a facet, not a defining feature, of applications that use mobility as a solution. The addition of a mobile object runtime environment brings potential to a distributed system not otherwise present.
9. Mobile objects are well suited to eCommerce because they (and no other distributed functionality) give real-time access to remote resources.
10. Mobile objects make excellent network assistants on behalf of their creators. For example, six mobile object representatives of six businessmen can meet at some common host and agree upon a time to meet.
11. If there are collaborators that do not trust one another, the mobile objects can so with a secure, trusted, third party host for collaborative purposes.
12. You can dispatch mobile objects to large volumes of data to create search indexes over time periods when the original machine may be down.
13. In large-scale networks requiring reconfiguration and user customization, mobile objects are useful as glue keeping the system together.
14. As workflow items, mobile objects embody the information and behavior they need to move through an organization independent of any particular application.
15. A mobile object can monitor a host without a need to stay in contact with its origins.
16. Mobile objects life spans can exceed that of their creator processes, e.g., for monitoring hosts.
17. Mobile objects incorporate a push model of communication and can be used to disseminate information (new, software updates). This is done independent of the originating process.
18. Mobile objects can clone themselves for purposes of parallel computing jobs.
- Atomic Capability One: mobile object technology can move code to cooperate with local code on a target system.
- Atomic Capability Two: mobile object technology allows a remote source to monitor, control, etc. what is happening on a target system or target systems.
THERE IS that wonderful song ("What do the simple folk do?") in Camelot (the movie) where Arthur and Guenevere are wondering what simple folk do to turn tears to mirth. Several conjectures are presented: they whistle, they sing, they dance, and they wonder what Arthur and Guenevere do. What do mobile objects do that is not done otherwise to brighten up our day, to give us the needed glow? Do you know? The simplest recipe for mobile object oomph follows.
Local objects communicate, as a rule, by using references: they call and message one another on the same machine. Distributed (remote) objects communicate in various ways but most usually through remote method invocation (remore procedural calls) and message passing via sockets and other networking devices on different machines.
Distributed objects differ from local objects in several particulars:
- Life cycle: The creation, migration and deletion of the objects differ.
- Reference: Remote references are much more complex than simple pointers to memory addresses in the same process.
- Request latency: A distributed request is orders of magnitude slower than local invocations.
- Object activation: Distributed objects might not always be available.
- Parallelism: Distributed objects can be executed in parallel.
- Communication: There are different communication primitives available for distributed objects requests.
- Failure: Distributed objects have more points of failure.
- Security: There are vulnerabilities specific to the distribution of the objects.
- Objective C using the Cocoa API with the NSConnection class and support.
- Java RMI
- CORBA allows distributed mixed object systems.
- DCOM is a framework for distributed objects on the Microsoft platform.
- DDObjects is a framework for using distributed objects on Borland Delphi.
- JavaSpaces is a Sun Microsystems specification for distributed, shared memory.
- Pyre is a framework for distributed objects with Python.
- Distributed Ruby (DRb) is a framework for distributed objects using Ruby.
The following graphics indicate visually local versus distributed objects at the simplest level. Local object communication is on the same machine.
Distributed object communication is on different machines. Mobile objects provide a combination/merger of the virtues of each of these object communication paradigms. Mobile object communication is both on different machines and on the same machine.
Conversely, when you have local communication that is problematic because you need remote (global) configuration or management, try mobile objects.
The preceding is the simplest measure of when you should be using mobile objects. Think of the mobile object runtime environment (MORE) as a locally existent template for global configuration of object communications. Very often you might find yourself in a quandary about how to solve a simple network problem that is easily resolved by the Mobile Object Pattern.
One way to do this is use MOs. In effect, what this would involve is making each computer in the cluster a "blank slate" with no application specific code on them. Installing an operating system and our MO runtime, Kolona, on each computer would enable new code to be dispatched to any (or all) of the machines as needed. Because each machine can perform any computation at any time, the cluster can be used for a variety or purposes as needed. One could even have many types of calculations occurring on the cluster at the same time by moving different type of MOs to different machines in the cluster. So, one day the cluster can be doing graphic rendering and the next day something else...without having to change any of the machines' installed code.
This usage of MOs for distributed computing is not limited to calculations but can be used for data processing. One could use a privileged MO to install a special type of Kolona component called a Service Object (SO). SO's provide services to MOs via an application specific interface. For this example I'm going to install a SO that provides block-based storage. The nodes of the cluster will have this generic ability for MOs to store and retrieve blocks of data. The actual contents of the blocks are not defined by this block-storage SO. Rather, MOs are able to use the block-storage service in any way they see fit. For example, one could use a swarm of MOs to migrate to each node of a cluster and search for some piece of data in parallel, as if the blocks represented a large database. Simply using different mobile objects can change the capabilities of the cluster’s storage service.
I'll be talking more about the use of MOs for distributed computing more in the future because this topic is fascinating to me. The future of computing is parallelism. This is not true just for super-computer like clusters but is also becoming evident for desktop machines. At present, four-core machines are readily available for purchase at Best Buy for $1000. Anyhow, I believe MOs are a valuable addition to the world of distributed computing. More next week!
1. Mobile objects reduce network traffic by transforming network conversations to local conversations making ongoing connections and data transfers unnecessary (reducing chatter).
2. Mobile objects reduce network load by going to where the data is rather than sending the data to where the processing is (reducing throughput).
3. Data exchange in distributed systems involves protocols that evolve. Mobile code can provide evolving adapters that handle legacy protocol channels without disturbing the network system.
4. Mobile devices rely on fragile networks. Mobile objects operate asynchronously and autonomously. Loss of connections does not affect the viability of mobile object code.
5. Mobile objects can sense their execution environment and react autonomously to changes. Multiple mobile objects, for example, can configure themselves in a network to optimally provide a solution.
6. Since mobile objects are computer and transport independent (they live within the mobile object runtime environment), they provide for seamless system integration.
7. Mobile objects ability to react dynamically to unfavorable situations make it easier to build robust and fault-tolerant systems.
8. There are no “killer mobile object applications” but merely applications that use mobile objects, or mobility, to their advantage. Mobility is a facet, not a defining feature, of applications that use mobility as a solution. The addition of a mobile object runtime environment brings potential to a distributed system not otherwise present.
9. Mobile objects are well suited to eCommerce because they (and no other distributed functionality) give real-time access to remote resources.
10. Mobile objects make excellent network assistants on behalf of their creators. For example, six mobile object representatives of six businessmen can meet at some common host and agree upon a time to meet.
11. If there are collaborators that do not trust one another, the mobile objects can so with a secure, trusted, third party host for collaborative purposes.
12. You can dispatch mobile objects to large volumes of data to create search indexes over time periods when the original machine may be down.
13. In large-scale networks requiring reconfiguration and user customization, mobile objects are useful as glue keeping the system together.
14. As workflow items, mobile objects embody the information and behavior they need to move through an organization independent of any particular application.
15. A mobile object can monitor a host without a need to stay in contact with its origins.
16. Mobile objects life spans can exceed that of their creator processes, e.g., for monitoring hosts.
17. Mobile objects incorporate a push model of communication and can be used to disseminate information (new, software updates). This is done independent of the originating process.
18. Mobile objects can clone themselves for purposes of parallel computing jobs.
There are many more uses we will discuss eventually on this blog. Here is the symbol for a mobile object.
Looks like a jockey's head, doesn't it?
Next on the Mobile Landscape: How can you make mobile objects work for you?
[1] Danny B. Lange , Oshima Mitsuru, Programming and Deploying Java Mobile Agents Aglets, Addison-Wesley Longman Publishing Co., Inc., Boston, MA, 1998.
Today I'm going to introduce the concept of Mobile Objects (often abbreviated MOs). In brief, a mobile object is running code that is capable of transferring its execution to another machine. This transfer involves migrating the state of the running code as well as the compiled code itself. Now, migrating code to different machines willy nilly can bring about security issues. We use our technology to ensure that MOs are not allowed to access resources on the machines they migrate to without asking for and being granted permission to do so.
To enable this type of MO technology, we use Kolona. Kolona is a Topia Technology software product that hosts MOs, ensures they are secure, and provides services to them so they can do neat things.
Starting soon, I will be presenting on a regular basis some of the neat things we are doing with MOs here at Topia. I will also be presented some interesting ideas of where we want our MO technology to go in the future.
Stay tuned....
