DISTRIBUTED SYSTEMS
DISTRIBUTED SYSTEMS
A distributed system is a
network that consists of autonomous computers that are connected using a
distribution middleware. They help in sharing different resources and
capabilities to provide users with a single and integrated coherent network.
DISTRIBUTED COMPUTING
Distributed computing is a computing concept that, in its most
general sense, refers to multiple computer systems working on a single problem.
In distributed computing, a single problem is divided into many parts, and each
part is solved by different computers. As long as the computers are networked,
they can communicate with each other to solve the problem. If done properly,
the computers perform like a single entity.
The ultimate goal of distributed computing is to maximize
performance by connecting users and IT resources in a cost-effective,
transparent and reliable manner. It also ensures fault tolerance and enables
resource accessibility in the event that one of the components fails.
Standalone
systems with distributed systems
Standalone system
All the components are executed within a
single device.
Do not need a network.
Usually one or tightly coupled set of
technologies are used to develop (JAVA, .NET)
Distributed system
The components are distributed and executed in multiple
devices.
Need a network.
Multiple and loosely coupled set of technologies are used
to develop (HTML +CSS + JS + PHP)
Elements of distributed
systems
•Processing components.
•Data networks for components to communicate.
•Including the components who are dedicated
for processing the communication,
called connectors.
•Data stores (data bases) and Data.
•The configuration of the above elements.
There are different types of services, which can be gained from
distributed systems
•Mail service (SMTP, POP3, IMAP)
• File transferring and sharing (FTP)
•Remote logging (telnet)
•Games and multimedia (RTP, SIP, H.26x)
•Web (HTTP)
Types of distributed
systems (based-on the service of networks)
•There are
different types of services, which can be gained from distributed systems
•Mail service (SMTP, POP3, and
IMAP)
•File transferring and sharing
(FTP)
•Remote logging (telnet)
•Games and multimedia (RTP, SIP,
H.26x)
•Web (HTTP)
•The service of the web gained through the
internet is called the WWW
Browser-based and
non-browser-based clients of distributed systems
Browser-based distributed systems
The
computing environment might consist of collection of equal powerful computers
having same processor speed and equal amount of memory. The equal distribution
of resources typically does not provide the best services to users. Three main components are Clients (Applications that runs on
computers and they are relay on servers for files, devices and processing
power), Servers (Computers or processes that manage network resources such as
disk drivers manage file servers, printers printer servers, network traffic
network servers), communication network (clients and servers are
connected to LAN or WAN or by internet of networks)
Non-Browser-based distributed systems
Types of Web-based Systems
Websites
Many business people and individuals do not know what kind of a
website to get their products and services. However, sites are categorized as
follows:
Static sites: These are non-editable internet sites.
Editable Brochure Sites: Requires a content
management system.
Editable Dynamic Website: It engages the user with
login areas. This site is self-managed.
E-commerce Websites: They have a payment gateway, e.g.,
PayPal.
Web Application: It is a customized site with much
functionality.
Web applications
Some
characteristics of web applications are network intensiveness, Concurrency, Unpredictable
load, Performance, Availability, Data driven, Content sensitivity, Continuous
evolution, Immediacy, Security.
•Web
services and client apps
•Rich
Internet Applications (RIAs)/Rich Web based Applications (RiWAs)
A
rich web application is a web application that has many of the characteristics
of desktop application software, typically delivered by way of a site-specific
browser, a browser plug-in, an independent sandbox, extensive use of JavaScript
or a virtual machine. The concept is closely related to a single-page
application and may allow the user interactive features. HTML 5 is a current
standard for delivering rich web application supported by all major browsers.
Different architectures for
distributed systems
Client-server (or
two-tier) architecture
A two-tier client/server
is a type of multi-tier computing architecture in which an entire application
is distributed as two distinct layers or tiers. It divides the application
logic, data and processing between client and server devices.
A two-tier client/server
works when most or all of the application logic and data is hosted on a server.
The client integrates with the presentation layer and accesses the server for
application specific tasks and processing.
For example, the core
application and data are installed at a central server. One or more client
devices uses its client-end application to request data or processes from the
server. The server sends the required data or performs a process to fulfill the
query. In another two-tier client/server instance, such as a data backup
architecture, the application access and logic may be with the client device,
whereas the server stores and provides the core data.
3-tier architecture
A 3-tier architecture
is a type of software architecture which is composed of three “tiers” or
“layers” of logical computing. They are often used in applications as a
specific type of client-server system. 3-tier architectures provide many
benefits for production and development environments by modularizing the user interface,
business logic, and data storage layers. Doing so gives greater flexibility to
development teams by allowing them to update a specific part of an application
independently of the other parts. This added flexibility can improve overall
time-to-market and decrease development cycle times by giving development teams
the ability to replace or upgrade independent tiers without affecting the other
parts of the system.
n-tier architecture
N-tier
architecture is also called multi-tier architecture because the software is
engineered to have the processing, data management, and presentation functions
physically and logically separated. That means that these different
functions are hosted on several machines or clusters, ensuring that services are
provided without resources being shared and, as such, these services are
delivered at top capacity. The “N” in the name n-tier architecture refers
to any number from 1.
Not only does
your software gain from being able to get services at the best possible rate,
but it’s also easier to manage. This is because when you work on one
section, the changes you make will not affect the other functions. And if
there is a problem, you can easily pinpoint where it originates.
Service Oriented Architecture (SOA)
Service-oriented architecture (SOA) is a
software development model for distributed application components that
incorporates discovery, access control, data mapping and security
features.
SOA has two major functions.
The first is to create a broad architectural model that defines the goals of
applications and the approaches that will help meet those goals. The second
function is to define specific implementation specifications, usually linked to
the formal Web Services Description Language (WSDL) and
Simple Object Access Protocol (SOAP)
specifications.
Micro-service architecture from monolithic
architecture
Monolithic architecture means that your app is written as one
single unit code whose components are designed to work together, sharing the
same memory space and resources. Micro service architecture means that your app
is made up of lots of smaller, independent services capable of running in their
own memory space and scaling independently from each other. Disadvantage of
monolithic architecture are difficult to scale, new release take time, lack of
agility, small change made to a part of the app requires entire app to be
rebuilt and redeployed. Advantages of micro services are scalability,
availability, fault tolerance, independent, and language neutral. Disadvantages
of micro services are increase resource use, increase network communication,
deploying micro services can be complex.
Business drawbacks in monolithic architecture are one-way
communication, customer is in control, and website is idle when user is idle,
limited opportunity to interact. And also, there are some technical drawbacks
also. Some of them are result in dependency, failure affects everything, change
is slow, duplicated components due to lack of explicit boundaries, and scale is
expensive. But in micro service there are some business benefits such as
two-way communication, APIs are always working, unlimited opportunity to
interact. Other than that, there are some technical benefits also. Such as
eliminates dependency, failure is isolated, react to change quicker, scale is
less expensive, reusable components, flexible.
MVC
Architecture
Model–View–Controller (usually known as MVC or
Model WC for the MVVC variant)
is an architectural pattern commonly
used for developing user interfaces that
divides an application into three interconnected parts. This is done to
separate internal representations of information from the ways information is
presented to and accepted from the user. The MVC design pattern decouples
these major components allowing for efficient code reuse and
parallel development.
Traditionally used for desktop graphical
user interfaces (GUIs), this architecture has become popular for
designing web applications and
even mobile, desktop and other clients. Popular programming languages
like Java, C#, Python, Ruby, PHP have MVC frameworks that are used in web application
development straight out
of the box.
Communication
techniques/technologies
1. Functional oriented communication
• RPC/RMI
• CORBA
2. Message Oriented communication
• SOAP
3. Resource oriented communication
• REST
RPC with RMI
RPC (Remote Procedure Call) and RMI (Remote Method Invocation) are
two mechanisms that allow the user to invoke or call processes that will run on
a different computer from the one the user is using. The main
difference between the two is the approach or paradigm used. RMI uses an object
oriented paradigm where the user needs to know the object and the method of the
object he needs to invoke. In comparison, RPC isn’t object oriented and doesn’t
deal with objects. Rather, it calls specific subroutines that are already
established.
RPC is a relatively old protocol that
is based on the C language, thus
inheriting its paradigm. With RPC, you get a
procedure call that looks pretty much like a local call. RPC handles the
complexities involved with passing the call from the local to the remote
computer. RMI does the very same thing; handling the complexities of passing
along the invocation from the local to the remote computer. But instead of
passing a procedural call, RMI passes a reference to the object and the method
that is being called. RMI was developed by Java and uses its virtual machine. Its use is therefore exclusive
to Java applications for calling methods on remote computers.
In the end, RPC and RMI are just two means of achieving the same
exact thing. It all comes down to what language you are using and which
paradigm you are used to. Using the object oriented RMI is the better approach
between the two, especially with larger programs as it provides a cleaner code that
is easier to track down once something goes wrong. Use of RPC is still widely
accepted, especially when any of the alternative remote procedural protocols are not an
option.
CORBA
The
Common Object Request Broker Architecture (CORBA) is a standard developed by
the Object Management Group (OMG) to provide interoperability among distributed
objects. CORBA is the world's leading middle ware solution enabling the exchange
of information, independent of hardware platforms, programming languages, and
operating systems. CORBA is essentially a design specification for an Object
Request Broker (ORB), where an ORB provides the mechanism required for
distributed objects to communicate with one another, whether locally or on
remote devices, written in different languages, or at different locations on a
network.
XML Naming Rules
XML elements must follow these naming rules:
·
Element names are case-sensitive
·
Element names must start with a letter or underscore
·
Element names cannot start with the letters xml (or XML, or Xml,
etc)
·
Element names can contain letters, digits, hyphens, underscores,
and periods
·
Element names cannot contain spaces
Any name can be used, no words are reserved (except xml).
Any name can be used, no words are reserved (except xml).
Create descriptive names, like this: <person>,
<firstname>, <lastname>.
Create short and simple names, like this: <book_title> not
like this: <the_title_of_the_book>.
Avoid "-". If you name something
"first-name", some software may think you want to subtract
"name" from "first".
Avoid ".". If you name something
"first.name", some software may think that "name" is a
property of the object "first".
Avoid ":". Colons are reserved for namespaces (more
later).
Non-English letters like éòá are perfectly legal in XML, but
watch out for problems if your software doesn't support them.
Reference:https://www.techopedia.com/definition/7/distributed-computing-systemhttps://en.wikipedia.org/wiki/Distributed_computing
No comments:
Post a Comment