Thursday, March 7, 2019



                                                               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 JavaC#PythonRubyPHP 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