Bài giảng Hệ phân tán - Middleware

Giới thiệu

Middleware đối tượng phân tán

Đối tượng ở xa & CORBA

Đối tượng dùng chung phân tán

Publish/Subscribe Middleware

 

ppt42 trang | Chuyên mục: Cơ Sở Dữ Liệu Phân Tán | Chia sẻ: dkS00TYs | Lượt xem: 3975 | Lượt tải: 2download
Tóm tắt nội dung Bài giảng Hệ phân tán - Middleware, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
hủ động: có luồng điều khiển của riêng mình Các đối tượng thường trực và nhất thời Nhất thời: chỉ tồn tại khi một client nào đó tham chiếu đến Thường trực: tồn tại cho đến khi bị hủy một cách tường minh Cách gọi phương thức động và tĩnh Động: object code được tạo trong khi chạy Tĩnh: object code được biên dịch cùng mã client Giao diện Khai báo các phương thức mà một đối tượng cài đặt để cung cấp cho client Định nghĩa cú pháp của các lời gọi hàm, không nói về nội dung Một object có thể xuất khẩu (export) nhiều giao diện Một số hệ thống cho phép đặt phiên bản cho các giao diện IDL – Interface Definition Language. Thuộc tính của lớp, các phương thức công khai, ngoại lệ và các kiểu dữ liệu khác. Mô hình kiến trúc đối tượng ở xa Bên client: Tiến trình client: bind tới đối tượng ở xa → proxy tại không gian địa chỉ của client; gọi phương thức của đối tượng Proxy: có nhiệm vụ đóng gói lời gọi phương thức, gửi tới object server; được sinh từ một đặc tả giao diện IDL và link với mã client Run-time system: cung cấp dịch vụ gửi&nhận, dịch tham chiếu… Mô hình kiến trúc đối tượng ở xa Bên server: Object: chứa trạng thái và các phương thức, cài đặt một giao diện Skeleton: server stub; được sinh từ đặc tả IDL và link với server Run-time system: nhận yêu cầu từ client và chuyển tới skeleton thích hợp Object server: chỗ trú cho các bản cài đặt object; quản lý tương tranh; hỗ trợ các phiên bản mã cũ. Binding và name resolution Name resolution: Name → tham chiếu xa Thông tin tham chiếu chứa trong tên (vd. URL), hoặc Dịch vụ naming lưu trữ các ánh xạ tên → tham chiếu Binding Ánh xạ tham chiếu xa → tham chiếu địa phương Tạo 1 proxy Nối proxy với object server Tham chiếu tới đối tượng Tham chiếu địa phương Tham chiếu tới proxy Tham chiếu tới đối tượng Tham chiếu xa Địa chỉ server + object ID Tham chiếu tới đối tượng Tham chiếu xa Tham chiếu tới mã proxy (ví dụ URL) và dữ liệu khởi tạo Tham chiếu tới đối tượng Tham chiếu xa Tên đối tượng (tên dễ dùng đối với người, object ID, v.v..) Remote method invovation (RMI) Kiểu gọi phương thức chuẩn (đồng bộ) Tương tự RPC: Client gọi phương thức đối với proxy Proxy thực hiện RPC tới object server Skeleton tại object server gọi phương thức của đối tượng Khác RPC: Object server có thể phải tạo đối tượng Một số hệ đối tượng phân tán cung cấp các kiểu gọi phương thức khác: Gọi không đồng bộ Gọi phương thức của đối tượng thường trực Events and Callbacks Ngữ nghĩa của lời gọi phương thức Gọi phương thức tại chỗ: thực thi đúng-một-lần Không thể có đảm bảo như vậy với gọi phương thức từ xa! Gọi phương thức kiểu tĩnh và động CORBA CORBA – Common Object Request Broker Architectur Chuẩn Object Management Group (OMG) 3.1 Nhiều ánh xạ ngôn ngữ Định nghĩa tương quan của IDL interface với cài đặt được viết bằng một ngôn ngữ lập trình có thể cài đặt các interface bằng bất cứ ngôn ngữ nào có ánh xạ IDL Tính trong suốt: vị trí và di cư Kiểu kích hoạt: mặc định là “at-most-once”, có thể chọn “maybe” Các dịch vụ: hỗ trợ naming, bảo mật, sự kiện, lưu trữ dài hạn, giao tác, v.v. Kiến trúc CORBA Cho phép client gọi thao tác của đối tượng ở xa - đối tượng CORBA Các đối tượng CORBA ở xa thực chất là đối tượng thông thường được bọc trong CORBA IDL OMG IDL Đặc điểm của OMG IDL: Cú pháp là một tập con của ANSI C++ kèm thêm các cấu trúc cho việc gọi đối tượng Không có các cấu trúc điều khiển, chỉ gồm các lệnh khai báo Có các kiểu dữ liệu cơ bản và phức tạp, nhưng không có con trỏ Không có template và không có hàm chồng (overloading) Hỗ trợ tiền xử lý CORBA – Ví dụ: file system Interface (giao diện): 	Định nghĩa các thành phần public của lớp: thuộc tính thao tác (phương thức) lỗi/ngoại lệ Thừa kế các interface Không cài đặt CORBA – Module và Interface Mỗi interface định nghĩa giao diện của một đối tượng CORBA với bên ngoài Interface có thể được định nghĩa bằng (đa) thừa kế module là nơi gộp các khai báo và interface có liên quan→ naming scope (không gian tên) Tên hợp lệ: 	Foo::barFoo::A::bazFoo::C::baz CORBA – thao tác và thuộc tính Các thao tác qui định định dạng của hàm/phương thức mà client có thể gọi để dùng chức năng của đối tượng tham số của thao tác thuộc các loại in, out, và inout thao tác kiểu oneway : non-blocking, không có tham số inout, out, không có giá trị trả về (void ) Thuộc tính tương đương với các biến của đối tượng mà client có thể đọc hoặc ghi giá trị Thuộc tính readonly: chỉ đọc CORBA – Các phần tử của IDL Kiểu cơ bản: Các kiểu thường gặp có kích thước cố định từ short tới long long char, boolean octet (8 bit, không bao giờ bị chuyển đổi khi gửi dữ liệu) any (có giá trị thuộc bất cứ kiểu dữ liệu nào của IDL) Kiểu có cấu trúc struct, union, và enum kiểu C++ string, array, sequence, fixed Ngoại lệ - exception: System exception: các ngoại lệ chuẩn do CORBA định nghĩa User-defined exception: người dùng tự định nghĩa bằng IDL Các ánh xạ ngôn ngữ Truy nhập các interface từ các ngôn ngữ lập trình “thực thụ”? Các ánh xạ ngôn ngữ chuẩn định nghĩa: Biểu diễn các kiểu dữ liệu IDL bằng ngôn ngữ chủ Tham chiếu tới hằng và đối tượng Cơ chế gọi thao tác Cách xử lý khi xảy ra exception Về lí tưởng, mã cài đặt client và đối tượng nên có tính khả chuyển (portable) giữa các trình biên dịch IDL và các ORB (Object request broker) khác nhau Lưu ý: ánh xạ này không quy định cách cài đặt interface (ví dụ tham chiếu đối tượng) Ví dụ CORBA – C++ #ifndef __DATADIST_IDL__ #define __DATADIST_IDL__ module Data { interface ServiceA { boolean MethodA ( in long num1, inout long num2, out long retNum ); boolean MethodB ( inout long num1, inout long num2); }; }; #endif Kiến trúc CORBA – Client Bind tới đối tượng ở xa Kích hoạt tĩnh: Proxy/stub Kích hoạt động (dynamic invocation) Kích hoạt động: Dynamic Invocation Interface (DII) Client chưa có proxy tới đối tượng cần kích hoạtnhưng có object reference Client lấy từ Interface repository thông tin về các phương thức của đối tượng cần gọi, dùng thông tin đó để tạo yêu cầu kích hoạt và gửi tới server Interface repository: kho lưu trữ dài hạn các định nghĩa interface tại ORB cung cấp cho client và server thông tin về các IDL interface đã được đăng ký Chỉ dùng cho kích hoạt động Tham chiếu đối tượng Tham chiếu đối tượng – Object reference (OR) Chỉ tới đúng 01 đối tượng, Một đối tượng có thể có nhiều tham chiếu khác nhau chỉ tới Được cài đặt theo các cách khác nhau Interoperable Object Reference (IOR) các cài đặt khác nhau có thể cùng dùng Kiến trúc CORBA – Object Object/servant, có thể là: Đối tượng thực sự (ví dụ C++, Java) Các biến trạng thái và thủ tục (ví dụ C) Mã chương trình cũ (đặt trong wrapper) Object Adapter: tạo tham chiếu đối tượng (OR → object) Liên hệ tham chiếu đối tượng trong yêu cầu với các cài đặt đối tượng kích hoạt skeleton (tĩnh hoặc động) Portable Object Adapter Dynamic Skeleton Interface (DSI) Cho phép đối tượng CORBA nhận yêu cầu kích hoạt theo một interface mà nó chưa có skeleton Phân tích yêu cầu kích hoạt và tìm đối tượng và phương thức cần kích hoạt Kiến trúc CORBA – ORB ORB: Object Request Broker: Dịch các tham chiếu tới đối tượng địa phương và ở xa Gửi và nhận thông điệp Giữ interface repository Hỗ trợ kích hoạt động (cả hai bên client và object) Định vị đối tượng ở xa Binding Binding trực tiếp: Tạo proxy ORB nối với server bằng thông tin từ IOR Yêu cầu kích hoạt được gửi qua mạng Binding gián tiếp: Implementation repository chứa thông tin về các cài đặt đối tượng Nhiệm vụ: Kích hoạt các server đã đăng ký Định vị các server đang chạy CORBA: các giao thức CORBA GIOP (General Inter ORB Protocol): giao thức liên lạc giữa các ORB Sử dụng biểu diễn dữ liệu CDR độc lập với phần cứng và hệ điều hành thực hiện giao thức Request-Reply không phụ thuộc hệ điều hành bên dưới Không quy định giao thức giao vận IIOP (Internet Inter ORB Protocol) thực hiện giao thức Request-Reply trên TCP/IP Mô hình đối tượng phân tán dùng chung Distributed Shared Object (DSO) Thông tin trạng thái có thể được: sao lặp (tại nhiều object server) phân mảnh (partitioned) Các phương thức chạy tại một số hoặc tất cả các replica Vị trí của đối tượng không còn rõ ràng Client Client có đại diện địa phương (local representative – LR) tại không gian địa chỉ của mình LR không có trạng thái Tương đương với proxy Các phương thức được thực hiện ở xa LR có trạng thái Trạng thái đầy đủ Trạng thái bộ phận Các phương thức (có thể) chạy tại chỗ Object Duy nhất 1 LR chứa 1 bản trạng thái đối tượng Mỗi LR chứa 01 bản sao hoàn chỉnh trạng thái đối tượng Mỗi LR chứa một phần của trạng thái đối tượng Object server Server được dành riêng để đặt các LR Cung cấp tài nguyên (mạng, đĩa, v.v.) Hỗ trợ tạo LR tĩnh và động LR tức thời và thường trực Cung cấp các cơ chế bảo mật Vị trí của các LR: LR có thể đặt tại cả client lẫn object server LR tại object server không nhất thiết phải có trạng thái (stateful) LR tại client không nhất thiết stateless Các hệ thống DSO Mô hình DSO chưa phổ biến GLOBE (Global Object Based Environment) dự án nghiên cứu thiết kế và phát triển hệ phân tán trên mạng diện rộng Fragmented Objects (C++) FORMI (Java RMI) Publish/Subscribe Lọc thông điệp – message filtering Lọc theo chủ đề Mỗi sự kiện được gắn nhãn chủ đề Phân nhóm sự kiện theo chủ đề So sánh chủ đề Lọc theo nội dung: Không phân nhóm sự kiện So sánh nội dung Xử lý phức tạp hơn Publish/subcribe – Các kiến trúc Tập trung (centralized) Multicast-based Peer-to-peer Kiến trúc Tập trung: Dễ cài đặt Khả năng mở rộng thấp Số sự kiện và số subscriber tăng Kiến trúc Multicast-based: Event được multicast đến các tất cả các subscriber Mỗi nút phải tự theo dõi các subscription của mình, tự lọc tại chỗ các thông điệp nhận được Cần cơ chế multicast tăng quy mô được (scalable) Tính mở rộng được không cao do gửi nhiều thông điệp Kiến trúc Peer-to-peer: Liên lạc Point-to-point Multicast Xây dựng cây multicast thích hợp là việc khó Định tuyến theo nội dung (content-based routing) Point-to-point dựa trên mạng các thiết bị định tuyến Đưa ra các quyết định gửi chuyển tiếp dựa theo nội dung thông điệp Lưu trữ thông tin subscription tại các nút định tuyến 

File đính kèm:

  • pptBài giảng Hệ phân tán - Middleware.ppt
Tài liệu liên quan