Bài giảng Hệ phân tán - Kiến trúc hệ thống và liên lạc

Các kiến trúc hệ thống

Tiến trình

Liên lạc trong hệ phân tán

Các trừu tượng hóa liên lạc

 

ppt52 trang | Chuyên mục: Cơ Sở Dữ Liệu Phân Tán | Chia sẻ: dkS00TYs | Lượt xem: 3393 | Lượt tải: 2download
Tóm tắt nội dung Bài giảng Hệ phân tán - Kiến trúc hệ thống và liên lạc, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
 nếu trang 10 thuộc loại chỉ đọc và có sử dụng sao lặp Truyền thông điệp Căn bản: send() receive() Biến thể: Hướng kết nối hay phi kết nối Đồng bộ hay không đồng bộ Có dùng bộ nhớ đệm hay không Đáng tin cậy / không đáng tin cậy Có đảm bảo thứ tự thông điệp khi giao Biểu diễn dữ liệu: Marshalling Thứ tự byte thấp/cao (little/big endian) Các tầng trong liên lạc của hệ phân tán Các tầng thấp: Vật lý, Liên kết dữ liệu, Mạng Tầng mạng là giao diện mức thấp nhất của nhiều hệ phân tán Tầng giao vận: cung cấp các tiện ích liên lạc thực sự cho hầu hết các hệ phân tán Tầng middleware: cung cấp các giao thức và dịch vụ phổ biến mà nhiều ứng dụng khác nhau có thể dùng các giao thức liên lạc đa dạng (un)marshaling dữ liệu Các giao thức naming cho phép dễ dàng chia sẻ tài nguyên Các giao thức bảo mật dành cho liên lạc an toàn Các cơ chế mở rộng, chẳng hạn sao lặp và caching Phần còn lại (không có trong middleware) là các giao thức đặc thù của ứng dụng Các dạng liên lạc Liên lạc hướng dữ liệu / hướng điều khiển Liên lạc đồng bộ / không đồng bộ Liên lạc tức thời / thường trực Liên lạc hướng dữ liệu / hướng điều khiển Liên lạc hướng dữ liệu: Tạo điều kiện cho trao đổi dữ liệu giữa các luồng Không gian địa chỉ dùng chung, bộ nhớ dùng chung và truyền thông điệp Liên lạc hướng điều khiển: Chuyển điều khiển theo thông điệp RPC (gọi hàm từ xa ), RMI (gọi phương thức từ xa) Nhận xét: Phần cứng và hệ điều hành thường cung cấp liên lạc hướng dữ liệu Cơ sở hạ tầng ở mức cao hơn thường cung cấp cơ chế liên lạc hướng điều khiển (middleware) Nhưng một số hệ điều hành cung cấp RPC, và MPI (Message Passing Interface) cung cấp liên lạc hướng dữ liệu Liên lạc đồng bộ / không đồng bộ Liên lạc đồng bộ: Bên gửi block cho đến khi thông điệp được nhận Bên gửi thường block cho đến khi thông điệp được xử lý và bên gửi nhận được thông điệp trả lời Bên gửi và bên nhận phải cùng ở chế độ hoạt động Bên gửi đợi yêu cầu, xử lý yêu cầu (nhanh nhất có thể), và gửi trả kết quả Mô hình client-server thường dùng liên lạc đồng bộ Không đồng bộ Bên gửi tiếp tục chạy sau khi gửi thông điệp (không block đợi kết quả) Thông điệp được xếp vào hàng đợi nếu bên nhận không ở chế độ hoạt động Thông điệp được xử lý khi nào thuận tiện cho bên nhận Đồng bộ / không đồng bộ thích hợp cho các tình huống nào? Liên lạc tức thời và thường trực Tức thời: Thông điệp bị vứt bỏ nếu đã đến máy đích nhưng không thể lập tức giao cho bên nhận Ví dụ: HTTP request Thường trực: Thông điệp được lưu trữ cho đến khi bên nhận có thể tiếp nhận Ví dụ: email Kết hợp (1) Liên lạc thường trực đồng bộ (b) và không đồng bộ (a) Kết hợp (2) Liên lạc tức thời không đồng bộ Liên lạc tức thời đồng bộ đợi gửi đến nơi 2-22.2 Kết hợp (3) Liên lạc tức thời đồng bộ đợi nhận Liên lạc tức thời đồng bộ đợi trả lời Các trừu tượng hóa liên lạc Trừu tượng hóa quy trình truyền thông điệp giúp cho việc lập trình liên lạc được dễ dàng hơn Các API bậc cao cung cấp: RPC – Remote Procedure Call – gọi hàm từ xa RMI – Remote Method Invocation – gọi phương thức từ xa Message-Oriented Communication Group communication Stream RPC (gọi hàm từ xa) Tư tưởng: thay thế mô hình truyền thông điệp kiểu input/output bằng cách chạy một lời gọi hàm tại một máy ở xa: Đồng bộ - block khi gửi thông điệp gọi hàm Ứng dụng không cần biết chi tiết truyền thông điệp Dùng các tham số lời gọi hàm để truyền dữ liệu Client gọi hàm stub địa phương, stub thực hiện việc truyền thông điệp và đóng gói dữ liệu (marshalling) Dùng cơ chế gọi hàm để che dấu liên lạc giữa bên gọi và bên được gọi Có thể bị lẫn giữa thao tác địa phương và thao tác trên máy ở xa RPC – Thao tác cơ bản 2-8 	Client gọi client stub. Stub dựng thông điệp; gọi hệ điều hành địa phương. HĐH gửi thông điệp tới HĐH ở xa. HĐH ở xa chuyển thông điệp cho server stub. Stub tháo gỡ các tham số và gọi server. 	Server trả kết quả cho stub. Stub dựng thông điệp; gọi HĐH. HĐH gửi thông điệp cho HĐH của client. HĐH của client chuyển thông điệp cho client stub. Stub tháo dỡ kết quả và trả về cho client. RPC – đóng gói tham số Stub phải đóng gói (marshal) các tham số vào cấu trúc thông điệp Máy của client và server có thể có biểu diễn dữ liệu khác nhau (byte thấp/cao) Đóng gói 1 tham số có nghĩa chuyển 1 giá trị thành 1 chuỗi byte Client và server phải thống nhất một kiểu mã hóa chung chuyển thông điệp thành các biểu diễn dữ liệu tùy theo từng loại máy tính Dữ liệu thông điệp không được chứa con trỏ (dữ liệu truyền bằng tham chiếu phải được thay bằng dữ liệu truyền bằng giá trị) Có thể phải thực hiện các chuyển đổi khác Thứ tự byte (byte thấp / byte cao) Định dạng dấu chấm động Xử lý con trỏ Chuyển mọi thứ sang định dạng chuẩn (mạng), hoặc Thông điệp quy định định dạng, bên nhận chuyển đổi nếu cần Stub có thể được sinh tự động từ đặc tả giao diện RPC – Một số framework ONC RPC (Open Network Computing RPC hay Sun RPC): Internet RFC 5531 Dựa trên biểu diễn dữ liệu XDR Là cơ sở của các dịch vụ phân tán chuẩn như NFS (Network File System) và NIS (Network Information Service) Distributed Computing Environment RPC (DCE RPC) XML (mã hóa lời gọi hàm) và HTTP (cơ chế truyền thông điệp) data stream dạng text dễ debug hơn HTTP đơn giản hóa việc tích hợp với web server và qua được firewall Ví dụ: XML-RPC (lightweight) và SOAP (Simple Object Access Protocol) (mạnh hơn nhưng thường phức tạp quá mức cần thiết) RPC không đồng bộ RPC không đồng bộ: client được chạy tiếp mà không cần đợi trả lời từ server Khi không cần trả lời Khi không cần trả lời ngay RMI – Remote Method Invocation Sự chuyển dịch từ RPC tới RMI (gọi phương thức từ xa) là sự chuyển dịch từ tư tưởng server sang tư tưởng đối tượng RPC: phải chỉ định tường minh server của hàm cần gọi, server lưu thông tin trạng thái của client RMI: đích là một đối tượng cụ thể, thông tin trạng thái được đóng gói trong đối tượng đích Các đối tượng là các “công dân” hạng nhất tham chiếu tới đối tượng có thể được truyền dưới dạng tham số có thể được trả về dưới dạng kết quả của phương thức Giải quyết vấn đề dữ liệu con trỏ của RPC RMI chỉ là một bước tiến nhỏ từ RPC Nhưng RMI và đối tượng phân tán là mô hình được sử dụng rộng rãi Nguy cơ của tính trong suốt Tính trong suốt mà RPC và RMI cung cấp có thể nguy hiểm Các thao tác ở xa có thể… thất bại theo nhiều kiểu mà các thao tác địa phương không gặp (đứt liên lạc, server down…) có độ trễ tùy ý có các hình thức truy nhập bộ nhớ khác nhau có các hoạt động tương tranh không dễ thấy Nếu bỏ qua các điểm trên thì sao? Dịch vụ và ứng dụng không đáng tin cậy Khả năng mở rộng được thấp Hiệu năng thấp Message-Oriented Communication (MOM) MOM là các dịch vụ của middleware dành cho việc truyền thông điệp send()/receive() truyền thống cung cấp: Liên lạc đồng bộ và không đồng bộ Liên lạc tức thời MOM cung cấp gì hơn thế? Liên lạc thường trực (hàng đợi thông điệp) Che dấu chi tiết cài đặt Marshalling (đóng gói thông điệp) Ví dụ: MPI – Message Passing Interface Được thiết kế cho các ứng dụng song song Sử dụng nền tảng mạng bên dưới Được thiết kế dành cho liên lạc tức thời Không hỗ trợ liên lạc thường trực Cung cấp các chức năng cơ bản cho mọi hình thức liên lạc tức thời Hỗ trợ group communication Hàng đợi thông điệp Ví dụ Java Message Service IBM WebSphere MQ Cung cấp: Liên lạc thường trực Các hàng đợi chứa thông điệp Chuyển thông điệp giữa các hàng đợi Mô hình Các hàng đợi đặc thù của ứng dụng Thông điệp được đánh địa chỉ tới các hàng đợi cụ thể Chỉ đảm bảo gửi đến hàng đợi đích, không đảm bảo về thời gian Thời gian trễ có thể lên hàng phút Tương tự email nhưng có mục đích rộng hơn (cho phép liên lạc giữa các ứng dụng chứ không chỉ giữa người với nhau) Hàng đợi thông điệp Kiến trúc Hàng đợi: Hàng đợi nguồn (tại chỗ) Hàng đợi đích (từ xa) Queue Manager (bộ phận quản lý hàng đợi) Quản lý trực tiếp (quản lý các queue trong máy) Chuyển tiếp/định tuyến (định tuyến tới máy đích) Hỗ trợ multícast gửi tới nhiều queue của nhiều máy. Hàng đợi thông điệp Message broker: Dịch giữa các định dạng thông điệp của ứng dụng Application gateway Liên lạc dựa sự kiện Là một dạng liên lạc hướng thông điệp Liên lạc qua việc lan truyền các sự kiện Thường được dùng trong các hệ thống publish/subscribe Tiến trình (gửi) công bố (publish)sự kiện (trong đó có dữ liệu) Tiến trình (nhận) đăng ký theo dõi (subscribe) một số sự kiện nhất định Middleware giao cho tiến trình các sự kiện mà nó đã đăng ký Group communication Tiến trình gửi 01 thông điệp tới một nhóm các tiến trình khác Hai loại liên lạc nhóm: Broadcast (thông điệp được gửi tới tất cả) Multicast (thông điệp được gửi tới một nhóm đã định trước) Được dùng cho: Sao lặp dịch vụ (gửi yêu cầu tới một nhóm máy phục vụ là các bản sao lặp) Sao lặp dữ liệu (gửi cập nhật dữ liệu tới một nhóm server dữ liệu sao lặp) Phát hiện dịch vụ (“ai cung cấp dịch vụ này?”) Thông báo về sự kiện (vd: “máy in đã bắt đầu chạy lại”) Có các vấn đề về : Độ tin cậy (ai đó không nhận được) Thứ tự (khi thứ tự các thông điệp nhận được là quan trọng, vd: cập nhật dữ liệu) Stream Hỗ trợ continuous media Giữa các ứng dụng và giữa các thiết bị continuous media: Dữ liệu được biểu diễn bằng một dòng đơn thay vì các khối Quan hệ thời gian của dữ liệu có ảnh hưởng đến tính đúng đắn (ngược lại với discrete media) Độ trễ min và max giữa hai đầu Các dòng dữ liệu: Chuỗi của các đơn vị dữ liệu Có thể áp dụng cho continuous media cũng như discrete media (kết nối TCP là một dòng) Stream Các hình thức truyền: Không đồng bộ: không có hạn chế về thời gian (vd: chuyển file) Đồng bộ: độ trễ tối đa của mỗi đơn vị dữ liệu (không thể quá cũ khi đến đích) Đẳng thời: độ trễ min/max khi chuyển giữa hai đâu. Chất lượng dịch vụ / Quality of Service Yêu cầu về thời gian Yêu cầu về băng thông, tốc độ truyền, độ trễ, v.v.. Stream Đồng bộ hóa stream: Bảo toàn quan hệ thời gian giữa các dòng con Ví dụ: đồng bộ hóa hình ảnh và âm thanh Các kiểu đồng bộ hóa Đồng bộ hóa ở phía client Client nhận nhiều dòng Dùng thông tin đồng bộ hóa (ví dụ timestampt) để đồng bộ hóa Các dòng khác nhau có thể có độ trễ khác nhau Đồng bộ hóa ở phía server Multiplex các dòng con thành một dòng 

File đính kèm:

  • pptBài giảng Hệ phân tán - Kiến trúc hệ thống và liên lạc.ppt
Tài liệu liên quan