Distributed System: A distributed system is one in which components located at networked computers communicate and coordinate their actions only by passing messages
Physical Model: A physical model is a representation of the underlying hardware elements of a distributed system that abstracts away from specific details of the computer and networking technologies employed.
Architectural Model: The architecture of a system is its structure in terms of separately specified components and their interrelationships. The overall goal is to ensure that the structure will meet present and likely future demands on it.
Fundamental Model: Fundamental model illustrates only the essential ingredients which need to be considered in order to understand and reason about some aspects of a system’s behavior. This internally is categorized into 3 categories
Interaction Model: Computation occurs within processes; the processes interact by passing messages, resulting in communication (information flow) and coordination (synchronization and ordering of activities) between processes. In the analysis and design of distributed systems we are concerned especially with these interactions
Failure Model: The correct operation of a distributed system is threatened whenever a fault occurs in any of the computers on which it runs (including software faults) or in the network that connects them. This model defines and classifies the faults
Security Model: It defines and classifies the forms of any attack which forms the basis for the analysis of threats to a system and for the design of systems that are able to resist them.
Interprocess communication is concerned with the characteristics of protocols for communication between processes in a distributed system.
Interprocess communication in the Internet provides both datagram and stream communication
Sockets originate from BSD UNIX but are also present in most other versions of UNIX, including Linux as well as Windows and the Macintosh OS. Interprocess communication consists of transmitting a message between a socket in one process and a socket in another process.
Messages sent to a particular Internet address and port number can be received only by a process whose socket is associated with that Internet address and port number. Processes may use the same socket for sending and receiving messages. Each socket can be addressed using a 16bit unique address, thus giving 216 port addresses.
There are 4 types of sockets created through Java API
1. TCP Socket used for clients – Used for Connection oriented communication
Socket s = new Socket(int portNumber)
2. TCP Server Socket – Used for Connection oriented communication
ServerSocket ss = new ServerSocket(int portNumber)
3. UDP Socket for client/server – Used for Connection less communication
DatagramSocket d = new DatagramSocket(int portNumber)
4. Multicast Socket – Used for Group Communication
MulticastSocket m = new MulticastSocket(int portNumber)
External data representation allows the sending and receiving of information in one of the 2 ways
Marshalling is the process of taking a collection of data items and assembling them into a form suitable for transmission in a message.
Unmarshalling is the process of disassembling them on arrival to produce an equivalent collection of data items at the destination.
Middleware: The term middleware applies to a software layer that provides a programming abstraction as well as masking the heterogeneity of the underlying networks, hardware, operating systems and programming languages.
Remote object references: Other objects can invoke the methods of a remote object if they have access to its remote object reference
Remote interfaces: Every remote object has a remote interface that specifies which of its methods can be invoked remotely
A distributed file system enables programs to store and access remote files exactly as they do local ones, allowing users to access files from any computer on a network
Locking: When locking is used for concurrency control, the objects remain locked and are unavailable for other transactions during the atomic commit protocol, although an aborted transaction releases its locks after phase 1 of the protocol
Timestamp Ordering: In a single server transaction, the coordinator issues a unique timestamp to each transaction when it starts. Serial equivalence is enforced by committing the versions of objects in the order of the timestamps of transactions that accessed them. In distributed transactions, we require that each coordinator issue globally unique timestamps. A globally unique transaction timestamp is issued to the client by the first coordinator
accessed by a transaction. The transaction timestamp is passed to the coordinator at each server whose objects perform an operation in the transaction.
Optimistic Concurrency Control: Each transaction is validated before it is allowed to commit. Transaction numbers are assigned at the start of validation and transactions are serialized according to the order of the transaction numbers. A distributed transaction is validated by a collection of independent servers, each of which validates transactions that access its own objects. This validation takes place during the first phase of the two-phase commit protocol.
Distributed deadlock is where there can be a cycle in the global wait-for graph that is not in any single local one.
Phantom deadlock is a deadlock that is ‘detected’ but is not really a deadlock