Truyền thông giữa các tiến trình (Inter-process communication)

Các chủ đề chính

–  Các đặc trưng của IPC –  Truyền thông đồng bộ và bất đồng bộ –  Biểu diễn dữ liệu ngoài và marshalling

•  CORBA’s Common Data Representation •  Java Object serialisation

–  Truyền thông trong Client-Server •  Client-Server Communication •  Truyền thông bên trong các dịch vụ được một nhóm server cung

cấp

IP multicast –  Truyền thông nhóm –

Nhắc lại: Tiếp cận lớp

—  The OSI model

Application Application

Presentation Presentation

A message, descends through the layers

Session Session

Transport Transport

Network Network

Then ascends through the layers at the receiver

Data Data

The network

Physical Physical

A HOST – A COMPUTER A HOST – A COMPUTER

Bài này tập trung vào Middle ware

Application: Applications, services

RMI and RPC

Request Reply Protocol (RRP)

Middleware layers

Marshalling and external data representation

Transport: UDP and TCP

Other lower lever layers…

Các cơ sở của thông điệp

•  API (application programming interface)

–  Trong ngữ cảnh của bài này, nó đề cập đến một interface cho các lập

trình viên ứng dụng sử dụng UDP hoặc TCP

•  Chuyển thông điệp có hai tác vụ chính

–  Gửi và nhận (Request and Reply) –  một tiến trình gởi đến các người nhận khác –  Một yêu cầu đơn giản là cả hai: các nơi nhận và các thông điệp liên

quan đến đồng bộ hóa (synchronisation)

Đồng bộ hóa

–  Đồng bộ (blocking)

•  Người gởi bị “khóa” nghĩa là bị “đóng băng” trong khi gởi

cho đến khi có phản hồi từ người nhận •  Người gởi và người nhận đồng bộ với nhau

–  Bất đồng bộ (non-blocking)

•  Người gởi có thể thực hiện xử lý một khi thông điệp đã được

gởi

–  Các hệ thống hiện nay nhắm đến đồng bộ –  Bất đồng bộ làm cho mã chương trình thêm phức

tạp

Đồng bộ (tt.)

•  Ví dụ

–  Blocking:

•  Yêu cầu rút tiền từ máy ATM •  Máy ATM bị khóa cho đến khi nhận được xác nhận quyền truy xuất từ

ngân hàng.

–  Non-blocking

•  Một DIS là non-blocking, nó cho pháp các xủa lý được thực hiện trong

khi đợi trả lời

•  Email là một ví dụ trong thế giớ thực về thông điệp non-blocking •  Bạn gởi một email và rồi làm chuyện khác trong khi chờ trả lời

API & IP: truyền thông giữa các tiến trình

•  Nơi đến của thông điệp

–  Địa chỉ

•  Địa chỉ xác định duy nhất một phần cứng, có thể là một máy

tính

•  Một cổng cục bộ là một nơi đến trên một máy tính

–  Một hoặc nhiều thông điệp có thể được gởi đến các cổng –  Các tiến trình có thể sử dụng một hay nhiều cổng để nhận thông

156.254.12.35:875

điệp

Address + port

API & IP: truyền thông giữa các tiến trình

•  Các vấn đề cần quan tâm trong truyền thông

giữa các tiến trình

–  Độ tin cậy (Reliability)

•  Các hệ thống có thể tin cậy không nên làm hư thông điệp ngay cả

nếu các gói bị mất hay bị hủy –  Tính thứ tự (Ordering)

•  Thông điệp được phân phối theo thứ tự gởi

Truyền thông giữa các tiến trình

ports

ports

Port: 1

Port: 1

client

server

Port: 671

Port: 771

A computer, IP address = 138.37.543.345

A computer, IP address = 138.37.53.349

Truyền thông tiến trình và Sockets

•  Sockets

–  Là một sự trừu tượng theo đó tiến trình liên kết đến

một socket có quan hệ đến một cổng –  Gán một cổng cục bộ đến một tiến trình –  Tiến trình trao đổi với socket – liên quan đến một cổng –  Các tiến trình chỉ có thể truy xuất thông điệp từ các

cổng liên kết đến socket của chúng

Truyền thông giữa các tiên trình

ports

ports

Socket maps to a port

Socket maps to a port

Port: 1

Port: 1

client

server

Port: 671

Port: 771

A computer, IP address = 138.37.543.345

A computer, IP address = 138.37.53.349

Truyền thông theo UDP

◦  UDP và phương pháp Datagram

–  Datagram được gởi từ một tiến trình đến tiến trình nhận –  Trước hết người gởi (the client) và người nhận (the server) phải

được liên kết đến cùng một socket –  Client có thể liên kết đến bất kỳ cổng nào –  Server liên kết đến cổng bảng bá đã xác định để nhận thông điệp

–  client gởi thông điệp của nó đến server bao gồm dịa chỉ nguwowgi

gởi (để nhận trả lời) –  server nhận và xử lý –  server gởi trả lời cho client thông qua địa chỉ và cổng

Truyền thông UDP (tt.)

—  Phương thức send là non-blocking (asynchronous)

◦  như vậy chúng ta tự do khi đã gởi

—  Phương thức nhận là blocking (synchronous), mặc dù các

threads khác có thể được dùng để tiến hành các công việc khác.

—  Nhận có thể dùng time-outs để giới hạn thời gian bị block.

◦  Tuy vậy việc xác định gia trị timeout tốt là khó

—  Thông điệp nhận được được lưu trữ trong hàng đợi liên kết

với socket.

—  Người nhận kiểm tra socket liên kết để nhận thông điệp —  Các thông điệp nhận được có thể đến từ khắp nơi

Truyền thông UDP

◦  Sử dụng UDP và phương pháp Datagram

–  Hiệu quả khi không quan tâm đến sự cố và khả năng chịu lỗi

–  i.e. naming services

–  Hiệu quả vì giảm các truyền thông bắt tay để bảo đảm các phương

thức phân phối

Truyền thông UDP

—  UDP và phương pháp Datagram

◦  Ví dụ về phương thức: –  aSocket.send(request) –  aSocket.recieve(reply)

–  ở đây cả hai request và reply và các gói Datagram

◦  Các phương thức khác:

–  setSoTimeout –  connect

API & IP: truyền thông UDP

•  In Java

•  A DatagramPacket class contains:

The message

Length of message

Internet address

Port

•  i.e.

3432 543 4531

13

145.25.123.871

589

In Java a DatagramPacket is constructed:

Note: the DatagramPacket contains the host address (aHost) and the host port

myPacket = new DatagramPacket(m,args[0].length(), aHost, serverPort);

(serverPort)

API & IP: truyền thông UDP

•  Trong  Java

Trong  Java,  một  DatagramPacket  được  gởi  và  nhận  như  sau:

Ghi  chú:  aSocket  là  một  thể  hiện  của  lớp  DatagramSocket  .

aSocket.send(myPacket);    aSocket.recieve(myPacket);