1. Trang chủ
  2. » Luận Văn - Báo Cáo

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 )

27 0 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 27
Dung lượng 277,42 KB

Nội dung

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 : Lê Huỳnh Giang Học viên 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.1 Mơ hình kiến trúc 1.2 So sánh Hệ CSDL phân tán hệ CSDL tập trung 1.3 Thiết kế Cơ sở liệu phân tán Hệ thống đối tượng phân tán .4 2.1 Đối tượng (Objects) .4 2.2 RPC (Remote Procedure Call) 2.3 RMI (Remote Method Invocation) .5 2.4 CORBA (Common Object Request Broker Architecture) 2.5 Messaging (Thông điệp) .7 2.6 Service-Oriented Architecture (SOA) .8 Cơ sở liệu phân tán Load Balancing (Cân tải) 10 Ứ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 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 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 nguyên 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 Tái sử dụng: Các dịch vụ độc lập tái sử dụng giúp giảm thời gian công sức phát triển, chức triển khai lần tái sử dụng nhiều ứng dụng khác Linh hoạt: SOA cho phép dịch vụ linh hoạt có khả mở rộng, dễ dàng thay đổi cập nhật chức hệ thống mà không làm ảnh hưởng đến ứng dụng khác Tính mở rộng: SOA hỗ trợ xây dựng hệ thống phân tán mở rộng với khả thêm triển khai dịch vụ cách dễ dàng SOA trở thành kiến trúc phổ biến xây dựng ứng dụng phân tán, đặc biệt mơi trường doanh nghiệp nơi tích hợp tái sử dụng dịch vụ yêu cầu quan trọng Cơ sở liệu phân tán Cơ sở liệu phân tán hệ thống sở liệu liệu lưu trữ nhiều máy tính nút mạng Mục tiêu sở liệu phân tán tận dụng tối đa tài nguyên phân tán hệ thống cung cấp tính khả dụng cao, tính linh hoạt hiệu suất cao so với sở liệu truyền thống Một số đặc điểm sở liệu phân tán bao gồm: Độc lập vị trí: Dữ liệu phân chia thành phân đoạn lưu trữ máy tính khác mạng Điều cho phép liệu lưu trữ gần với ứng dụng sử dụng giảm thiểu tải cho máy chủ Khả mở rộng: Cơ sở liệu phân tán mở rộng cách thêm máy tính vào hệ thống để tăng khả lưu trữ xử lý liệu Tính khả dụng cao: Vì liệu lưu trữ nhiều máy tính, máy tính gặp cố, máy tính khác cung cấp liệu phục vụ yêu cầu ứng dụng Tính đồng (Consistency): Cơ sở liệu phân tán cần đảm bảo tính đồng liệu máy tính Điều đảm bảo liệu ln đồng xác dù có thay đổi trạng thái nhiều máy tính Tính bất đồng bộ: Cơ sở liệu phân tán thường hỗ trợ giao thức bất đồng cho phép thực thao tác cập nhật liệu mà không cần phải chờ đợi kết 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 String reply = "empty"; Scanner sc = new Scanner(System.in); System.out.println("Enter your name (Please enter your name to join the chat): "); reply = sc.nextLine(); name = reply; try (Socket socket = new Socket("10.80.208.18", 5000)) { PrintWriter cout = new PrintWriter(socket.getOutputStream(), true); ThreadClient threadClient = new ThreadClient(socket); new Thread(threadClient).start(); // start thread to receive message cout.println(reply + ": has joined chat-room."); { String message = (name + " : "); reply = sc.nextLine(); if (reply.equals("logout")) { cout.println("logout"); break; } cout.println(message + reply); } while (!reply.equals("logout")); } catch (Exception e) { System.out.println(e.getStackTrace()); } } } Tập tin ThreadClient.class: package com.chat.client; import java.io.BufferedReader; import java.io.IOException; 16 import java.io.InputStreamReader; import java.net.Socket; import java.net.SocketException; /** * Thread for clients */ public class ThreadClient implements Runnable { private Socket socket; private BufferedReader cin; public ThreadClient(Socket socket) throws IOException { this.socket = socket; this.cin = new BufferedReader(new InputStreamReader(socket.getInputStream())); } @Override public void run() { try { while (true) { String message = cin.readLine(); System.out.println(message); } } catch (SocketException e) { System.out.println("You left the chat-room"); } catch (IOException exception) { System.out.println(exception); } finally { try { cin.close(); } catch (Exception exception) { System.out.println(exception); } } 17 } } - Triển khai máy khách (Client) Máy khách (Client) người dùng cuối hệ thống chat client-server Trong đoạn mã, class Client nơi máy khách triển khai Đầu tiên, máy khách yêu cầu người dùng nhập tên để tham gia vào trị chuyện Sau đó, máy khách kết nối đến máy chủ thông qua lớp Socket Máy khách sử dụng PrintWriter để gửi tin nhắn đến máy chủ thông qua luồng xuất OutputStream Đồng thời, máy khách sử dụng luồng (ThreadClient) để lắng nghe tin nhắn đến từ máy chủ thông qua luồng nhập InputStream Việc sử dụng luồng giúp máy khách đồng thời nhận gửi tin nhắn cách song song - Nhập tên tham gia trị chuyện Sau kết nối thành cơng đến máy chủ, máy khách yêu cầu người dùng nhập tên để tham gia vào trị chuyện Tên người dùng gửi đến máy chủ để thông báo việc tham gia vào trò chuyện - Gửi nhận tin nhắn Sau tham gia trò chuyện, máy khách nhập tin nhắn gửi đến máy chủ thông qua luồng xuất Tin nhắn đóng gói với tên người gửi trước gửi Nếu máy khách nhập "logout", máy khách thông báo cho máy chủ việc khỏi trị chuyện đóng kết nối Đồng thời, máy khách lắng nghe tin nhắn đến từ máy chủ thông qua luồng nhập Các tin nhắn đến hiển thị hình máy khách, cho phép người dùng xem trả lời tin nhắn từ máy khách khác Thực biên dịch thực thi ứng dụng Để chạy ứng dụng chat client-server, bạn cần tuân thủ bước sau: - Bước 1: Biên dịch mã nguồn Java Mở Command Prompt Terminal chuyển đến thư mục chứa file mã nguồn Java bạn Biên dịch mã nguồn Java trình biên dịch Java (javac) Hãy chắn mã nguồn lưu file có phần mở rộng java javac Server.java 18 javac Client.java javac ThreadServer.java javac ThreadClient.java - Bước 2: Chạy máy chủ chat (Server) Trong Command Prompt Terminal, chạy lệnh sau để chạy máy chủ chat (Server): java Server Máy chủ chat bắt đầu lắng nghe kết nối từ máy khách (Client) cổng 5000 - Bước 3: Chạy ứng dụng chat máy khách (Client) Trong Command Prompt Terminal, chạy lệnh sau để chạy ứng dụng chat máy khách (Client): java Client Khi ứng dụng chat máy khách chạy, yêu cầu người dùng nhập tên sau kết nối đến máy chủ chat để tham gia vào trị chuyện Lưu ý: Trong q trình chạy ứng dụng, đảm bảo lệnh thực cửa sổ Command Prompt Terminal riêng biệt để máy chủ chat máy khách chat hoạt động đồng thời giao tiếp với Nếu ứng dụng chạy mạng, chắn máy tính chạy máy chủ chat 19 máy khách chat nằm mạng giao tiếp với thơng qua địa IP tên miền xác Ư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 - Ưu điểm ứng dụng chat client-server sử dụng chế socket: Đơn giản dễ triển khai: Cơ chế socket chế phổ biến đơn giản lập trình mạng Điều làm cho việc triển khai ứng dụng chat client-server trở nên dễ dàng nhanh chóng Đa tảng: Cơ chế socket hỗ trợ giao tiếp máy tính chạy hệ điều hành tảng khác Điều giúp ứng dụng chat client-server có tính tương thích linh hoạt với nhiều loại máy tính thiết bị Tích hợp với nhiều ngơn ngữ lập trình: Cơ chế socket sử dụng nhiều ngơn ngữ lập trình khác Java, Python, C++, Điều cho phép bạn triển khai ứng dụng chat client-server nhiều tảng sử dụng ngơn ngữ lập trình mà bạn thích Tính tin cậy ổn định: Khi triển khai cách, chế socket có tính tin cậy ổn định việc truyền nhận liệu client server Điều đảm bảo ứng dụng chat client-server hoạt động cách trơn tru không bị gián đoạn - Nhược điểm ứng dụng chat client-server sử dụng chế socket: Thiết kế bảo mật phức tạp: Cơ chế socket cung cấp sở cho việc truyền nhận liệu, việc triển khai tính bảo mật phức tạp cần thêm công việc Để đảm bảo tính bảo mật ứng dụng chat client-server, bạn cần xem xét biện pháp bảo mật mã hóa liệu, xác thực người dùng phân quyền truy cập Khó khăn quản lý kết nối: Khi số lượng client tăng lên, việc quản lý kết nối trở nên phức tạp dễ dẫn đến vấn đề liên quan đến tài nguyên hệ thống hiệu suất Hiệu suất bị giới hạn: Trong số trường hợp, hiệu suất ứng dụng chat client-server sử dụng chế socket bị giới hạn tốc độ độ trễ mạng Tóm lại, ứng dụng chat client-server sử dụng chế socket giải pháp đơn giản hiệu để triển khai tính trò chuyện trực tuyến quan Bảo hiểm 20 xã hội tỉnh Long An Tuy nhiên, việc triển khai tính bảo mật quản lý kết nối cần xem xét cách cẩn thận để đảm bảo tính bảo mật hiệu suất ứng dụng CHƯƠNG 4: KẾT LUẬN Trong trình triển khai ứng dụng chat client-server quan Bảo hiểm xã hội tỉnh Long An, sử dụng công nghệ Socket để xây dựng hệ thống Qua việc triển khai, có nhìn tổng quan ưu điểm hạn chế công nghệ Sự đơn giản tích hợp: Cơng nghệ Socket thể đơn giản dễ triển khai việc xây dựng ứng dụng chat client-server Giao thức chế truyền thông client server đơn giản dễ hiểu, cho phép triển khai nhanh chóng tiết kiệm thời gian việc phát triển hệ thống Bên cạnh đó, Socket tích hợp tốt với ngơn ngữ Java, giúp việc tích hợp sử dụng môi trường Java trở nên dễ dàng thuận tiện Hiệu suất: Với việc sử dụng Socket, hệ thống chat client-server có hiệu suất cao việc truyền tải thông tin thành phần Giao tiếp client server diễn nhanh chóng hiệu quả, giúp giảm thiểu thời gian trễ đảm bảo tương tác mượt mà người dùng hệ thống Điều đặc biệt quan trọng việc trao đổi thông tin giao tiếp thời gian thực quan Bảo hiểm xã hội Long An Bảo mật: Tuy công nghệ Socket khơng hỗ trợ tính phân tán bảo mật sẵn có RMI CORBA, tự xây dựng chế bảo mật cho ứng dụng chat client-server Socket hỗ trợ chế bảo mật Java RMI Security Manager SSL (Secure Sockets Layer) để đảm bảo an toàn việc truyền tải liệu client server Việc triển khai chế bảo mật phù hợp giúp bảo vệ thơng tin đảm bảo tính bảo mật hệ thống chat Tóm lại, việc sử dụng công nghệ Socket ứng dụng chat client-server quan Bảo hiểm xã hội tỉnh Long An mang lại nhiều lợi ích đơn giản tích hợp tốt, hiệu suất cao truyền tải thông tin, khả tùy chỉnh chế bảo mật Tuy nhiên, việc triển khai hệ thống đòi hỏi quan tâm cân nhắc kỹ lưỡng 21 việc xây dựng chế bảo mật để đảm bảo tính an tồn bảo mật cho thơng tin trao đổi hệ thống chat client-server 22 TÀI LIỆU THAM KHẢO 1) "Distributed Systems: Concepts and Design" - George Coulouris, Jean Dollimore, Tim Kindberg, and Gordon Blair 2) "Modern Operating Systems" - Andrew S Tanenbaum and Herbert Bos 3) Bài giảng Hệ phân Tán (TS Lê Văn Minh) 4) Một số links tham khảo hệ phân tán Code https://www.oracle.com/technical-resources/articles/javase/rmi-corba.html https://docstore.mik.ua/orelly/java-ent/dist/ch03_06.htm 23

Ngày đăng: 05/09/2023, 17:38

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN