Tải bản đầy đủ (.pdf) (18 trang)

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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.15 MB, 18 trang )


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
–  Truyền thông nhóm
–  IP multicast
Nhắc lại: Tiếp cận lớp
!  The OSI model
Application
Presentation
Session
Transport
Network
Data
Physical
Application
Presentation
Session


Transport
Network
Data
Physical
The network
A message,
descends
through the
layers
Then ascends
through the
layers at the
receiver
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)
Marshalling and external data representation
Middleware
layers
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
điệp
Address + port
156.254.12.35:875
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
A computer, IP address = 138.37.543.345
client
ports
server
A computer, IP address = 138.37.53.349
ports
Port: 1
Port: 671
Port: 1
Port: 771
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
A computer, IP address = 138.37.543.345
client
ports
server
A computer, IP address = 138.37.53.349
ports
Port: 1
Port: 671
Port: 1
Port: 771
Socket maps to a port
Socket maps to a port
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:
•  i.e.

In Java a DatagramPacket is constructed:

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

Note: the DatagramPacket contains the host address (aHost) and the host port
(serverPort)
The message Length of message Internet address Port
3432 543 4531 13 145.25.123.871 589
API & IP: truyền thông UDP
•  Trong'Java'
Trong'Java,'một'DatagramPacket'được'gởi'và'nhận'như'sau:'
'
'aSocket.send(myPacket);2
2aSocket.recieve(myPacket);2
'
Ghi'chú:'aSocket'là'một'thể'hiện'của'lớp'DatagramSocket'.'
'

×