Distributed Systems - The Framework Blog

Hot

Post Top Ad

Wednesday, March 6, 2019

Distributed Systems

   According to the distribution of the components, we can divide computer based systems into two types.They are,

  1. Distributed System
  2. Standalone System

Distributed System


   Any network-based system can be named as a distributed system. Which utilize this network to use remote components, opposed to the centralized or standalone systems. This includes any web application, email, gaming, etc. They consist of different components such as: client-side components, web servers, database servers, web services, etc.[1]

"A distributed system is  a collection of independent Computers that appears to its users as a single coherent system or as a single system."
                                                                 - Andrew S. Tanenbaum (American computer scientist) -

Distributed computing is a field of computer science that studies distributed systems. As well as, distributed computing is where multiple computing units are connected to achieve a common task.Through the Larger computing power enables to perform a lot more tasks than in a unit, and searches can be coordinated for efficiency.[2]

Standalone System

   Standalone system is an application that runs on the desktop. Such applications can interact with server-side software. They are known as thick clients. The main benefits of standalone system or commonly referred as desktop applications are high efficiency and user interface flexibility.

Standalone System
Distributed System
Designed from the beginning to be a quick and easy solution to building graphical user interfaces (GUIs), especially when using Windows Forms in Visual Studio for Windows.
Never was designed for rapid development. Using MVC (model, view, control) style is typically seen as the “correct” way to create web applications.
All the components are executed within a single device.
The components are distributed and executed in multiple devices.
Since the user keeps his/her data on own computer systems, this makes it harder for hackers to gain access to people’s data.
Since all the user’s data is stored online, theoretically it would take just one hack to compromise all the user data. However, this is just a possibility and not a guaranteed situation.
Do not need a network.
Need a network.
Usually one or tightly coupled set of technologies are used to develop (JAVA, .NET).
Multiple and loosely coupled set of technologies are used to develop (HTML/CSS/JS/PHP).
Typically, you will find that well-written desktop software running on a decent computer runs faster than web applications.
Web applications typically have slower performance than desktop applications, due to having to transmit data across the Internet.

The elements of distributed systems 


  • Resource Sharing - Resource sharing is the ability to use any hardware, software or data anywhere in the system. The resource manager controls access, provides naming scheme and controls concurrency among the system tools. The resource sharing model depicts the correct resources provided and how they are used for interaction among each other.

  • OpennessOpenness is concerned with extension and improvement of distributed system and how new components are integrated to existing ones.

  • ConcurrencyConcurrency arises naturally in distributed systems from the separate activities of users, the independence of resources and the location of server processes in separate computers.

  • Scalability - It is the adaption of distributed system to accommodate more users and respond faster. This is usually done by adding faster processors. In a distributed system, components are not required to be changed when scale of the system increased.

  • Fault tolerance - Fault tolerance cares the reliability of the system so that in case of failure of hardware, software or network, the system continues to operate properly, without significantly degrading the performance of the system.

  • Transparency - Distributed system should be perceived by users and application programmers as a whole rather than a collection of cooperative components. This is transparency of a distributed system.

Different types of services which can be gained from distributed systems



Ø Mail service
·        SMTP - Simple Mail Transfer Protocol
·        POP3 - Post Office Protocol
·        IMAP - Internet Message Access Protocol
Ø File transferring and sharing
·        FTP - File Transfer Protocol
Ø Remote logging
·        telnet
Ø Games and multimedia
·        RTP - Real-time Transport Protocol
·        SIP - Session Initiation Protocol
·        H.26x
Ø Web
·        HTTP - Hypertext Transfer Protocol











Web Application
   A web application is an app like any other, with the advantage that it’s stored on the Internet and can be executed on any browser. There are mainly two types in web based application.
  1. Client-server Application (non-browser based)
  2. Web Applications (browser based)
    A Browser based Apps would be a recognized web browser application like Internet Explorer, Firefox, Chrome, Opera, and the like.  All other applications would be considered Non-Browser based Apps or applications whose main purpose is something other than to contact sites on the internet at your request.  It is not unusual for some of the "non-browser" apps to periodically connect to a website to check for recent updates, to check email, or other small updates...  but it might be unusual if you had a malware application that connects to a website and downloads all your personal information.

examples: 
  • Google Docs
  • Gmail
  • Dropbox
  • Evernote and Trello
  • Netflix
Types of Web-based Systems
  • Websites
                Web site is a collection of related network web resources, such as web pagesmultimedia content, which are typically identified with a common domain name, and published on at least one web server. Notable examples are wikipedia.orggoogle.com, and amazon.com.
  • Web applications
  • Web services and client apps


  • Rich Internet Applications (RIAs)/ Rich Web - based Applications (RiWAs)
architectures for distributed systems

The basic architecture of the distributed systems is called the client-server (or two-tier) architecture. Usually the client sends a request asking the server for some service and the server responses with the resources.
3-tier architecture is used, when there is a need for data persistence and also to separate the application logic from the data. This can be seen as an extension of 2-tier architecture.




Micro-service architecture and Monolithic architecture

Micro-service architecture is a software development technique which is a variant of the service-oriented architecture (SOA) architectural style that structures an application as a collection of loosely coupled services.

Monolithic architecture is designed to be self-contained. Components of the program are interconnected and interdependent rather than loosely coupled as is the case with modular software programs.

Micro-service vs Monolithic architecture


MVC Architecture




Strengths of MVC Architecture

  1. Faster development process - MVC supports rapid and parallel development. With MVC, one programmer can work on the view while other can work on the controller to create business logic of the web application. The application developed using MVC can be three times faster than application developed using other development patterns
  2. Ability to provide multiple views - In the MVC Model, you can create multiple views for a model. Code duplication is very limited in MVC because it separates data and business logic from the display.
  3. Support for asynchronous technique - MVC also supports asynchronous technique, which helps developers to develop an application that loads very fast.
  4. Modification does not affect the entire model - Modification does not affect the entire model because model part does not depend on the views part. Therefore, any changes in the Model will not affect the entire architecture.
  5. MVC model returns the data without formatting - MVC pattern returns data without applying any formatting so the same components can be used and called for use with any interface.
Weaknesses of MVC Architecture
  1. Increased complexity
  2. Inefficiency of data access in view
  3. Difficulty of using MVC with modern user interface.
  4. Need multiple programmers
  5. Knowledge on multiple technologies is required.
  6. Developer have knowledge of client side code and html code.
COMMUNICATION IN DISTRIBUTED SYSTEMS

       In a distributed system there is no shared memory and so the whole nature of the communication between processes should be reconsidered. The processes, to communicate, must adhere to rules known as protocols. For distributed systems in a wide area, these protocols often take the form of several layers and each layer has its own goals and rules. Messages are exchanged in various ways, and there are many design options in this regard, an important option is the remote procedure call. It is also important to consider the possibilities of communication between groups of processes, not only between two processes. There are 3 types of communication technologies,

Functional oriented communication
      RPC
          - Remote Procedure Call (RPC) is a programming language feature devised for the distributed computing and based on semantics of local procedure calls. It is the most common forms of remote service and was designed as a way to abstract the procedure call mechanism to use between systems connected through a network.


      RMI
         - Remote Method Invocation (RMI) is similar to RPC but is language specific and a feature of java. A thread is permitted to call the method on a remote object.




Differences Between RPC and RMI

  • RPC supports procedural programming paradigms and is C based, while RMI supports object-oriented programming paradigms and is java based.
  • The parameters passed to remote procedures in RPC are the ordinary data structures. On the contrary, RMI transits objects as a parameter to the remote method.
  • RPC can be considered as the older version of RMI, and it is used in the programming languages that support procedural programming, and it can only use pass by value method. As against, RMI facility is devised based on modern programming approach, which could use pass by value or reference. Another advantage of RMI is that the parameters passed by reference can be changed.
  • RPC protocol generates more overheads than RMI.
  • The parameters passed in RPC must be “in-out” which means that the value passed to the procedure and the output value must have the same datatypes. In contrast, there is no compulsion of passing “in-out” parameters in RMI.
  • In RPC, references could not be probable because the two processes have the distinct address space, but it is possible in case of RMI.
    CORBA

       One important observation concerning COBRA and Web services is that whatever can be accomplished by COBRA can be accomplished using Web service technologies and vice versa, although the amount of effort required would be noticeably different. In particular, one can implement COBRA on top of SOAP.

Message Oriented communication

   SOAP
      SOAP (Simple Object Access Protocol) is an XML-based protocol for accessing web services. Its interface is described in a machine-processable format called WSDL (Web Service Definition Language) document. A web service is described by using a standard, formal XML notion that provides all necessary details like message format, transport protocols, and location to interact with the web service.

Resource oriented communication



  REST
    REST (Representational State Transfer) is a style of software architecture. The data format is described by using JSON schema notation, and it requires the use of the HTTP transport protocol.


Difference between XML and JSON

REFERENCES
[1] Tanenbaum, Andrew S.; Steen, Maarten van (2002). Distributed systems: principles and paradigms.
[2] Distributed Computing - Wikipedia. Avilable: https://en.wikipedia.org/wiki/Distributed_computing
[3] N. R. Dissanayake and G. Dias, "Rich Web-based Applications: An Umbrella Term with a Definition and Taxonomies for Development Techniques and Technologies", International Journal of Future Computer and Communication, Vol. 7, No. 1, March 2018.


No comments:

Post a Comment

Post Top Ad