Transcript File

Chương 4: PHỐI HỢP GIAO TiẾP CÁC
TiẾN TRÌNH
GV. Ngô Thanh Huy
1
Giới thiệu
• Các tiến trình tương tác với nhau bằng mô hình truyền
thông chuyên biệt để hợp tác thực thi các xử lý
– Truyền thông liên tiến trình (Interprocess communication - IPC)
– Phối hợp các tiến trình phân tán
• Message passing: phương thức trao đổi dữ liệu giữa các
tiến trình trong hệ phân tán
– Tất cả các mô hình truyền thông liên tiến trình (interprocess) ở các
mức cao phải được xây dựng dựa trên Message passing
– Tất cả các tiến trình trong hệ phân tán phối hợp với nhau dựa trên
mô hình truyền thông điệp liên tiến trình
2
Các mức truyền thông
Interprocess communication
Transaction
– Database systems
–…
Request/reply (RPC)
– Client/Server
– Service-oriented
Message passing
Network operating system
Transport connection
Communication network
Packet switching
3
Message Passing Communication
4
Tổng quan
• Phương thức chung cho truyền thông liên tiến trình (IPC)
– Cho các tiến trình trong cùng một máy tính
– Cho các tiến trình trong hệ thống phân tán
• Cung cấp cơ chế đồng bộ hóa tiến trình
• Thông điệp (message)
– Tập hợp các đối tượng dữ liệu dạng “đánh máy”
– Các cấu trúc và các thể hiện được định nghĩa bởi các ứng dụng ngang hàng
• Vấn đề chính
–
–
–
–
Direct or indirect addressing
Blocking or non-blocking communication
Reliable or unreliable communication
Buffered or un-buffered communication
5
Message format
• Bao gồm header và nội dung
thông điệp
• Cấu trúc có thể khác trong các
hệ thống khác nhau
• Thông tin điều khiển:
– Làm gì khi vượt ra ngoài vùng
đệm
– Các chuỗi số
– Độ ưu tiên...
• Qui tắc hàng đợi: thường sử
dụng FIFO nhưng cũng có thể
bao gồm độ ưu tiên
6
Giao tiếp nguyên thủy (I)
• Truyền thông điệp cơ bản
– send(destination, message)
– receive(source, message)
• Đánh địa chỉ nguồn và đích
– Tên tiến trình, link, hộp thư (mailbox), port
• Direct communication: symmetric/asymmetric process name, links
– Khi một tiến trình có một định danh cụ thể được sử dụng làm nguồn/đích
• Indirect communication: many-to-many mailbox, many-to-one port
– Thông điệp được gửi đến một hộp thư chia sẻ với một hàng đợi các thông
điệp
– Phía gửi đặt tin nhắn trong hộp thư, phía nhận đến lấy tin nhắn
7
Giao tiếp nguyên thủy (II)
• Truyền thông trực tiếp bằng tên tiến trình
– Định danh tiến trình toàn cục = địa chỉ host + Định danh tiến trình
cục bộ
– Chỉ tồn tại một kết nối truyền thông luận lý giữa 2 phía nhận/gửi
– Địa chỉ đối xứng: phía gửi xác định địa chỉ phía nhận và ngược lại
– Địa chỉ bất đối xứng : phía nhận có thể nhận thông điệp từ nhiều
nguồn khác nhau; phía gửi cần xác nhận phía nhận
• Truyền thông trực tiếp bằng các link
– Cho phép nhiều kết nối (path) giữa các tiến trình
– Links
• Tạo và giải phóng bởi request
• Quản lý cục bộ bởi hệ thống
8
Giao tiếp nguyên thủy
- truyền/nhận trực tiếp
Symmetric
Process Name
Asymmetric
Process Name
9
Links
Giao tiếp nguyên thủy (III)
• Truyền thông gián tiếp
– Tiến trình gửi không quan tâm đến các ID của phía nhận cũng như
thông điệp nhận được bởi một tiến trình
– Tiến trình nhận chỉ quan tâm đến bản thân thông điệp, không quan
tâm đến ID của phía gửi
• Ví dụ
– Nhiều client có thể yêu cầu các dịch vụ từ một trong nhiều server
khác nhau
• Truyền thông gián tiếp có thể mô hình hóa với mailbox and
port
– Mailbox: các đối tượng chia sẽ, many-to-many communication
– Port: chỉ dành cho 1 process, many-to-one communication
10
Giao tiếp nguyên thủy
- truyền/Nhận gián tiếp
mailbox
mailbox
mailbox
Multipoint
Communication
Multipath
Communication
11
Mailbox và Port
• Một mailbox có thể được dành
riêng cho một cặp client/server
• Một mailbox có thể được chia sẽ
cho nhiều phía gửi và nhiều phía
nhận
• Port: là một mailbox nhưng chỉ
dành cho một tiến trình (phía
nhận)
– Ứng dụng Client/server: phía
nhận là server
• Port thường được tạo ra và sở
hữu bởi tiến trình nhận
• Port bị hủy khi phía nhận kết
thúc
12
Message Synchronization
• Quá trình gửi và nhận được gọi là blocking nếu tiến trình gọi
đến cần phải khóa cho việc gửi hoặc nhận thông điệp
tương ứng
– Đồng bộ hoặc bất đồng bộ
• Blocking send: phía gửi blocked cho đến khi thông điệp đến
được phía nhận hoặc đến mailbox
• Non-blocking send: phía gửi gửi thông điệp và tiếp tục hoạt
động
• Blocking receive: phía nhận blocked cho đến khi có thông
điệp đến
• Non-blocking receive: phía nhận có thể nhận thông điệp
hợp lệ hoặc một giá trị null
13
Buffered Message Passing
• Buffer: hàng đợi các thông điệp. Có thể có ở mức hệ thống
(receiver/sender), hoặc trong các giao tiếp mạng
• Buffer capacity: Bounded, finite length
– Phía gửi blocked khi buffer đầy
– Phía nhận blocked khi buffer rỗng
• Buffer capacity: Unbounded, infinite length
– Asynchronous send: not blocked
– Receiver??
• Buffer capacity: zero
– Sender/Receiver phải chờ lẫn nhau
14
Socket
15
Socket
• Socket
– Socket cung cấp một giao tiếp để lập trình trên hệ thống mạng tại
tầng transport
– Liên lạc trên Network bằng socket giống như việc thực thi file I/O
– Giao tiếp giữa các socket là độc lập ngôn ngữ
• Chương trình viết bằng Java cũng có thể giao tiếp với chương
trình viết bằng ngôn ngữ khác
• Berkeley socket: C
• WinSock cho các ứng dụng Windows
16
17
Port
• Port: cổng dùng trong giao tiếp socket, tạo kết nối, lắng
nghe kết nối.
Socket
18
Sau khi kết nối được thiết lập,
không cần port trong thông điệp
Socket Primitives
Primitive
Meaning
Socket
Create a new communication endpoint
Bind
Attach a local address to a socket
Listen
Announce willingness to accept
connections
Accept
Block caller until a connection request
arrives
Connect
Actively attempt to establish a connection
Send/Write
Send some data over the connection
Receive/Read Receive some data over the connection
Close
Release the connection
19
Client/Server hướng dịch vụ
Giao tiếp Socket (I)
Request
Rendezvous
• Truyền thông hướng kết nối sử dụng socket.
20
Reply
Client/Server hướng dịch vụ
Giao tiếp Socket (II)
Cổng ban đầu được sử dụng
để chấp nhận các kết nối từ
các client khác
Sử dụng cổng mới để giao tiếp
với các client được kết nối
21
Remote Procedure Call (RPC)
22
RPC
• Tính trong suốt với RPC
– Access – không có sự phân biệt giữa RPC và (local) procedure call
– Communication – che dấu các system calls, chuyển đổi dữ liệu, và các giao
tiếp mạng
•
•
•
•
Truyền thông reuest/reply hướng dịch vụ
Giao thức RPC giữa một Client và một Server
Dòng điều khiển RPC
Những vấn đề trong hiện thực
–
–
–
–
–
Parameter and result passing, and data conversion
Binding
Compilation
Failures
Security (self study)
23
Giao thức RPC giữa một Client
và một Server
Client suspends
Thông tin có thể được chuyển
từ client sang server dưới dạng
các parameter và kết quả trả về
với dạng procedure result
Receive
(blocked)
Receive
(blocked)
24
Dòng điều khiển RPC
25
Các bước tuần tự RPC
•
•
•
•
•
•
•
•
•
•
Client procedure calls client stub
Client stub builds message, calls local OS
Client's OS sends message to remote OS
Remote OS gives message to server stub
Server stub unpacks parameters, calls server
Server does work, returns result to the stub
Server stub packs it in message, calls local OS
Server's OS sends message to client's OS
Client's OS gives message to client stub
Stub unpacks result, returns to client
26
Client và Server Stubs
• Client stub: chứa procedures mà client sẽ gọi thật sự
– Thu thập và đóng gói (pack) các tham số thành thông điệp và gọi
hàm hệ thống (system call) để gửi đi.
– Mở đóng gói (Unpack) kết quả trả về và chuyển kết quả cho client
• Server stub: chứa procedures được gọi bởi hệ thống trên
máy Server khi có một thông điệp được truyền đến, sau đó
sẽ gọi procedures thật sự trên máy Server để thực thi
27
Truyền tham số và chuyển
đổi dữ liệu (I)
• Parameter marshaling – các quy luật truyền tham số và
chuyển đổi dữ liệu/thông điệp của giao thức RPC
• Passing parameters
– Call-by-value hoặc call-by-reference
• Thể hiện dữ liệu và kiểm tra kiểu
– Nhiều loại máy khác nhau  nhiều thể hiện dữ liệu khác nhau
• ASCII, EBCDIC
• 16 bit integer, 32 bit integer,…
• Transfer syntax  tuân thủ một số quy luật truyền tải thông
điệp
– Định dạng thông điệp, thể hiện dữ liệu của các thông điệp, trao đổi
thật sự giữa các thông điệp (connection or connectionless)
28
Data Representation
a)
b)
c)
5
83,886,080
5
LLIJ
JILL
LLIJ
Thông điệp ban đầu trên máy Pentium
Thông điệp sau khi nhận trên SPARC
Thông điệp sau khi bị đảo ngược. Những con số nhỏ trong hộp chỉ ra địa
chỉ của mỗi byte
29
Định dạng thông điệp
• Client và server phải thống nhất các qui tắc trong
việc đóng gói các tham số của một thông điệp
• Client và server phải thống nhất sự biễu diễn
dữ liệu
30
Truyền tham số
• Các bước tính toán từ xa thông qua RPC
2-8
Server may support many
procedures
31
Binding a Client to a Server (I)
32
Binding a Client to a Server
(II) – DCE & Directory Server
(Port)
Has a well known port
33
RPC Compilation (I)
• Ba thành phần chính trong một package RPC
– An interface specification file
– A RPC generator
• Input: interface specification file
• Output: client and server stub procedure source codes
– Run-time library for the supporting execution of an RPC
• Support for binding, data conversion, and communication
34
RPC Compilation (II)
35
RPC Compilation in DCE
Các khai báo gần giống với
các chức năng nguyên mẫu
trong ngôn ngữ C: định nghĩa
kiểu, khai báo hằng, cú pháp
gọi hàm,…
Tạo ra một file IDL nguyên
mẫu có chứa một định danh
duy nhất trên toàn cầu (Vị trí
+ Thời gian)
36
RPC Failures
• Năm dạng lỗi RPC:
–
–
–
–
–
Client không thể xác định server
Thông điệp yêu cầu từ client tới server bị mất
Server treo khi nhận được yêu cầu
Thông điệp trả về từ server cho client bị mất
Client treo sau khi truyền thông điệp yêu cầu
• Nguyên nhân và khắc phục (self study)
37
Asynchronous RPC
Không quan tâm giá trị trả về
2-12
Traditional RPC
Asynchronous RPC
• Ví dụ Asynchronous RPC: Chuyển tiền, insert một record vào DB,
khởi động remote service,…
38
IPC và ứng dụng trong các thành phần
của Hệ thống phân tán
IP C M ethod
Distributed
R eal-T im e
P ara lle l
C om p on ents
C om p on ents
C om p on ents
M es s ag e P as s ing
Y es
Y es
Y es
P ip es
No
Y es
Y es
S oc k ets
Y es
Y es
Y es
RPC
Y es
Y es
Y es
39