Module 1
Module 1
Parallel Computing:
In distributed computing we have multiple autonomous computers which seems to the user as
single system. In distributed systems there is no shared memory and computers communicate with
each other through message passing. In distributed computing a single task is divided among
different computers.
Difference between Parallel Computing and Distributed Computing:
S.NO PARALLEL COMPUTING DISTRIBUTED COMPUTING
6. performance capabilities
Parallel Computing –
It is the use of multiple processing elements simultaneously for solving any
problem. Problems are broken down into instructions and are solved
concurrently as each resource which has been applied to work is working at
the same time.
Advantages of Parallel Computing over Serial Computing are as follows:
1. It saves time and money as many resources working together will reduce
the time and cut potential costs.
2. It can be impractical to solve larger problems on Serial Computing.
3. It can take advantage of non-local resources when the local resources are finite.
4. Serial Computing ‘wastes’ the potential computing power, thus Parallel Computing
makes better work of hardware.
Types of Parallelism:
1. Bit-level parallelism: It is the form of parallel computing which is based
on the increasing processor’s size. It reduces the number of instructions
that the system must execute in order to perform a task on large-sized
data.
Example: Consider a scenario where an 8-bit processor must compute the
sum of two 16-bit integers. It must first sum up the 8 lower-order bits, then
add the 8 higher-order bits, thus requiring two instructions to perform the
operation. A 16-bit processor can perform the operation with just one
instruction.
2. Instruction-level parallelism: A processor can only address less than one
instruction for each clock cycle phase. These instructions can be re-ordered
and grouped which are later on executed concurrently without affecting the
result of the program. This is called instruction-level parallelism.
3. Task Parallelism: Task parallelism employs the decomposition of a task
into subtasks and then allocating each of the subtasks for execution. The
processors perform execution of sub tasks concurrently.
Why parallel computing?
The whole real world runs in dynamic nature i.e. many things happen at a
certain time but at different places concurrently. This data is extensively
huge to manage.
Real world data needs more dynamic simulation and modeling, and for
achieving the same, parallel computing is the key.
Parallel computing provides concurrency and saves time and money.
Complex, large datasets, and their management can be organized only and only using
parallel computing’s approach.
Ensures the effective utilization of the resources. The hardware is
guaranteed to be used effectively whereas in serial computation only some
part of hardware was used and the rest rendered idle.
Also, it is impractical to implement real-time systems using serial computing.
Applications of Parallel Computing:
Data bases and Data mining.
Real time simulation of systems.
Science and Engineering.
Advanced graphics, augmented reality and virtual reality.
Limitations of Parallel Computing:
It addresses such as communication and synchronization between
multiple sub-tasks and processes which is difficult to achieve.
The algorithms must be managed in such a way that they can be handled in
the parallel mechanism.
The algorithms or program must have low coupling and high cohesion. But it’s difficult
to create such programs.
More technically skilled and expert programmers can code a parallelism
based program well.
Future of Parallel Computing: The computational graph has undergone a
great transition from serial computing to parallel computing. Tech giant such
as Intel has already taken a step towards parallel computing by employing
multicore processors. Parallel computation will revolutionize the way
computers work in the future, for the better good. With all the world
connecting to each other even more than before, Parallel Computing does a
better role in helping us stay that way. With faster networks, distributed
systems, and multi-processor computers, it becomes even more necessary.
A distributed system contains multiple nodes that are physically separate but linked together
using the network. All the nodes in this system communicate with each other and handle
processes in tandem. Each of these nodes contains a small part of the distributed operating
system software.
A diagram to better explain the distributed system is −
All the nodes in the distributed system are connected to each other. So nodes can
easily share data with other nodes.
More nodes can easily be added to the distributed system i.e. it can be scaled as required.
Failure of one node does not lead to the failure of the entire distributed system.
Other nodes can still communicate with each other.
Resources like printers can be shared with multiple nodes rather than being restricted
to just one.
Disadvantages of Distributed Systems
Some disadvantages of Distributed Systems are as follows −
Virtualization
Service-Oriented Architecture (SOA)
Grid Computing
Utility Computing
Virtualization
Virtualization is a technique, which allows to share single physical instance of an application
or resource among multiple organizations or tenants (customers). It does this by assigning a
logical name to a physical resource and providing a pointer to that physical resource when
demanded.
The Multitenant architecture offers virtual isolation among the multiple tenants. Hence, the
organizations can use and customize their application as though they each have their instances
running.
1
Access
Hides the way in which resources are accessed and the
differences in data platform.
2
Location
Hides where resources are located.
3
Technology
Hides different technologies such as programming language
and OS from user.
4
Migration / Relocation
Hide resources that may be moved to another location which are
in use.
5
Replication
Hide resources that may be copied at several location.
6
Concurrency
Hide resources that may be shared with other users.
7
Failure
Hides failure and recovery of resources from user.
8
Persistence
Hides whether a resource ( software ) is in memory or disk.
Advantages
Disadvantages
Client-Server Architecture
The client-server architecture is the most common distributed system
architecture which decomposes the system into two major subsystems or
logical processes −
Client − This is the first process that issues a request to the second
process i.e. the server.
Server − This is the second process that receives the request, carries it
out, and sends a reply to the client.
In this architecture, the application is modelled as a set of services that are
provided by servers and a set of clients that use these services. The servers
need not know about clients, but the clients must know the identity of
servers, and the mapping of processors to processes is not necessarily 1 : 1
Client-server Architecture can be classified into two models based on the
functionality of the client −
Thin-client model
Thick/Fat-client model
In thick-client model, the server is only in charge for data management. The
software on the client implements the application logic and the interactions
with the system user.
Most appropriate for new C/S systems where the capabilities of the
client system are known in advance
More complex than a thin client model especially for management.
New versions of the application have to be installed on all clients.
Advantages
Disadvantages
Presentation Tier
Presentation layer is the topmost level of the application by which users can
access directly such as webpage or Operating System GUI (Graphical User
interface). The primary function of this layer is to translate the tasks and
results to something that user can understand. It communicates with other
tiers so that it places the results to the browser/client tier and all other tiers
in the network.
Data Tier
In this layer, information is stored and retrieved from the database or file
system. The information is then passed back for processing and then back
to the user. It includes the data persistence mechanisms (database
servers, file shares, etc.) and provides API (Application Programming
Interface) to the application tier which provides methods of managing the
stored data.
Advantages
Better performance than a thin-client approach and is simpler to
manage than a thick-client approach.
Enhances the reusability and scalability − as demands increase, extra
servers can be added.
Provides multi-threading support and also reduces network traffic.
Provides maintainability and flexibility
Disadvantages
Unsatisfactory Testability due to lack of testing tools.
More critical server reliability and availability.
The components of broker architectural style are discussed through following heads −
Broker
Broker is responsible for coordinating communication, such as forwarding
and dispatching the results and exceptions. It can be either an invocation-
oriented service, a document or message - oriented broker to which clients
send a message.
It is responsible for brokering the service requests, locating a
proper server, transmitting requests, and sending responses back to
clients.
It retains the servers’ registration information including their
functionality and services as well as location information.
It provides APIs for clients to request, servers to respond, registering
or unregistering server components, transferring messages, and
locating servers.
Stub
Stubs are generated at the static compilation time and then deployed to the
client side which is used as a proxy for the client. Client-side proxy acts as
a mediator between the client and the broker and provides additional
transparency between them and the client; a remote object appears like a
local one.
The proxy hides the IPC (inter-process communication) at protocol level and
performs marshaling of parameter values and un-marshaling of results from
the server.
Skeleton
Skeleton is generated by the service interface compilation and then
deployed to the server side, which is used as a proxy for the server. Server-
side proxy encapsulates low-level system-specific networking functions and
provides high-level APIs to mediate between the server and the broker.
It receives the requests, unpacks the requests, unmarshals the method
arguments, calls the suitable service, and also marshals the result before
sending it back to the client.
Bridge
A bridge can connect two different networks based on different
communication protocols. It mediates different brokers including DCOM,
.NET remote, and Java CORBA brokers.
Bridges are optional component, which hides the implementation details
when two brokers interoperate and take requests and parameters in one
format and translate them to another format.
Broker implementation in CORBA
CORBA is an international standard for an Object Request Broker – a
middleware to manage communications among distributed objects defined
by OMG (object management group).
SOA Operation
SOA allows users to combine a large number of facilities from existing services to
form applications.
SOA encompasses a set of design principles that structure system development and provide
means for integrating components into a coherent and decentralized system.
SOA based computing packages functionalities into a set of interoperable services, which can be
integrated into different software systems belonging to separate business domains.
There are two major roles within Service-oriented Architecture:
1. Service provider: The service provider is the maintainer of the service and the organization that
makes available one or more services for others to use. To advertise services, the provider can
publish them in a registry, together with a service contract that specifies the nature of the
service, how to use it, the requirements for the service, and the fees charged.
2. Service consumer: The service consumer can locate the service metadata in the registry and
develop the required client components to bind and use the service.
Services might aggregate information and data retrieved from other services or create workflows
of services to satisfy the request of a given service consumer. This practice is known as service
orchestration Another important interaction pattern is service choreography, which is the
coordinated interaction of services without a single point of control.
Components of SOA:
Guiding Principles of SOA:
1. Standardized service contract: Specified through one or more service description documents.
2. Loose coupling: Services are designed as self-contained components, maintain relationships that
minimize dependencies on other services.
3. Abstraction: A service is completely defined by service contracts and description documents.
They hide their logic, which is encapsulated within their implementation.
4. Reusability: Designed as components, services can be reused more effectively, thus reducing
development time and the associated costs.
5. Autonomy: Services have control over the logic they encapsulate and, from a service consumer
point of view, there is no need to know about their implementation.
6. Discoverability: Services are defined by description documents that constitute supplemental
metadata through which they can be effectively discovered. Service discovery provides an effective
means for utilizing third-party resources.
7. Composability: Using services as building blocks, sophisticated and complex operations can be
implemented. Service orchestration and choreography provide a solid support for composing
services and achieving business goals.
Advantages of SOA:
Service reusability: In SOA, applications are made from existing services.Thus, services can be
reused to make many applications.
Easy maintenance: As services are independent of each other they can be updated and modified
easily without affecting other services.
Platform independant: SOA allows making a complex application by combining services picked
from different sources, independent of the platform.
Availability: SOA facilities are easily available to anyone on request.
Reliability: SOA applications are more reliable because it is easy to debug small services rather
than huge codes
Scalability: Services can run on different servers within an environment, this increases scalability
Disadvantages of SOA:
High overhead: A validation of input parameters of services is done whenever services
interact this decreases performance as it increases load and response time.
High investment: A huge initial investment is required for SOA.
Complex service management: When services interact they exchange messages to tasks. the
number of messages may go in millions. It becomes a cumbersome task to handle a large number
of messages.
Practical applications of SOA: SOA is used in many ways around us whether it is mentioned
or not.
1. SOA infrastructure is used by many armies and air force to deploy situational awareness systems.
2. SOA is used to improve the healthcare delivery.
3. Nowadays many apps are games and they use inbuilt functions to run. For example, an app
might need GPS so it uses inbuilt GPS functions of the device. This is SOA in mobile solutions.
GRID COMPUTING
Grid computing is a distributed structure of a large number of computers
connected to solve a complicated problem. In grid computing, servers and
computers run independently and are loosely connected by the Internet.
Computers may connect directly or through scheduling systems.
In other words, Grid Computing involves a large number of computer which
are connected parallel and makes a computer cluster.
Grid computing is used in various types of applications such as mathematical,
scientific, and educational tasks via various computing resources.
Grid computing is a processor architecture that integrates computer resources
from various domains to achieve a primary goal. The computers on the network
will work together in grid computing on a project, thus acting as a
supercomputer.
Grid systems are mainly designed for resource sharing by Distributed
and cluster computing on a large scale. It divides the complex tasks into
smaller pieces that are distributed to the CPUs
Cloud Computing
loud Computing is defined as the on-demand facility of computer power,
database storage, applications, and other IT resources through the internet. It
provides a solution for IT infrastructure at a low price.
In simple words, cloud computing means storing and accessing the data via
the internet instead of the computer’s hard drive.
Cloud computing is a pay-per-use model.
PROS &CONS
Advantages and Disadvantages of Cloud
Computing
Advantages of Cloud Computing
As we all know that Cloud computing is trending technology. Almost every company switched their servi
cloud to rise the company growth.
Once the data is stored in the cloud, it is easier to get back-up and restore that data using the cloud.
2) Improved collaboration
Cloud applications improve collaboration by allowing groups of people to quickly and easily share
inform cloud via shared storage.
3) Excellent accessibility
Cloud allows us to quickly and easily access store information anywhere, anytime in the whole world, us
internet connection. An internet cloud infrastructure increases organization productivity and efficiency b
that our data is always accessible.
Cloud computing reduces both hardware and software maintenance costs for organizations.
5) Mobility
Cloud computing allows us to easily access all cloud data via mobile.
Cloud computing offers Application Programming Interfaces (APIs) to the users for access services on th
pays the charges as per the usage of service.
7) Unlimited storage capacity
Cloud offers us a huge amount of storing capacity for storing our important data such as documents, im
video, etc. in one place.
8) Data security
Data security is one of the biggest advantages of cloud computing. Cloud offers many advanced
feature security and ensures that data is securely stored and handled.
1) Internet Connectivity
As you know, in cloud computing, every data (image, audio, video, etc.) is stored on the cloud, and we
data through the cloud by using the internet connection. If you do not have good internet connectivity,
access these data. However, we have no any other way to access data from the cloud.
2) Vendor lock-in
Vendor lock-in is the biggest disadvantage of cloud computing. Organizations may face problems when t
their services from one vendor to another. As different vendors provide different platforms, that can cau
moving from one cloud to another.
3) Limited Control
As we know, cloud infrastructure is completely owned, managed, and monitored by the service provider
users have less control over the function and execution of services within a cloud infrastructure.
4) Security
Although cloud service providers implement the best security standards to store important information.
adopting cloud technology, you should be aware that you will be sending all your organization's sensitiv
to a third party, i.e., a cloud computing service provider. While sending the data on the cloud, there ma
that your organization's information is hacked by Hackers.
REAL TIME APPLICATIONS
Cloud Computing has its applications in almost all the fields such as business,
entertainment, data st networking, management, entertainment, education, art and
global positioning system, etc. Some famous cloud computing applications are discussed
here in this tutorial:
Business Applications
Cloud computing has made businesses more collaborative and easy by
incorporating various as MailChimp, Chatter, Google Apps for business, and Quickbooks.
SN Application Description
1
MailChimp
It offers an e-mail publishing platform. It is widely employed by the
businesses to design and send their e-mail campaigns.
2
Chatter
Chatter app helps the employee to share important information
about organization in real time. One can get the instant feed
regarding any issue.
3
Google Apps for Business
Google offers creating text documents, spreadsheets,
presentations,etc., on Google Docs which allows the business users
to share them in collaborating manner.
4
Quickbooks
It offers online accounting solutions for a business. It
helps in monitoring cash flow, creating VAT returns and creating
business reports.
SN Application Description
1
Box.com
Box.com offers drag and drop service for files. The users need to
drop the files into Box and access from anywhere.
2
Mozy
Mozy offers online backup service for files to prevent data loss.
3
Joukuu
Joukuu is a web-based interface. It allows to display a single list of
contents for files stored in Google Docs, Box.net and Dropbox.
Management Applications
There are apps available for management task such as time tracking, organizing notes.
Application such tasks are discussed below:
SN Application Description
1
Toggl
It helps in tracking time period assigned to a particular project.
2
Evernote
It organizes the sticky notes and even can read the text from
images which helps the user to locate the notes easily.
3
Outright
It is an accounting app. It helps to track income, expenses,
profits and losses in real time.
Social Applications
There are several social networking services providing websites such as Facebook,
Twitter, etc.
SN Application Description
1
Facebook
It offers social networking service. One can share photos,
videos, files, status and much more.
2
Twitter
It helps to interact with the public directly. One can follow any
celebrity, organization and any person, who is on twitter and can
have latest updates regarding the same.
Entertainment Applications
SN Application Description
1
Audio box.fm
It offers streaming service. The music files are stored online and
can be played from cloud using the own media player of the
service.
Art Applications
SN Application Description
1
Moo
It offers art services such as designing and printing business
cards, postcards and mini cards.