Minggu, 24 Juli 2011

Grid Computing System

Grid computing is applying the resources of many computers in a network to a single problem at the same time - usually to a scientific or technical problem that requires a great number of computer processing cycles or access to large amounts of data. A well-known example of grid computing in the public domain is the ongoing SET1 (Search for Extraterrestrial Intelligence) @Home project in which thousands of people are sharing the unused processor cycles of their PCs in the vast search for signs of “rational” signals from outer space. According to John Patrick, IBM’s vice-president for Internet strategies, “the next big thing will be grid computing.”

The architecture of Grid Computing System consists of four layer

Figure 1: Grid Layered Architecture


In Figure 1, the bottom “Fabric” layer represents different distributed resources from different administrative domains, such as supercomputers or parallel computing clusters, storage systems, scientific instruments and data resources. Those resources are managed by domain-specific resource managers and users access them via the non-standard interfaces of the resource managers or directly via the Operating System API. On a computing resource, the local resource manager, known as the local scheduler or batch scheduler, is responsible for allocating computing elements to users’ jobs, launching them and monitoring their executions. Some well-known local schedulers include Sun Grid Engine (SGE) , Platform Load Sharing Facility (LSF), Portable Batch System (PBS) and IBM Load Leveler. System administrators of these systems may also deploy a resource monitoring system, such as Ganglia, to report resource load/failure status. 

From bottom-up, the second layer, the “Connectivity” layer provides the core capabilities of the grid architecture for sharing individual resources, namely, the security infrastructure and the networking protocol. The security infrastructure is the middleware solutions to the grid security issues we mentioned before, and it is the core of the grid architecture. Currently, the standard solution is the Grid Security Infrastructure (GSI), which uses public key cryptography as the basis for its functionality. The networking capabilities make use of the widely deployed standard protocols, such as HTTP, TCP/IP, etc., and recently, web service communication protocols, such as SOAP, also become part of this layer as the grid architecture moves to service oriented architectures.

The third layer, the “Resource” layer, provides interfaces for single resource sharing, which include remote computational resource access, data sharing and replication and resource monitoring and auditing. From this layer, users are able to access individual resources using standard grid interfaces. Middleware solutions in the “Resource” layer and the “Connectivity” layer address those grid issues we mentioned in the last section and provide a standard and uniform interface to build higher level services to access multiple resources collaboratively. The middlewares in these two layers serve as the software glue between the grid resources and the applications. The open source Globus Toolkit is the de facto standard for providing these middlewares. We have a dedicated section next to introduce it.

While the “Resource” layer is focused on interactions with a single resource, the next layer in the architecture contains protocols and services that are not associated with any one specific resource but rather capture interactions across collections of resources. For this reason, the next layer of the architecture is referred to as the “Collective” layer, the fourth layer in Figure 1. Typical services include resource co-allocation, application scheduling on multiple resources, application workflow execution and monitoring, data discovery and retrievals. The work described in this dissertation belongs to this layer. Software developed in this layer varies according to the application needs of the upper “Applications” layer and it is hard to provide a general solution that fits the various types of applications. 

Softwares in the “Applications” layer provide an end-user environment to use a grid for domain applications, for example, a portal interface to submit computation job or transfer files from web browser; an interface or tool to develop grid applications. The middleware functionalities in this layer also depend on the requirements of applications and users, and they are developed together with services in the “Collective” layer.

To build a grid, the development and deployment of a number of middlewares are required, including those for the standard services, such as security, information, data and resource allocation services, and those services for application development, execution management, resource aggregation, and scheduling. Again, choosing which middleware to develop and/or to deploy depends on the requirements of both the applications and users, and there is no standard configuration for setting up a general-purpose grid.

Nested Transaction

Nested transaction occurs when a new transaction is started by an instruction that is already inside an existing transaction. The new transaction is said to be nested within the existing transaction, hence the term.

Nested transactions are implemented differently in databases. However, they have in common that the changes are not made visible to any unrelated transactions until the outermost transaction has committed. This means that a commit in an inner transaction does not necessary persist updates to the database.

In some databases, changes made by the nested transaction are not seen by the ‘host’ transaction until the nested transaction is committed. According to some,this follows from the isolation property of transactions.

The capability to handle nested transactions properly is a prerequisite for true component based application architectures. In a component-based encapsulated architecture, nested transactions can occur without the programmer knowing it. A component function may or may not contain a database transaction (this is the encapsulated secret of the component. If a call to such a component function is made inside a BEGIN - COMMIT bracket, nested transactions occur. Since popular databases like MySQL do not allow nesting BEGIN - COMMIT brackets, a framework or a transaction monitor is needed to handle this. When we speak about nested transactions, it should be made clear that this feature is DBMS dependent and is not available for all databases

Types of Communication Middleware


1.  Message oriented middleware (MOM)

An application component can effectively send a request to another application by doing a local procedure call, which result in the request being package as a message and sent to the calle. The result will be sending back and returned to the application as the result of the procedure call. The calle need to be up and running at the time of communication. They need to know exactly how to refer to each other.
2.  Remote method invocations (RMI)

RMI is essentially the same as RPC, except that it operates on objects instead of application. As the popularity of object technology increased, techniques were developed to allow calls to remote objects. The caller need to be up and running at the time of communication. They need to know exactly how to refer to each other.


3.  Remote procedure calls (RPC)

The application simply send message to logical contact points, often described by means of a subject. The application can indicate their interest for a specific type of message, after which the communication middleware will take care that those messages are delivered to those application.

Distributed Pervasive System


     Distributed Pervasive Systems are often characterized by being small, battery-powered, mobile, and having only a wireless connection, although not all these characteristics apply to all devices. The part of our surroundings and an important feature is the general lack of human administrative control. The devices can be configured by their owners, but otherwise they need to automatically discover their environment and “nestle in” as best as possible. There are three requirements for pervasive application:
  • Embrace contextual changes: a device must be continuously be aware of the fact that its environment may change all the time. One of the simplest changes is discovering that a network is no longer available. The application should react, possibly by automatically connecting to another network or taking other appropriate actions.
  • Encourage ad hoc composition: the fact that many devices in pervasive systems will be used in very different ways by different users. it should be easy to configure the suite of application running in device.
  • Recognize sharing as the default

    Electronic Health Care System are often equipped with various sensors organized in a (preferably wireless) body-area network (BAN). An important issue is that such a network should at worst only minimally hinder a person. The network should be able to operate while a person is moving, with no strings attached to immobile devices. This requirement leads to two obvious organizations.