(Tiểu luận) tiểu luận kết thúc học phần môn hệ phân tán (lớp k30c cao học ngành công nghệ thông tin )

28 0 0
(Tiểu luận) tiểu luận kết thúc học phần môn hệ phân tán (lớp k30c   cao học ngành công nghệ thông tin )

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC VINH TIỂU LUẬN KẾT THÚC HỌC PHẦN MÔN HỆ PHÂN TÁN (Lớp K30C - Cao học ngành Công nghệ Thông tin ) Giáo viên hướng dẫn : TS Lê Văn Minh Học viên : Học viên Lê Huỳnh Giang Nguyễn Trung Phong : Học viên Đỗ Phước Thịnh : CNTT.K30C Lớp : Long An, 07/2023 LỜI CẢM ƠN Lời cảm ơn chân thành sâu sắc dành đến Thầy TS Lê Văn Minh - người tận tình hướng dẫn chúng tơi suốt q trình học tập nghiên cứu để hồn thành đồ án tốt Chúng tơi muốn bày tỏ lòng biết ơn đến Ban giám hiệu Trường Đại học Vinh Trường Đại học Kinh tế Công nghiệp Long An, với tất thầy cô giáo, người truyền đạt kiến thức quý báu tạo điều kiện thuận lợi giúp đỡ chúng tơi q trình học tập nghiên cứu Mặc dù cố gắng hết sức, đồ án khơng tránh khỏi thiếu sót Do đó, chúng tơi trân trọng ý kiến đóng góp từ quý Thầy Cô bạn bè để đồ án trở nên hồn thiện Một lần nữa, chúng tơi xin chân thành cảm ơn! MỤC LỤC CHƯƠNG GIỚI THIỆU CHƯƠNG 2: TỔNG QUAN VỀ HỆ CƠ SỞ DỮ LIỆU PHÂN TÁN VÀ HỆ THỐNG CÁC ĐỐI TƯỢNG PHÂN TÁN 1 Hệ sở liệu phân tán 1.1Mơ hình kiến trúc 1.2So sánh Hệ CSDL phân tán hệ CSDL tập trung 1.3Thiết kế Cơ sở liệu phân tán Hệ thống đối tượng phân tán 2.1Đối tượng (Objects) 2.2RPC (Remote Procedure Call) 2.3RMI (Remote Method Invocation) 2.4 CORBA (Common Object Request Broker Architecture) 2.5 Messaging (Thông điệp) 2.6 Service-Oriented Architecture (SOA) Cơ sở liệu phân tán Load Balancing (Cân tải) 10 HỆTHỐNGCHATCLIENT-SERVER CHƯƠNG 3: TRIỂN KHAI TRONG CƠ QUAN BẢO HIỂM XÃ HỘI TỈNH LONG AN 11 Ứng dụng hệ phân tán vào hệ thống chat client-server quan Bảo hiểm xã hội tỉnh Long An 11 Thực biên dịch thực thi ứng dụng 18 Ưu nhược điểm ứng dụng chat client-server sử dụng chế socket quan Bảo hiểm xã hội tỉnh Long An 20 CHƯƠNG 4: KẾT LUẬN 21 TÀI LIỆU THAM KHẢO 23 PHÂN CÔNG NHIỆM VỤ CÁC THÀNH VIÊN STT Họ tên Công việc giao Ghi Nghiên cứu trình bày Ứng dụng hệ phân tán vào hệ Lê Huỳnh Giang thống chat client-server quan Bảo hiểm xã hội tỉnh Long An Nghiên cứu trình bày Ứng dụng hệ phân tán vào hệ Nguyễn Trung Phong thống chat client-server quan Bảo hiểm xã hội tỉnh Long An Nghiên cứu trình bày tổng Đỗ Phước Thịnh quan hệ sở liệu phân tán hệ thống đối tượng phân tán, giới thiệu kết luận KẾT QUẢ ĐÁNH GIÁ NHÓM STT Họ tên Lê Huỳnh Giang Nguyễn Trung Phong Đỗ Phước Thịnh Đánh giá hoạt động nhóm Điểm CHƯƠNG GIỚI THIỆU Hệ phân tán ứng dụng chat client-server trở nên quan trọng phổ biến việc tạo giải pháp hiệu lĩnh vực công tác quan bảo hiểm xã hội Việc áp dụng hệ thống chat client-server quan bảo hiểm xã hội tỉnh Long An mang lại tiện ích vượt trội, từ việc tối ưu hóa giao tiếp nhân viên, đến việc nâng cao hiệu quản lý tương tác với khách hàng Đoạn mã ứng dụng chat server, cho phép nhiều khách hàng (clients) kết nối gửi tin nhắn văn cho thông qua máy chủ Cơ chế hỗ trợ quan bảo hiểm xã hội tỉnh Long An việc cải thiện trao đổi thông tin nội bộ, từ việc trao đổi thông tin nhân viên phận đến việc tương tác với phòng ban khác Đồng thời, việc triển khai ứng dụng chat client-server quan bảo hiểm xã hội giúp tăng cường liên kết giao tiếp với khách hàng Nhân viên nhanh chóng giải đáp thắc mắc, cung cấp thơng tin hỗ trợ dịch vụ bảo hiểm cách hiệu thông qua kênh chat trực tuyến Từ lợi ích trên, việc áp dụng hệ thống chat client-server quan bảo hiểm xã hội tỉnh Long An hứa hẹn mang lại thuận tiện, nhanh chóng hiệu việc quản lý thơng tin, giao tiếp nội hỗ trợ khách hàng, góp phần nâng cao chất lượng hiệu suất công việc quan bảo hiểm xã hội CHƯƠNG 2: TỔNG QUAN VỀ HỆ CƠ SỞ DỮ LIỆU PHÂN TÁN VÀ HỆ THỐNG CÁC ĐỐI TƯỢNG PHÂN TÁN Hệ sở liệu phân tán Hệ sở liệu phân tán (Distributed Database System) hệ thống sở liệu liệu phân tán lưu trữ nhiều máy tính nút mạng Mục tiêu hệ sở liệu phân tán cải thiện tính khả dụng, tính mở rộng hiệu suất hệ thống cách tận dụng tối đa tài ngun phân tán 1.1 Mơ hình kiến trúc a) Mơ hình kiến trúc hệ phân tán máy khách/máy chủ – client/server Hình: Sơ đồ hệ phân tán client/server Mơ hình máy khách/máy chủ dạng điện tốn phân tán chương trình (máy khách) giao tiếp với chương trình khác (máy chủ) nhằm mục đích trao đổi thơng tin Trong mơ hình này, máy khách máy chủ thường nói ngôn ngữ giao thức mà máy khách máy chủ hiểu để chúng giao tiếp Mặc dù mơ hình máy khách/máy chủ triển khai theo nhiều cách khác nhau, thường thực cách sử dụng ổ cắm cấp thấp Sử dụng ổ cắm để phát triển hệ thống máy khách/máy chủ có nghĩa phải thiết kế giao thức, tập hợp lệnh máy khách máy chủ đồng ý thơng qua chúng giao tiếp Ví dụ, xem xét giao thức HTTP cung cấp phương thức gọi GET, phương thức phải triển khai tất máy chủ web sử dụng máy khách web (trình duyệt) để truy xuất tài liệu b) Mơ hình hệ phân tán ngang hàng Hình: Sơ đồ kiến trúc hệ phân tán ngang hàng Mơ hình hệ phân tán ngang hàng (Peer-to-Peer - P2P) hệ phân tán kiểu kiến trúc thành phần phần mềm hoạc hệ thống mạng tương tác làm việc với mà khơng có máy chủ trung tâm điều khiển Mơ hình cho phép thành phần phân tán trao đổi thông tin tài nguyên trực tiếp nhau, tạo thành mạng phân tán có tính phân tán cao Trong mơ hình P2P, thành phần phần mềm, máy tính thiết bị có vai trị tương đương có khả hoạt động máy chủ (server) lẫn máy khách (client) Mỗi thành phần mạng cung cấp lấy thơng tin từ mà không cần can thiệp máy chủ trung tâm Mơ hình P2P khác biệt so với kiểu kiến trúc truyền thống client-server, có máy chủ trung tâm đảm nhận trách nhiệm xử lý yêu cầu cung cấp liệu cho máy khách 1.2 So sánh Hệ CSDL phân tán hệ CSDL tập trung 1.2.1 Hệ sở liệu tập trung Trong mơ hình này, thành phần xử lý ứng dụng, phần mềm sở liệu thân sở liệu xử lý Hệ sở liệu thiết kế cho hệ thống ngƣời dùng không hỗ trợ điều khiển cạnh tranh, chức phục hồi 1.2.2So sánh Hệ CSDL phân tán hệ CSDL tập trung Cơ sở liệu phân tán thiết kế khác sở liệu tập trung Do cần đối sánh đặc trưng sở liệu phân tán với sở liệu tập trung để thấy lợi ích sở liệu phân tán Đặc trưng mô tả sở liệu tập trung điều khiển tập trung, độc lập liệu, giảm bớt dư thừa, cấu vật lý phức tạp khả truy cập, toàn vẹn, hồi phục, điều khiển tương tranh, biệt lập an toàn liệu 1.3 Thiết kế Cơ sở liệu phân tán Các chiến lược thiết kế sở liệu phân tán phương pháp kỹ thuật để thiết kế triển khai sở liệu phân tán cho đáp ứng yêu cầu tính sẵn sàng, tính mở rộng, hiệu suất bảo mật Các chiến lược thiết kế sở liệu phân tán phụ thuộc vào yêu cầu cụ thể ứng dụng môi trường triển khai Thiết kế sở liệu phân tán địi hỏi cân nhắc tối ưu hóa yếu tố liên quan đến hiệu suất, khả mở rộng, tính sẵn sàng bảo mật Hệ thống đối tượng phân tán Hệ thống đối tượng phân tán kiến trúc phần mềm đối tượng (components, services) thành phần hệ thống triển khai chạy nhiều máy tính nút mạng Mục tiêu hệ thống phân tán tận dụng tối đa sức mạnh tính tốn tài ngun phân tán hệ thống, đồng thời cung cấp tính linh hoạt, mở rộng khả chịu lỗi cao Một số thành phần hệ thống đối tượng phân tán bao gồm: 2.1 Đối tượng (Objects) Trong hệ phân tán, đối tượng (Objects) đề cập đến thành phần phần mềm độc lập, có trạng thái hành vi, triển khai chạy máy tính khác mạng Các đối tượng phân tán giao tiếp với qua mạng để thực hoạt động phân tán, chia sẻ liệu, tương tác với Dưới số đặc điểm đối tượng phân tán: Tính độc lập: Mỗi đối tượng phân tán thành phần phần mềm độc lập, tồn hoạt động độc lập với đối tượng khác Điều cho phép tính module tái sử dụng mã Trạng thái hành vi: Các đối tượng phân tán bao gồm trạng thái (dữ liệu đối tượng) hành vi (phương thức đối tượng) Hành vi đối tượng triển khai cách định nghĩa phương thức Giao tiếp phân tán: Đối tượng phân tán giao tiếp với qua mạng cách gửi nhận thông điệp yêu cầu Các chế RMI (Remote Method Invocation) CORBA (Common Object Request Broker Architecture) sử dụng để thực việc giao tiếp Định danh nhất: Mỗi đối tượng phân tán có định danh giúp xác định hệ thống phân tán Định danh giúp truy cập giao tiếp với đối tượng từ xa Bảo mật: Bảo mật yếu tố quan trọng làm việc với đối tượng phân tán Cần thiết phải xác thực kiểm tra quyền truy cập gửi nhận thơng điệp đối tượng Tính bất đồng bộ: Các đối tượng phân tán thực hoạt động bất đồng bộ, có nghĩa u cầu khơng phụ thuộc vào gửi nhận thời điểm khác Khả mở rộng: Hệ thống đối tượng phân tán mở rộng cách thêm đối tượng triển khai đối tượng máy tính mạng Các đối tượng phân tán đóng vai trị quan trọng việc xây dựng ứng dụng phân tán có tính linh hoạt cao, khả mở rộng khả chịu lỗi tốt Chúng cho phép tận dụng tối đa tài nguyên phân tán hệ thống cung cấp chế mạnh mẽ để tương tác chia sẻ liệu thành phần phần mềm mạng 2.2 RPC (Remote Procedure Call) Đây chế cho phép đối tượng phân tán gọi phương thức thực thi mã từ xa máy tính khác mạng RPC mơ hình truyền thơng truyền thống lập trình phân tán Đây phương pháp để gọi hàm (procedure) máy tính từ xa thơng qua mạng Client gửi yêu cầu gọi hàm chờ đợi kết từ server RPC thường sử dụng môi trường phân tán với ngôn ngữ lập trình hỗ trợ tốt cho việc xây dựng gọi thủ tục từ xa C, C++, Python, PHP RPC không hỗ trợ truyền đối tượng (objects) client server, hỗ trợ truyền tham số kết thủ tục 2.3 RMI (Remote Method Invocation) Đây chế cho phép đối tượng phân tán gọi phương thức thực thi mã từ xa máy tính khác mạng RMI chế hướng đối tượng dành riêng cho Java hỗ trợ truyền đối tượng client server RMI có số đặc điểm khác so với RPC, cụ thể sau: RMI chế truyền thơng lập trình phân tán, xây dựng nguyên tắc hướng đối tượng Đây phương pháp để gọi phương thức đối tượng Java từ xa RMI hỗ trợ truyền đối tượng client server, cho phép gửi nhận tham số kết đối tượng Java RMI hỗ trợ tính bảo mật cao, nghĩa xác thực kiểm tra quyền truy cập người dùng trước cho phép gọi phương thức từ xa RMI phương tiện mạnh mẽ để triển khai ứng dụng phân tán Java, cung cấp tính hướng đối tượng kế thừa, đa hình giao diện 2.4 CORBA (Common Object Request Broker Architecture) CORBA (Common Object Request Broker Architecture) kiến trúc phần mềm phân tán chuẩn Object Management Group (OMG) cho phép đối tượng phân tán giao tiếp tương tác với qua mạng Nó phát triển giải pháp giúp đối tượng phần mềm viết ngơn ngữ lập trình khác tương tác với dễ dàng độc lập ngơn ngữ Một số thành phần CORBA bao gồm: Interface Definition Language (IDL): Đây ngôn ngữ định nghĩa giao diện chung đối tượng phân tán IDL mô tả giao diện đối tượng, bao gồm phương thức liệu mà đối tượng sử dụng để giao tiếp với Object Request Broker (ORB): ORB trung gian đối tượng phân tán hệ thống CORBA Nó quản lý việc gửi nhận yêu cầu phản hồi đối tượng ORB đảm bảo yêu cầu đối tượng gửi đến đối tượng cụ thể hệ thống Stubs Skeletons: CORBA sử dụng stubs skeletons để đóng gói yêu cầu phản hồi client server Stub đại diện cho đối tượng clientside, skeleton đại diện cho đối tượng server-side Cả hai giúp ẩn chi tiết giao tiếp mạng giúp dễ dàng tạo đối tượng phân tán Đối tượng phân tán: Đối tượng CORBA triển khai chạy máy tính khác mạng giao tiếp với thông qua ORB Service: CORBA cung cấp dịch vụ phổ biến Time, Naming, Event, Trader Service để hỗ trợ tác vụ phân tán phức tạp Điểm mạnh CORBA cung cấp tích hợp ứng dụng viết ngôn ngữ lập trình khác Điều cho phép đối tượng phân tán viết Java giao tiếp làm việc với đối tượng viết C++, Python, hay ngôn ngữ hỗ trợ CORBA CORBA sử dụng rộng rãi ứng dụng phân tán lớn phức tạp, năm gần đây, nhiều công nghệ xuất phổ biến RESTful APIs, gRPC, kiến trúc dựa Web Services Tuy sở liệu phân tán mang lại nhiều lợi ích, có số thách thức khó khăn Các vấn đề phổ biến bao gồm quản lý đồng liệu, đảm bảo tính bảo mật phân quyền, tối ưu hiệu suất xử lý xung đột liệu Các hệ quản lý sở liệu phân tán phổ biến bao gồm Cassandra, MongoDB, Couchbase hệ quản lý sở liệu có hỗ trợ phân tán nhân rộng lớn khác Sự lựa chọn hệ quản lý sở liệu phân tán phụ thuộc vào yêu cầu cụ thể ứng dụng môi trường triển khai Load Balancing (Cân tải) Load Balancing (Cân tải) kỹ thuật lập trình phân tán mạng máy tính nhằm phân phối cơng việc tải tính tốn đồng máy tính nút mạng Mục tiêu load balancing cải thiện hiệu suất, khả mở rộng tính sẵn sàng hệ thống cách tránh tải tải không đồng tài nguyên máy tính Một số phương pháp phổ biến để thực load balancing bao gồm: Round Robin: Phương pháp gán yêu cầu liên tiếp đến máy tính mạng theo thứ tự tuần hoàn Các yêu cầu cân tải máy tính Least Connections: Phương pháp gán u cầu đến máy tính có kết nối mở Điều đảm bảo máy tính có số lượng kết nối nhận nhiều yêu cầu để cân tải IP Hash: Phương pháp dựa vào địa IP nguồn yêu cầu để xác định máy tính xử lý yêu cầu Điều giúp đảm bảo địa IP gửi đến máy tính, giúp trì trạng thái ứng dụng yêu cầu trạng thái (stateful) Weighted Round Robin Weighted Least Connections: Phương pháp gán trọng số (weight) cho máy tính mạng để ưu tiên gửi yêu cầu đến máy tính có trọng số cao Load Balancing đóng vai trị quan trọng việc tăng cường tính khả dụng hiệu suất hệ thống Nó giúp phân phối cơng việc đặn tránh tải số máy tính mạng Load balancing thường sử dụng hệ thống có khối lượng truy vấn lớn, trang web có lưu lượng cao, dịch vụ web, hệ thống máy chủ ứng dụng, hệ thống phân tán lớn 10 Tổng quan hệ thống đối tượng phân tán cung cấp nhìn tổng quan thành phần chế mơi trường phân tán Các công nghệ kiến trúc giúp xây dựng ứng dụng phân tán mạnh mẽ linh hoạt, đáp ứng yêu cầu hệ thống phức tạp địi hỏi tính tin cậy cao CHƯƠNG 3: TRIỂN KHAI HỆ THỐNG CHAT CLIENT-SERVER TRONG CƠ QUAN BẢO HIỂM XÃ HỘI TỈNH LONG AN Ứng dụng hệ phân tán vào hệ thống chat client-server quan Bảo hiểm xã hội tỉnh Long An Trong quan Bảo hiểm xã hội tỉnh Long An, việc trao đổi thông tin giao tiếp nhân viên khách hàng quan trọng Để giải vấn đề này, hệ thống chat client-server triển khai ngơn ngữ lập trình Java Hệ thống sử dụng công nghệ Socket để xây dựng kết nối máy chủ máy khách Chúng ta tìm hiểu cách triển khai hệ thống dựa đoạn mã package com.chat.server Tập tin Server.class: package com.chat.server; import java.net.ServerSocket; import java.net.Socket; import java.util.ArrayList; import java.util.HashMap; public class Server { public static void main(String[] args) { ArrayList clients = new ArrayList(); HashMap clientNameList = new HashMap(); try (ServerSocket serversocket = new ServerSocket(5000)) { System.out.println("Server is started "); while (true) { Socket socket = serversocket.accept(); clients.add(socket); ThreadServer ThreadServer = new ThreadServer(socket, clients, clientNameList); 11 ThreadServer.start(); } } catch (Exception e) { System.out.println(e.getStackTrace()); } } } Tập tin ThreadServer.class: package com.chat.server; import java.io.*; import java.net.Socket; import java.net.SocketException; import java.util.ArrayList; import java.util.HashMap; /** * Thread for Server */ public class ThreadServer extends Thread { private Socket socket; private ArrayList clients; private HashMap clientNameList; public ThreadServer(Socket socket, ArrayList clients, HashMap clientNameList) { this.socket = socket; this.clients = clients; this.clientNameList = clientNameList; } @Override public void run() { try { BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream())); 12 while (true) { String outputString = input.readLine(); if (outputString.equals("logout")) { throw new SocketException(); } if (!clientNameList.containsKey(socket)) { String[] messageString = outputString.split(":", 2); clientNameList.put(socket, messageString[0]); System.out.println(messageString[0] + messageString[1]); showMessageToAllClients(socket, messageString[0] + messageString[1]); } else { System.out.println(outputString) ; showMessageToAllClients(socket, outputString); } } } catch (SocketException e) { String printMessage = clientNameList.get(socket) + " left the chat room"; System.out.println(printMessage); showMessageToAllClients(socket, printMessage); clients.remove(socket); clientNameList.remove(socket); } catch (Exception e) { System.out.println(e.getStackTrace()) ; } } private void showMessageToAllClients(Socket sender, String outputString) { Socket socket; PrintWriter printWriter; int i = 0; while (i < clients.size()) { 13 socket = clients.get(i); i++; try { if (socket != sender) { printWriter = new PrintWriter(socket.getOutputStream(), true); printWriter.println(outputString); } } catch (IOException ex) { System.out.println(ex); } } } } Đoạn mã triển khai hệ thống chat client-server quan Bảo hiểm xã hội tỉnh Long An sử dụng chế Socket Hệ thống sử dụng máy chủ chat để lắng nghe kết nối từ máy khách thơng qua cổng 5000 Mỗi có kết nối mới, máy chủ tạo đối tượng Socket để thực việc giao tiếp với máy khách Danh sách clients đồ clientNameList sử dụng để lưu trữ thông tin máy khách kết nối Mỗi máy khách chạy luồng riêng biệt, thực thông qua lớp ThreadServer - Triển khai máy chủ (Server) Máy chủ (Server) điểm trung tâm hệ thống chat client-server, nơi máy khách (clients) kết nối để gửi nhận thông tin Trong đoạn mã, class Server nơi máy chủ triển khai Máy chủ lắng nghe kết nối đến cổng 5000 thơng qua lớp ServerSocket Mỗi có kết nối mới, máy chủ tạo đối tượng Socket để thiết lập giao tiếp với máy khách Mảng clients đồ clientNameList sử dụng để lưu trữ thông tin máy khách kết nối clients lưu trữ đối tượng Socket máy khách, clientNameList lưu trữ tên máy khách tương ứng với kết nối - Luồng (ThreadServer) 14 Mỗi máy khách kết nối thành công, máy chủ tạo luồng (ThreadServer) để xử lý giao tiếp với máy khách Luồng triển khai cách kế thừa lớp Thread ghi đè phương thức run() Trong phương thức run(), luồng (ThreadServer) thực việc đọc thông tin đến từ máy khách thông qua luồng nhập BufferedReader Luồng lắng nghe xử lý liệu từ máy khách vịng lặp vơ hạn Nếu thơng tin đến từ máy khách chứa chuỗi "logout", máy chủ xử lý việc đóng kết nối với máy khách cách ném ngoại lệ SocketException Nếu thông tin đến từ máy khách không chứa tên máy khách clientNameList, máy chủ xác định tên máy khách ghi tên vào clientNameList Sau đó, máy chủ thơng báo cho tồn máy khách khác việc có máy khách tham gia vào trị chuyện Nếu thơng tin đến từ máy khách chứa tên máy khách clientNameList, máy chủ hiển thị thơng tin gửi cho toàn máy khách khác hệ thống chat Nếu máy khách đóng kết nối (tức ngoại lệ SocketException ném), máy chủ thông báo cho toàn máy khách khác việc máy khách rời khỏi trị chuyện xóa thơng tin máy khách khỏi clientNameList - Gửi thông tin cho tất máy khách (showMessageToAllClients) Máy chủ sử dụng phương thức showMessageToAllClients để gửi thông tin nhận từ máy khách cho tất máy khách khác Trong phương thức này, máy chủ lặp qua danh sách clients để gửi thông tin cho máy khách (trừ máy khách gửi thông tin ban đầu) Việc gửi thông tin thực thông qua luồng xuất PrintWriter Tập tin Client.class: package com.chat.client; import java.io.PrintWriter; import java.net.Socket; import java.util.Scanner; public class Client { public static void main(String[] args) { String name = "empty"; 15

Ngày đăng: 20/09/2023, 15:28

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan