분산시스템 개념과 디자인 — Communication aspects of middleware
[ Commuication aspects of middelware ]1. Interprocess Communication2. Remote Invocation3. Indirect Communication
1. Interprocess Communication
- protocols for communication between processes in a distributed system
- provides both datagram and stream communication
- all support point-to-point communication
- useful to be able to send a message from one sender to a group of receivers
[ Sockets ]
[ Message Passing ]
[ Multicast support ]
→ must be provided even if underlying support for IP multicast is not available.
→ The Message Passing Interface (MPI) is a standard developed to provide an API
- IP multicast provides a multicast service for both LAN and the Internet.
- Multicast can also be supported by overlay networks in cases where, for example, IP multicast is not supported.
- in spite of suffering from omission failures it is a useful tool for many applications of multicast.
[ Overlay Networks ]
- UDP provides a simple message-passing facility
→ suffers from omission failures
→ carries no built-in performance penalties
- TCP guarantees message delivery
→ at the expense of additional messages and higher latency and storage costs.
→ 객체의 메모리에서 표현방식을 저장 또는 전송에 적합한 다른 데이터 형식으로 변환하는 과정
→ CORBA and its predecessors choose to marshal data for use by recipients that have prior knowledge of the types of its components.
2. Remote Invocation
- request-reply communication
→ minor enhancements to the underlying interprocess communication primitives
→ provide lightweight and minimal support for client-server computing. 📍 overheads of communication must be minimized [ embedded systems ]
- The remote procedure call (RPC)
→ allowing a calling process to call a procedure in a remote node as if it is local
→ Remote procedure calls provide a range of invocation semantics
- Remote method invocation (RMI)
→ RPC but for distributed objects, with added benefits in terms of using object-oriented programming concepts in distributed systems and also extending the concept of an object reference to the global distributed environments, and allowing the use of object references as parameters in remote invocations.
→ Middleware implementations of RMI provide components (including proxies, skeletons and dispatchers) that hide the details of marshalling, message passing and locating remote objects from client and server programmers.
→ Programmers know when they make remote invocations or implement remote objects, enabling them to handle errors [ RemoteException ] or to design objects suitable for concurrent access.
3. Indirect communication
- through an intermediary
→ uncoupling between producers and consumers of messages
→ dealing with change and establishing fault-tolerant strategies
- group communication: via a group abstraction
- publish-subscribe systems: disseminating events to multiple recipients
- message queue systems: receivers extracting messages from such queues
- shared memory–based approaches: distributed shared memory, tuple space approaches
❗️ quality of service remains a key challenge
→ space and time uncoupling by their very nature [ realtime behavior or security ]