Bài giảng Lập trình đồng thời và phân tán - Bài 4: Lập trình phân tán cung cấp cho người học các kiến thức: Thành phần chính cho Lập trình phân tán, hai phong cách Socket và RMI, universal datagram protocol, transmission control protocol. Mời các bạn cùng tham khảo.
LẬP TRÌNH ĐỒNG THỜI & PHÂN TÁN BÀI 4: LẬP TRÌNH PHÂN TÁN Giảng viên: Lê Nguyễn Tuấn Thành Email: thanhlnt@tlu.edu.vn NỘI DUNG ▪ Thành phần cho Lập trình phân tán ▪ Hai phong cách: Socket RMI (Remote Method Invocations) ▪ UDP (Universal Datagram Protocol) ▪ TCP (Transmission Control Protocol) Bài giảng có sử dụng hình vẽ sách “Concurrent and Distributed Computing in Java, Vijay K Garg, University of Texas, John Wiley & Sons, 2005” Hệ thống phân tán ▪ Bao gồm nhiều máy tính kết nối với ▪ Khơng có biến chia sẻ ▪ Trao đổi thơng qua kênh truyền thông để gửi nhận thông điệp ▪ Thường sử dung lý thuyết đồ thị để minh hoạ hệ thống phân tán Lớp InetAddress Lớp InetAddress (1) ▪ Với ứng dụng phân tán, cần khái niệm Địa Internet ▪ Bất kỳ máy tính kết nối với Internet (còn gọi host) xác định địa internet, gọi địa IP ▪ Do địa số khó nhớ, host có thêm tên (hostname) kèm ▪ Máy chủ phân giải hệ thống tên miền (Domain Name System - DNS) giúp cung cấp ánh xạ từ tên máy đến địa Lớp InetAddress (2/2) ▪ Java cung cấp lớp java.net.InetAddress sử dụng cho việc ánh xạ Lập trình Socket Socket ▪ A socket is one endpoint of a two-way communication link between two programs running on the network ▪ A socket is bound to a port number so that the TCP layer can identify the application that data is destined to be sent to ▪ An endpoint is a combination of an IP address and a port number ▪ ex: 206.62.226.25,p21 ▪ Two endpoints detemine a connection: socket pair 10 Khái niệm RMI (2) ▪ Các đối số phương thức M2, đối tượng xa O2, gửi thông qua thông điệp ▪ Tương tự, giá trị trả phương thức M2 truyền đến nơi gọi thông qua thông điệp ▪ Tất thông điệp ẩn lập trình viên ▪ Do RMI xem cấu trúc lập trình bậc cao so với gửi nhận thông điệp socket 26 Cài đặt RMI ▪ Với đối tượng xa phát sinh thêm: ▪ đối tượng liên kết phía client ▪ đối tượng phía server ▪ Lời gọi tới đối tượng xa phía client quản lý cách sử dụng đối tượng đại diện cho client, gọi stub ▪ Stub đóng gói tên phương thức đối số thơng điệp truyền tới phía server ▪ Thơng điệp nhận phía server đối tượng đại diện, gọi skeleton ▪ Skeleton có trách nhiệm tiếp nhận thông điệp, lấy đối số, cuối gọi phương thức thích hợp phía server 27 Source: http://www.rizzimichele.it/remote-methode-invocation/ 28 Cơ chế vận hành theo RMI (1) ▪ Bước 1: Server tạo đối tượng cho phép gọi từ xa với Stub Skeleton tương ứng đối tượng ▪ Bước 2: Server sử dụng lớp Naming để đăng ký tên cho đối tượng từ xa (1) ▪ Bước 3: Naming đăng ký Stub đối tượng từ xa với RMIRegistry (2) ▪ Bước 4: RMIRegistry sẵn sàng cung cấp tham chiếu đến đối tượng từ xa có yêu cầu (3)29 Cơ chế vận hành theo RMI (2) ▪ Bước 5: Client yêu cầu Naming định vị đối tượng xa qua tên đăng ký (phương thức lookup) với RMIRegistry (4) ▪ Bước 6: Naming tải Stub đối tượng xa từ RMIRegistry Client (5) ▪ Bước 7: Cài đặt đối tượng Stub trả tham chiếu đối tượng xa cho Client (6) ▪ Bước 8: Client thực thi lời gọi phương thức xa thơng qua đối tượng Stub (7) 30 Con đường kích hoạt phương thức xa 31 Khai báo đối tượng xa ▪ Đối tượng xa định nghĩa sử dụng giao diện xa, mở rộng từ lớp java.rmi.Remote 32 33 Cài đặt LỚP NameService Cài đặt RMI Server (1) Để cài đặt rmi server, biên dịch file chứa lớp từ xa (vd NameServiceImpl.java) Sau đó, cần tạo đối tượng stub liên kết với client đối tượng skeleton liên kết với server Tiếp theo đăng ký đối tượng xa với RMIRegistry lệnh rmiregistry Các bước: > javac NameServiceImpl.java > rmic NameServiceImpl > rmiregistry & 34 Cài đặt RMI Server (2) ▪ Vấn đề bảo mật ! ▪ Tệp tin sách bảo mật (file security policy) ▪ Ví dụ file security policy: 35 Cài đặt RMI Server (3) ▪ Bây khởi động RMI Server: > java -Djava.security.policy=policy NameServiceImpl 36 Cài đặt RMI Client (1) ▪ Lớp java.rmi.Naming cung cấp phương thức để lấy tham chiếu đối tượng xa ▪ Một cách để lấy tham chiếu đến đối tượng xa dựa cú pháp URL ▪ URL cho đối tượng xa xác định cú pháp rmi://host:port/name ▪ host tên RMIRegistry ▪ port số cổng RMIRegistry, ▪ name tên đối tượng xa 37 Phương thức lớp Naming 38 Cài đặt RMI Client (2) 39 Tài liệu Tham khảo ▪ Concurrent and Distributed Computing in Java, Vijay K Garg, University of Texas, John Wiley & Sons, 2005 ▪ Tham khảo: ▪ Principles of Concurrent and Distributed Programming, M Ben-Ari, Second edition, 2006 ▪ Foundations of Multithreaded, Parallel, and Distributed Programming, Gregory R Andrews, University of Arizona, Addison-Wesley, 2000 ▪ The SR Programming Language: Concurrency in Practice, Benjamin/Cummings, 1993 ▪ Xử lý song song phân tán, Đoàn văn Ban, Nguyễn Mậu Hân, Nhà xuất Khoa học Kỹ thuật, 2009 40 ... Source: https://www.safaribooksonline.com/library/view/distributed-computing-in/9781787126992/02dd04be-0dbb -4 7 3 2-8 bc 5-1 961 644 e8875.xhtml 20 Lớp Socket phía client ▪ public Socket (String host,... nhận 17 Lập trình Socket dựa TCP 18 Lập trình Socket dựa TCP ▪ Dựa khái niệm dòng tin (stream) ▪ Một kết nối TCP thiết lập luồng gửi luồng nhận ▪ Cho phép phục hồi lỗi tốt đảm bảo thứ tự phân phối...NỘI DUNG ▪ Thành phần cho Lập trình phân tán ▪ Hai phong cách: Socket RMI (Remote Method Invocations) ▪ UDP (Universal Datagram Protocol) ▪ TCP (Transmission Control Protocol) Bài giảng có sử