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 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.


Operating system is developed to ease people daily life. For user benefits and needs the operating system may be single user or distributed. In distributed systems, many computers connected to each other and share their resources with each other. There are some advantages and disadvantages of distributed operating system that we will discuss.

Advantages of distributed operating systems:-
  • Give more performance than single system
  • If one pc in distributed system malfunction or corrupts then other node or pc will take care of
  • More resources can be added easily
  • Resources like printers can be shared on multiple pc’s
Disadvantages of distributed operating systems:-
  • Security problem due to sharing
  • Some messages can be lost in the network system
  • Bandwidth is another problem if there is large data then all network wires to be replaced which tends to become expensive
  • Overloading is another problem in distributed operating systems
  • If there is a database connected on local system and many users accessing that database through remote or distributed way then performance become slow
  • The databases in network operating is difficult to administrate then single user system





Elements of distributed systems

·      1. Processing components.
·      2. Data networks for components to communicate.
·      3. Including the components who are dedicated for processing the communication called connectors.
·      4. Data stores (data bases) and Data.
·      5.The configuration of the above elements      

Communication in distributed systems is always based on low-level message passing as offered by the underlying network. Expressing communication through message passing is harder than using primitives based on shared memory, as available for non-distributed platforms. Modern distributed systems often consist of thousands or even millions of processes scattered across a network with unreliable communication such as the Internet. Unless the primitive communication facilities of computer networks are replaced by something else, development of large-scale distributed applications is extremely difficult.
we start by discussing the rules that communicating processes must adhere to, known as protocols, and concentrate on structuring those protocols in the form of layers. We then look at three widely-used models for communication: Remote Procedure Call (RPC), Message-Oriented Middleware (MOM), and data streaming. We also discuss the general problem of sending data to multiple receivers, called multicasting.

Distributed systems architectures

·       *  Client-server architectures
·       * Distributed services which are called on by clients. Servers that provide services are   
           treated differently from clients that use services.
·       * Distributed object architectures
·       * No distinction between clients and servers.  
           Any object on the system may provide and use services from other objects.

Micro services Architecture

The idea is to split your application into a set of smaller, interconnected services instead of building a single monolithic application. Each micro service is a small application that has its own hexagonal architecture consisting of business logic along with various adapters. Some micro services would expose a REST, RPC or message-based API and most services consume APIs provided by other services. Other micro services might implement a web UI.
The Micro service architecture pattern significantly impacts the relationship between the application and the database. Instead of sharing a single database schema with other services, each service has its own database schema. On the one hand, this approach is at odds with the idea of an enterprise-wide data model. Also, it often results in duplication of some data. However, having a database schema per service is essential if you want to benefit from micro services, because it ensures loose coupling. Each of the services has its own database. Moreover, a service can use a type of database that is best suited to its needs, the so-called polyglot persistence architecture.
Some APIs are also exposed to the mobile, desktop, web apps. The apps don’t, however, have direct access to the back-end services. Instead, communication is mediated by an intermediary known as an API Gateway. The API Gateway is responsible for tasks such as load balancing, caching, access control, API metering, and monitoring.

The Micro service architecture pattern corresponds to the Y-axis scaling of the Scale Cube model of scalability.


What is MVC

In this tutorial, we can discuss more about MVC and advantages and disadvantages of mvc. MVC stands for Model–view–controller. It is a software architectural pattern for implementing user interfaces on computers. It divides a given software application into three interconnected parts, so as to separate internal representations of information from the ways that information is presented to or accepted from the user.

1) Model: It specifies the logical structure of data in a software application and the high-level class associated with it. It is the domain-specific representation of the data which describes the working of an application. When a model changes its state, domain notifies its associated views, so they can refresh.
2) View: View component is used for all the UI logic of the application and these are the components that display the application’s user interface (UI). It renders the model into a form suitable for interaction. Multiple views can exist for a single model for different purposes.
3) Controller: Controllers act as an interface between Model and View components. It processes all the business logic and incoming requests, manipulate data using the Model component, and interact with the Views to render the final output. It receives input and initiates a response by making calls on model objects
Disadvantages of MVC
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.




Difference between RPC and RMI

RPC and RMI are the mechanisms which enable a client to invoke the procedure or method from the server through establishing communication between client and server. The common difference between RPC and RMI is that RPC only supports procedural programming whereas RMI supports object-oriented programming.
Another major difference between the two is that the parameters passed to remote procedures call consist of ordinary data structures. On the other hand, the parameters passed to remote method consist of objects.

What is the difference between RPC and RMI?

• RPC is language neutral while RMI is limited to Java.
• RPC is procedural like in C, but RMI is object oriented.
• RPC supports only primitive data types while RMI allows objects to be passed as arguments and return values. When using RPC, programmer must split any compound objects to primitive data types.
• RMI is easy to program that RPC.
• RMI is slower than RPC since RMI involves execution of java bytecode.
• RMI allows usage of design patterns due to the object oriented nature while RPC does not have this capability.

What CORBA Brings to web-based systems

Augmenting the World Wide Web infrastructure with CORBA provides three immediate benefits. First, it gets rid of the CGI bottleneck on the server. Second, it provides a scalable and robust server-to-server World Wide Web infrastructure. Third, it extends Java with a distributed object infrastructure. A brief explanation follows.
CORBA avoids the CGI bottleneck. It lets clients directly invoke methods on a server. The client passes the parameters using precompiled stubs, or it generates them on-the-fly using CORBA's dynamic invocation services. In either case, the server receives the call directly through a precompiled skeleton. You can invoke any IDL-defined method on the server, not just the ones defined by HTTP. In addition, you can pass any typed parameter instead of just strings. This means there's very little client/server overhead, especially when compared with HTTP/CGI. With CGI, you must start a new instance of a program every time an applet invokes a method on a server; with CORBA, you don't. Additionally, the CGI does not maintain the state between client invocations; CORBA does.
CORBA provides a scalable server-to-server infrastructure. Pools of server business objects can communicate using the CORBA ORB. These objects can run on multiple servers to provide load balancing for incoming client requests. The ORB can dispatch the request to the first available object and add more objects as the demand increases. CORBA lets the server objects act in unison, using transaction boundaries and related CORBA services. In contrast, a CGI application is a bottleneck because it must respond to thousands of incoming requests; it cannot distribute the load across multiple processes or processors.
CORBA extends Java with a distributed object infrastructure. Currently, Java applets cannot communicate across address spaces using remote method invocations. This means that there is no easy way for a Java applet to invoke a method on a remote object. CORBA lets Java applets communicate with other objects written in different languages across address spaces and networks. In addition, CORBA provides a rich set of distributed object services that augment Java-including metadata, transactions, security, naming, trader, and events.


Extensible Markup Language (XML) is a text-based format that allows for the structuring of electronic documents and is not limited to a set of labels. XML is used to describe data. The XML standard is a flexible way to create information formats and electronically share structured data via the public Internet, as well as via corporate networks. It is extensible because it is not a fixed format like HTML (which is a single, predefined markup language). Instead, XML is a metalanguage — a language for describing other languages — which lets you design your own markup languages for limitless different types of documents. XML can do this because it's written in SGML, the international standard metalanguage for text document markup (ISO 8879). (About 1990, Tim Berners-Lee at CERN developed a new, simpler language that could be used in place of SGML. Thus was born HTML or "Hyper Text Markup Language." It was intended to be a simpler language that did not require expensive authoring tools. HTML succeeded beyond anyone's expectations but it lacked a certain flexibility that developers wanted. Various groups made changes and added extensions until HTML's roots had been mangled. In the summer of 1996, a working group at W3C was formed to create a markup language that would combine the strength of SGML with the simplicity of HTML. The first official draft specification for XML was released in November 1996. XML version 1.0 became a W3C recommendation in 1998.)
The basic structure of XML is the document. This terminology, however, might cause one to think of XML as only a richer, more flexible HTML. It is richer and more flexible, but it can be so much more as well. Thinking of XML as a document allows you to see how it can be used for presentation of data. This presentation can be detailed and useful. Most browsers now handle XML for presentation. XML does, however, go beyond documents. It can be used for the communication of data as well. XML uses a flexible tagged structure that makes it more robust than a fixed record format for communication.
Common uses for XML include:
  • Information identification -- You can define your own markup, so you can define meaningful names for all your information items.
  • Information storage -- Because XML is portable and non-proprietary, it can be used to store information across any platforms. Because it is backed by an international standard, it will remain accessible and processable as a data format.
  • Information structure -- XML structures can ‘nest’, so they can be used to store and identify any kind of hierarchical information, especially long, deep, or complex document sets or data sources, which makes it ideal for an information-management back-end to serving the Web. This is one if its most common Web applications, with a transformation system to serve it as HTML.

  • Publishing -- The original goal of XML was "to enable generic SGML to be served, received, and processed on the Web in the way that is now possible with HTML." Combining the three previous topics (identity, storage, and structure) means it is possible to get all the benefits of robust document management and control (with XML) and publish to the Web (as HTML) as well as to paper (as PDF) and to other formats (e.g., Braille, Audio, etc) from a single source document by using the appropriate stylesheets.


  • Messaging and data transfer -- XML is also very heavily used for enclosing or encapsulating information in order to pass it between different computing systems which would otherwise be unable to communicate because of their proprietary or secret data formats. By providing a lingua francafor data identity and structure, XML provides a common ‘envelope’ for inter-process communication (messaging).

  • Web services -- Building on all of these, as well as its use in browsers, machine-processable data can be exchanged between consenting systems, where before it was only comprehensible by humans (HTML). Weather services, e-commerce sites, blog newsfeeds, and other data-exchange services, like smartphone apps, use XML for data management and transmission, and the Web browser or app for display and interaction.



Are XML, SGML, and HTML all the same thing? Not exactly. SGML may be viewed as the "mother tongue," and it has been used for describing thousands of different document types in many fields of human activity, from transcriptions of ancient manuscripts to technical documentation for stealth bombers, and from patients' medical and clinical records to musical notation. However, SGML is a large and complex language. XML is an abbreviated version of SGML, designed to make it easier to use over the Web, easier to define document types, and more amenable to programming requirements. It omits all the complex and lesser-used options of SGML in return for the benefits of being easier to write applications for, easier to understand, and more readily suited to delivery and interoperability over the Web. Similarly, HTML, XHTML, and HTML5 may be viewed as are the XML applications most frequently used on the Web.



Comments

Popular Posts