410 likes | 657 Views
Chương 4: PHỐI HỢP GIAO TiẾP CÁC TiẾN TRÌNH. GV. Ngô Thanh Huy. 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
E N D
Chương 4: PHỐI HỢP GIAO TiẾP CÁC TiẾN TRÌNH GV. Ngô Thanh Huy
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
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
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
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
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
Giao tiếp nguyên thủy- truyền/nhận trực tiếp Symmetric Process Name Asymmetric Process Name 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
mailbox mailbox mailbox Giao tiếp nguyên thủy- truyền/Nhận gián tiếp Multipoint Communication Multipath Communication
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
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
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
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
Port • Port: cổng dùng trong giao tiếp socket, tạo kết nối, lắng nghe kết nối. Sau khi kết nối được thiết lập, không cần port trong thông điệp Socket
Client/Server hướng dịch vụ Giao tiếp Socket (I) • Truyền thông hướng kết nối sử dụng socket. Reply Request Rendezvous
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
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)
Giao thức RPC giữa một Client và một Server 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 Client suspends Receive(blocked) Receive(blocked)
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
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
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)
Data Representation • 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 5 83,886,080 5 LLIJ JILL LLIJ
Đị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
Truyền tham số • Các bước tính toán từ xa thông qua RPC 2-8 Server may support manyprocedures
Binding a Client to a Server (II) – DCE & Directory Server (Port) Has a well known port
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
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 IDLnguyênmẫucó chứa một định danh duy nhất trên toàn cầu (Vị trí + Thời gian)
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)
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,…
IPC và ứng dụng trong các thành phần của Hệ thống phân tán