Transcript Bai 1(LTPT)
CHƯƠNG 1 TỔNG QUAN LẬP TRÌNH PHÂN TÁN Nội dung Khái niệm lập trình phân tán Khái niệm hệ phân tán Các mô hình ứng dụng Lợi ích của các ứng dụng phân tán Giới thiệu một số ngôn ngữ lập trình phân tán Bài tập và thực hành 1. Khái niệm lập trình phân tán Lập trình phân tán là lập trình trên các hệ thống phân tán Lập trình CSDL phân tán Lập trình Client-server Lập trình Peer to peer 2. Khái niệm hệ phân tán Theo Andrew S.Tanenbaum: ◦ Hệ phân tán là một tổ hợp các máy tính độc lập mà đối với người dùng nó có vẻ như một hệ thống đơn nhất quán. ◦ => không tồn tại một hệ thống lý tưởng như vậy trong thực tế. Định nghĩa “yếu hơn” về hệ phân tán: ◦ Hệ phân tán là một tổ hợp các máy tính độc lập được sử dụng kết hợp để thực hiện một tác vụ hoặc để cung cấp một dịch vụ. Ví dụ về hệ phân tán VD1: World-Wide-Web - tổ hợp các Web server – các máy cài giao thức HTTP, FTP,… đang cùng nhau cung cấp cơ sở dữ liệu phân tán gồm các tài liệu siêu văn bản và tài liệu đa phương tiện. VD2: Các máy tính của một mạng LAN cung cấp một hình ảnh đồng nhất về một hệ thống tệp phân tán. Tap hop cac may tinh trong mang internet co chay dich vu ten mien DNS Kiến trúc hệ phân tán Client – server Peer – to – peer (P2P) 3. Các mô hình ứng dụng Hệ tính toán phân tán Hệ thông tin phân tán Hệ thông tin di động a. Hệ tính toán phân tán Nhiều hệ thống phân tán được cấu hình cho tính toán hiệu năng cao: ◦ Cluster Computing: trong LAN, dùng để chạy các thuật toán song song ◦ Grid Computing: trong WAN, tổ chức ảo b. Hệ thông tin phân tán VD: Các hệ giao tác (transaction) Các hệ này phải thỏa mãn các tính chất sau (ACID): ◦ Atomicity (tính nguyên tử): trạng thái của đối tượng không bị ảnh hưởng bởi thao tác thành công hay thất bại. ◦ Consistency (tính nhất quán): một giao tác phải là hợp lệ. ◦ Isolation (tính cô lập): các giao tác tương tranh không dính líu tới nhau. ◦ Durability (tính bền vững): giao tác được đảm bảo cho dù hệ thống có gặp sự cố. c. Hệ thông tin di động Gồm các thiết bị tính toán nhúng và di động. Trong đó, tính không bền vững là mặc định, cấu tạo ad-hoc (mỗi nút phải đơn giản và dễ cấu hình) 4. Lợi ích của các ứng dụng phân tán Cho phép truy nhập tài nguyên Tính trong suốt Khả năng mở rộng Đảm bảo độ tin cậy và nhất quán Hiệu năng Tính mềm dẻo (Tham khảo file CSDL_2/trg 5, 6) 5.Giới thiệu một số ngôn ngữ lập trình phân tán Lập trình phân tán với COM+/MTS Lập trình phân tán đối tượng với RMI Lập trình phân tán đối tượng với Corba Lập trình phân tán REMOTING trong .NET Lập trình phân tán với Web Service a. Lập trình với COM+/MTS COM (Component Object Model) là một cách thức để viết các thành phần phần mềm (software componet) cung cấp các chức năng phục vụ cho các ứng dụng, các thành phần khác. Viết một thành phần COM cũng như viết một hàm API động, hướng đối tượng. Các thành phần COM có thể được nối kết với các ứng dụng cũng như các thành phần COM khác. Thành phần COM là những đoạn mã hiện thực các hàm, các chức năng được chứa trong file .DLL hoặc .EXE. Lập trình với COM+/MTS Thành phần COM cần phải thỏa mãn được những “chuẩn” của COM. Các thành phần COM có thể được liên kết động. Các thành phần COM có thể được “bao gói” lại vì nó thỏa mãn các ràng buộc: Thành phần COM hoàn toàn độc lập với ngôn ngữ hiện thực nó. được thực hiện bằng nhiều ngôn ngữ như Visual C++, Visual Basic, Java ….. Thành phần COM được sử dụng dưới dạng mã nhị phân. Thành phần COM có thể dễ ràng nâng cấp Thành phần COM trong suốt về vị trí. Lập trình với COM+/MTS Tầng trung gian của các ứng dụng thường là các thành phần COM được viết bằng các ngôn ngữ lập trình hỗ trợ giao thức COM (như Visual Basic, Visual C++,...) và được quản lý bởi Micrsoft Transaction Server (MTS). Khi tầng trung gian là các thành phần COM và được quản lý bởi MTS thì chúng được gọi là COM+/MTS. COM+/MTS có nhiệm vụ quản lý tất cả các component, điều khiển, giám sát mọi tác vụ như: tạo mới một thành phần, quản lý các hàng đợi, giao dịch... COM+/MTS luôn lắng nghe các kết nối từ máy khách, khi các yêu cầu chấm dứt (không còn sử dụng đến nữa) thì nó giải phóng tài nguyên và kết nối đó. Lập trình với RMI RMI (Remote Method Invocation) là một công nghệ phân tán cho phép các phương thức trên các máy ảo Java được gọi từ xa. Là cách đơn giản để truyền tin giữa một ứng dụng này với ứng dụng khác so với truyền tin trực tiếp dùng TCP socket (cách truyền tin này đòi hỏi cả hai phía đều sử dụng cùng một giao thức). Thay vì viết các chương trình cài đặt giao thức, những người phát triển có thể tương tác với các phương thức đối tượng được định nghĩa bởi một giao tiếp dịch vụ RMI. Mỗi khi có được một tham chiếu tới đối tượng từ xa, tham chiếu này có thể được xem như là một đối tượng cục bộ, đây là cách trực quan để phát triển các ứng dụng mạng. Lập trình với CORBA CORBA (Common Object Request Broker Architecture) định nghĩa nhiều dịch vụ, một trong những dịch vụ đó thực hiện chức năng tương tự như RMI CORBA họat động với nhiều ngôn ngữ lập trình khác nhau CORBA được định nghĩa bởi một liên kết bao gồm 800 công ty thành viên, được gọi là Nhóm Quản Lý Đối Tượng (Object Management Group - OMG) CORBA định nghĩa 2 thành phần: Một thực thể cho phép liên lạc giữa 2 tiến trình (hay còn gọi là 1 môi giới yêu cầu đối tượng (Object Request Broker - ORB)) Một giao thức được ORB dùng để liên lạc giữa nhiều tiến trình, được gọi là IIOP (Internet Interoperability Protocol) Sự khác nhau giữa RMI và CORBA RMI là một phần của bộ J2SDK và là các hàm thư viện hỗ trợ các lời gọi phương thức từ xa và trả về giá trị cho các ứng dụng tính toán phân tán. CORBA là một chuẩn công nghiệp cho phép gọi các phương thức từ xa và nhận kết quả trả về, nhưng không giống như RMI, nó có thể được sử dụng khi bên phía gọi và bên phía phương thức được gọi có thể sử dụng các ngôn ngữ lập trình khác nhau. RMI là một tập các hàm thư viện đơn giản vì cả 2 bên đều sử dụng cùng môt ngôn ngữ lập trình và kiến trúc máy. Điều này sẽ làm cho việc gọi phương thức từ xa dễ giải quyết hơn. Bộ phát triển J2SDK cũng hỗ trợ RMI-CORBA, cho phép một đối tượng Java gọi một đối tượng CORBA sử dụng hai cách tiếp cận khác nhau. .NET Remoting NET Remoting là một kĩ thuật .NET được giới thiệu từ .NET framework 1.1. Cùng với .NET Webservice, .NET remoting là lựa chọn cho giải pháp xử lý tính toán từ xa. .NET Remoting là một kĩ thuật cho phép một đối tượng này truy xuất đến một đối tượng khác. Có thể sử dụng .NET Remoting để gọi một chương trình hoặc một service chạy trên một máy tính khác để xử lý một vấn đề và trả lại kết quả tính toán. Khác biệt giữa .NET Remoting và COM Việc giao tiếp giữa các tiến trình thường được thực hiện bằng cách sử dụng Distributed COM hay còn gọi là DCOM. DCOM đã rất hữu ích cho những chương trình chạy trên các máy tính cùng loại và nằm trong cùng một mạng. Tuy nhiên, DCOM trở nên lỗi thời vì nó không thể chạy trên Internet. DCOM dựa trên một tập giao thức mà không phải đối tượng nào cũng hỗ trợ và điều này khiến DCOM không chạy được trên những platform khác nhau. Ngoài ra, DCOM sử dụng nhiều port trong khi các port ấy thường bị chặn bởi firewall. (Tất nhiên mở những port đó để nó hoạt động được không khó nhưng đó là một trong những phiền phức). .NET Remoting khắc phục những yếu kém của DCOM bằng cách hỗ trợ nhiều giao thức khác nhau. Web Service Web Serivce là một công nghệ cho phép client truy xuất để thực hiện mọi tác vụ như một Web Application. Về bản chất, Web service dựa trên XML và HTTP, trong đó XML làm nhiệm vụ mã hóa và giải mã dữ liệu và dùng SOAP để truyền tải. Web Service không phụ thuộc vào platform nào, do đó có thể dùng Web Service để truyền tải dữ liệu giữa các ứng dụng hay giữa các platform. Khác biệt giữa Web Services và .NET Remoting Về khía cạnh xử lý từ xa thì Web Services hoàn toàn tương tự như .NET Remoting. ASP.NET Web Services chỉ có thể được truy xuất qua HTTP còn .NET Remoting có thể được dùng trên nhiều giao thức khác nhau như TCP, HTTP. Web Services là một môi trường stateless. Khi có một request từ phía client, sẽ có một object mới được tạo ra để thực hiện request đó trên server. Còn .NET Remoting lại hỗ trợ nhiều lựa chọn state management và có thể thực hiện nhiều request từ một client, đồng thời có hỗ trợ callbacks. Web Services serialize các đối tượng thành XML bên trong SOAP message và vì thế có thể truyền tải thông tin của bất cứ thành phần nào miễn có thể chuyển thành XML. Còn đối với .NET Remoting thì tùy giao thức và định dạng message mà nó có thể truyền đi thông tin như thế nào..NET Remoting cho phép đối tượng được truyền vào theo cả kiểu tham chiếu(reference) và tham trị (value). Web services có thể hoạt động trên các platform môi trường khác nhau trong khi .NET Remoting yêu cầu phía clients phải là .NET application. Bài tập và thực hành Cài đặt Oracle (bản Express) CHƯƠNG 2: CƠ SỞ DỮ LIỆU PHÂN TÁN (10 tiết) 2.1. Định nghĩa CSDL phân tán 2.2. Các đặc điểm chính của cơ sở dữ liệu phân tán 2.3. Mục đích của việc sử dụng cơ sở dữ liệu phân tán 2.4. Kiến trúc cơ bản của CSDL phân tán 2.5. Hệ quản trị CSDL phân tán 2.6. Hệ quản trị cơ sở dữ liệu Oracle 2.6.1. Cài đặt Oracle 2.6.2. Hiển thị dữ liệu 2.6.3. Cập nhật dữ liệu 2.6.4. Xóa, sửa dữ liệu Bài tập và thực hành DOC 1.1.3 VA 4.25 TRONG FLIE hdsd 2.1. Định nghĩa CSDL phân tán Một CSDL phân tán là một tập hợp nhiều CSDL có quan hệ với nhau về mặt logi và được phân bố trên một mạng máy tính Tính chất phân tán: Toàn bộ dữ liệu của CSDL phân tán không được cư trú ở một nơi mà cư trú ra trên nhiều trạm thuộc mạng máy tính Tương quan logic: Toàn bộ dữ liệu của CSDL phân tán có một số các thuộc tính ràng buộc chúng với nhau 2.2. Các đặc điểm của cơ sở dữ liệu phân tán a. Chia sẻ tài nguyên: Được thực hiện thông qua mạng truyền thông, mỗi tài nguyên cần được quản lý bởi một chương trình có giao diện truyền thông, có khả năng truy cập, cập nhật tin cậy b. Tính mở: Tính mở của hệ phân tán được xem như là mức độ bổ sung các dịch vụ dùng chung tài nguyên mà không phá hỏng hay nhân đôi các dịch vụ đang tồn tại, nó được hoàn thiện bằng cách xác định hay phân định rõ các giao diện chính của một hệ. 2.2. Các đặc điểm của cơ sở dữ liệu phân tán c. Khả năng song song: Hệ phân tán hoạt động trên mạng truyền thông có nhiều máy tính, mỗi máy có thể có 1 hay nhiều CPU. Tại một thời điểm nếu có N tiến trình cùng tồn tại, ta nói chúng thực hiện đồng thời. Việc thực hiện tiến trình theo cơ chế phân chia thời gian (một CPU) hay song song (nhiều CPU) d. Khả năng mở rộng Khả năng mở rộng được đặc trưng bởi tính không thay đổi phần mềm hệ thống và phần mềm ứng dụng khi hệ được mở rộng. Điều này chỉ đạt được mức độ nào đó với hệ phân tán hiện tại. Yêu cầu mở rộng không chỉ là sự mở rộng về