Bối cảnh và vấn đề nghiên cứu

Trong công tác quản lý thư viện truyền thống, nhiều đơn vị vẫn duy trì phương thức ghi chép sổ sách thủ công, thẻ thư viện giấy hoặc sử dụng các phần mềm máy trạm đơn lẻ cục bộ. Các phương pháp này bộc lộ nhiều hạn chế thực tiễn như gây tiêu tốn thời gian thao tác, dễ phát sinh sai sót trong quá trình theo dõi ấn phẩm, khó khăn trong việc tra cứu tài liệu và không đáp ứng được nhu cầu truy cập đồng thời của lượng lớn độc giả. Bên cạnh đó, các hệ thống đơn khối (monolithic) tập trung tại một máy chủ duy nhất thường đối mặt với nguy cơ nghẽn lưu lượng, gián đoạn toàn bộ hoạt động khi máy chủ gặp sự cố và hạn chế về khả năng mở rộng tài nguyên.

Nhằm giải quyết những thách thức trên, đề tài "Xây dựng ứng dụng quản lý thư viện sử dụng Java RMI với mô hình phân tán" được thực hiện bởi sinh viên Hồ Đăng Nguyện (MSSV: 21IT363) và Thái Doãn Tân (MSSV: 21IT444), lớp 21SE1, ngành Kỹ thuật phần mềm, Khoa Khoa học máy tính, Trường Đại học Công nghệ thông tin & Truyền thông Việt Hàn (Đại học Đà Nẵng) dưới sự hướng dẫn của TS. Nguyễn Quang Vũ vào tháng 12 năm 2023.

Mục tiêu và nhiệm vụ nghiên cứu cụ thể của đề tài bao gồm:

  1. Nghiên cứu cơ sở lý thuyết về kiến trúc mạng, hệ thống tính toán phân tán, cơ chế triệu gọi phương thức từ xa Java RMI (Remote Method Invocation) và kỹ thuật sao chép dữ liệu phân tán MySQL Replication.
  2. Phân tích các yêu cầu chức năng và phi chức năng của bài toán quản lý thư viện hiện đại; mô hình hóa các ca sử dụng (Use Case) và thiết kế biểu đồ hoạt động (Activity Diagram).
  3. Thiết kế kiến trúc phân tán cho hệ thống gồm các máy chủ phân tán (Servers) và các trạm người dùng (Clients) kết nối trên mạng nội bộ.
  4. Xây dựng mô hình dữ liệu quan hệ (ERD) và triển khai cơ sở dữ liệu trên hệ quản trị MySQL có tích hợp cơ chế đồng bộ dữ liệu đa máy chủ.
  5. Hiện thực hóa các dịch vụ nghiệp vụ (quản lý sách, tác giả, nhà xuất bản, danh mục, sách tái bản, mượn/trả sách, độc giả, thông báo, thống kê) và phát triển giao diện ứng dụng.
  6. Cài đặt thử nghiệm hệ thống trên môi trường máy chủ Linux Ubuntu 20 và đánh giá quy trình vận hành thực tế.

Đối tượng nghiên cứu của đồ án là mô hình kiến trúc phân tán ứng dụng công nghệ Java RMI kết hợp đồng bộ cơ sở dữ liệu MySQL Replication. Phạm vi ứng dụng của hệ thống hướng đến các thư viện tại trường học, cơ quan, tổ chức hoặc các trung tâm học liệu có nhu cầu tin học hóa quy trình quản lý sách và phục vụ bạn đọc trên hạ tầng mạng máy tính.


Cơ sở lý thuyết và phương pháp

Đồ án xây dựng nền tảng trên hệ thống lý thuyết mạng máy tính, điện toán phân tán và các công nghệ lập trình hướng đối tượng chuyên sâu:

  • Mô hình tham chiếu mạng: Phân tích mô hình OSI 7 tầng (Vật lý, Liên kết dữ liệu, Mạng, Giao vận, Phiên, Trình bày, Ứng dụng) và bộ giao thức TCP/IP 4 tầng (Vật lý, Mạng với IP/ICMP/IGMP, Giao vận với TCP/UDP, Ứng dụng với HTTP, FTP, SMTP, SSH). Tác giả so sánh đặc tính phụ thuộc giao thức, hướng tiếp cận thiết kế ngang/dọc và hiệu quả thực tế giữa hai mô hình.
  • Mô hình kiến trúc ứng dụng mạng: So sánh mô hình Khách - Chủ (Client-Server), mô hình mạng ngang hàng (P2P có cấu trúc dùng bảng băm phân tán DHT, P2P không cấu trúc dùng cơ chế Flooding, mô hình kết hợp như CoopNet) và hệ thống phân tán. Hệ thống phân tán được phân tích qua 6 đặc tính cốt lõi: khả năng mở rộng (scalability), xử lý đồng thời (concurrency - không có đồng hồ toàn cục "No global clock"), tính khả dụng/kháng lỗi (fault tolerance), tính minh bạch (transparency), tính không đồng nhất (heterogeneity) và tính nhân rộng (replication).
  • Công nghệ Java RMI (Remote Method Invocation): Cơ chế cho phép đối tượng trên một máy ảo Java (JVM) triệu gọi các phương thức của đối tượng nằm trên một JVM khác thông qua mạng. RMI sử dụng cơ chế tuần tự hóa (Serialization) và mô hình giao tiếp gồm hai thành phần:
    • Stub: Đối tượng đại diện (proxy) phía Client, chịu trách nhiệm kết nối, đóng gói tham số (marshalling), gửi yêu cầu và nhận kết quả/ngoại lệ từ xa.
    • Skeleton: Thành phần tiếp nhận phía Server, giải mã tham số (unmarshalling), thực thi lời gọi phương thức trên đối tượng thực tế và trả kết quả về cho Client.
  • Hệ quản trị cơ sở dữ liệu và MySQL Replication: Ứng dụng giải pháp mở rộng theo chiều ngang (Scale out) bằng MySQL Replication. Cơ chế này đồng bộ dữ liệu từ máy chủ chính (Master) ghi lại các thay đổi vào nhật ký nhị phân (binary log / binlog), các máy chủ phụ (Slave) đọc dữ liệu thông qua nhật ký chuyển tiếp (relay log) để cập nhật dữ liệu cục bộ theo cơ chế bất đồng bộ (Asynchronous Replication). Đồ án phân tích hai kiến trúc nhân bản: Master - Slave (Master xử lý ghi, Slave xử lý đọc và sao lưu dự phòng) và Master - Master (nhiều Master cùng tiếp nhận ghi và đồng bộ chéo).

Phương pháp nghiên cứu được áp dụng là phương pháp phân tích thiết kế hướng đối tượng (OOAD) sử dụng ngôn ngữ mô hình hóa thống nhất (UML), kết hợp phương pháp module hóa phần mềm bằng Apache Maven và phương pháp thực nghiệm triển khai phần mềm trên môi trường mạng máy tính phân tán.


Thiết kế và triển khai

Hệ thống được thiết kế theo kiến trúc Client-Server phân tán, phân chia các thành phần xử lý logic và lưu trữ dữ liệu trên nhiều máy chủ độc lập nhằm tối ưu hóa tải truy vấn và nâng cao độ sẵn sàng.

                           +----------------------+
                           |    Client Module     |
                           | (ManageController,   |
                           |   LibraryRemote)     |
                           +----------+-----------+
                                      |
                      RMI (Remote Method Invocation)
                                      |
                           +----------v-----------+
                           |    Server Module     |
                           |  (RMIServer,         |
                           |   LibraryImpl)       |
                           +----------+-----------+
                                      |
                                     JDBC
                                      |
             +------------------------v------------------------+
             |                                                 |
   +---------v---------+                             +---------v---------+
   |  Server 1 (Master)| <--- MySQL Replication ---> |  Server 2 (Slave) |
   |  MySQL Database   |        (Binlog/Relay)       |  MySQL Database   |
   +-------------------+                             +-------------------+

Kiến trúc phần mềm và tổ chức mã nguồn

Dự án được cấu hình bằng Maven trên môi trường JetBrains IntelliJ IDEA, phân tách thành 3 module chức năng độc lập:

  1. Module API: Định nghĩa các giao diện từ xa (Remote Interfaces) kế thừa từ java.rmi.Remote. Mỗi phương thức đều khai báo ngoại lệ java.rmi.RemoteException, đóng vai trò là hợp đồng giao tiếp chuẩn giữa Client và Server.
  2. Module Server: Chứa lớp hiện thực dịch vụ LibraryImpl (kế thừa UnicastRemoteObject và thực thi Remote Interface) cùng chương trình máy chủ RMIServer. Máy chủ chịu trách nhiệm khởi tạo RMI Registry, đăng ký định danh dịch vụ và quản lý các kết nối JDBC truy xuất dữ liệu MySQL.
  3. Module Client: Chứa các lớp điều khiển giao diện ManageController và giao tiếp mạng LibraryRemote. Client tra cứu đối tượng từ xa từ RMI Registry thông qua địa chỉ máy chủ và cổng quy định, sau đó thực hiện các thao tác quản lý mà không cần can thiệp trực tiếp vào cơ sở dữ liệu.

Thiết kế cơ sở dữ liệu (ERD)

Cơ sở dữ liệu của hệ thống bao gồm các bảng thực thể và bảng quan hệ logic:

  • Books: Lưu trữ mã sách, tiêu đề, năm xuất bản, số lượng, liên kết với tác giả, thể loại và nhà xuất bản.
  • Authors: Quản lý thông tin tác giả (mã tác giả, họ tên, quốc tịch, ngày sinh, tiểu sử).
  • Categories: Phân loại danh mục sách.
  • Published: Thông tin nhà xuất bản (tên, địa chỉ, số điện thoại liên hệ).
  • Book Copies: Quản lý từng bản sao vật lý cụ thể của đầu sách trong kho.
  • Patron Accounts: Lưu trữ tài khoản độc giả, thông tin cá nhân và quyền hạn truy cập.
  • Checkouts & Holds: Quản lý nhật ký mượn/trả sách, thời hạn mượn, ngày trả thực tế và các yêu cầu đặt giữ sách.
  • Notifications: Lưu trữ nội dung thông báo gửi từ quản trị viên đến tài khoản độc giả.

Cấu hình triển khai và đồng bộ dữ liệu

Hạ tầng cơ sở dữ liệu được cài đặt trên hệ điều hành Ubuntu 20. Hệ thống thiết lập hai máy chủ cơ sở dữ liệu chạy song song:

  • Server 1 (Master): Tiếp nhận toàn bộ các thao tác ghi (INSERT, UPDATE, DELETE), kích hoạt ghi binlog.
  • Server 2 (Slave): Đồng bộ dữ liệu liên tục từ Server 1 thông qua relay log, phục vụ các tác vụ truy vấn đọc (SELECT) và làm điểm sao lưu (backup) thời gian thực.

Nội dung chính theo từng chương

Chương 1: Các mô hình mạng

Chương 1 hệ thống hóa toàn diện các kiến thức nền tảng về mạng máy tính và hệ thống phân tán:

  • Trình bày chi tiết 7 tầng của mô hình OSI và 4 tầng của mô hình TCP/IP, chỉ rõ vai trò của các giao thức IP, ICMP, IGMP, TCP, UDP và các giao thức tầng ứng dụng (HTTP, FTP, SMTP).
  • Phân tích ưu và nhược điểm của mô hình Client-Server tập trung và mô hình P2P phân tán (mạng có cấu trúc, không cấu trúc và mạng kết hợp CoopNet).
  • Định nghĩa kiến trúc hệ thống phân tán, các lý do sử dụng (tính linh hoạt, độ tin cậy, cải thiện tốc độ) cùng những thách thức trong phát triển phần mềm phân tán (khả năng xảy ra lỗi, thách thức đồng bộ hóa, quản lý bảo mật, sự cố mạng và chi phí vận hành).
  • Giới thiệu tổng quan về ngôn ngữ Java trong lập trình mạng (Socket, Java Network API, Java NIO), nguyên lý hoạt động của Java RMI thông qua cơ chế Stub/Skeleton và quy trình xây dựng ứng dụng RMI.
  • Phân tích giải pháp mở rộng Scale up và Scale out trên MySQL Server, nguyên lý hoạt động của MySQL Replication theo hai mô hình Master-Slave và Master-Master.

Chương 2: Phân tích thiết kế hệ thống

Chương 2 tập trung vào việc mô hình hóa yêu cầu và thiết kế chi tiết hệ thống quản lý thư viện:

  • Phân tích yêu cầu: Xác định hai nhóm tác nhân chính tham gia hệ thống gồm Thủ thư/Quản lý (toàn quyền quản lý dữ liệu sách, độc giả, mượn trả, thông báo, thống kê) và Độc giả/Sinh viên (tra cứu tài liệu, gửi yêu cầu mượn/trả, cập nhật thông tin cá nhân và nhận thông báo).
  • Đặc tả ca sử dụng (Use Case Specifications):
    • UC01 (Quản lý sách): Cho phép thêm, sửa, xóa, tra cứu sách theo tiêu đề, tác giả, danh mục, NXB; xem danh sách sách đang mượn.
    • UC02 (Quản lý tác giả): Cập nhật và tìm kiếm thông tin tác giả.
    • UC06 & UC07 (Quản lý mượn/trả sách): Quy trình tiếp nhận yêu cầu từ độc giả, kiểm tra trạng thái tồn kho, xác nhận cấp phát hoặc thu hồi sách và cập nhật số lượng sách trong kho.
    • UC08 (Thống kê sách): Tổng hợp dữ liệu theo tình trạng sách, thể loại, tác giả và số lượng mượn.
    • UC09, UC10, UC11: Quản lý nhà xuất bản, danh mục thể loại và sách tái bản.
  • Thiết kế kiến trúc và CSDL: Trình bày cấu trúc module dự án Maven (API, Client, Server), sơ đồ quan hệ thực thể (ERD), thiết kế chi tiết các bảng dữ liệu và sơ đồ luồng hoạt động (Activity Diagrams) cho từng nghiệp vụ.
Thành phần thiết kế Mô tả chi tiết trong đồ án
Kiến trúc ứng dụng Mô hình Client-Server phân tán đa Server kết nối CSDL phân tán qua RMI
Cấu trúc mã nguồn Dự án Java Maven gồm 3 module: API, Client, Server
Hệ quản trị CSDL MySQL Server trên Ubuntu 20, tích hợp MySQL Replication
Các bảng dữ liệu chính Books, Authors, Categories, Published, Book Copies, Patron Accounts, Checkouts, Holds, Notifications
Tác nhân hệ thống Quản lý (Thủ thư) và Độc giả (Sinh viên / Người mượn)

Chương 3: Chương trình thử nghiệm

Chương 3 trình bày việc cài đặt môi trường và kiểm thử các kịch bản sử dụng thực tế:

  • Cài đặt và cấu hình hệ quản trị MySQL Server trên hệ điều hành Ubuntu 20, thiết lập tham số sao chép dữ liệu giữa Server 1 và Server 2.
  • Triển khai Module Server và Module Client, kiểm tra khả năng đăng ký dịch vụ vào RMI Registry và kết nối từ xa.
  • Thử nghiệm kịch bản mượn sách: Độc giả đăng nhập -> tìm kiếm tài liệu -> gửi yêu cầu mượn -> Quản lý nhận thông báo trên giao diện quản trị -> duyệt yêu cầu -> hệ thống gửi thông báo phê duyệt về giao diện độc giả.
  • Thử nghiệm kịch bản trả sách: Độc giả chọn sách cần trả -> nhấn nút trả sách -> Quản lý nhận yêu cầu trả sách -> xác nhận hoàn tất trả sách -> hệ thống cập nhật lại kho và gửi thông báo xác nhận cho độc giả.

Kết quả và đóng góp

Đồ án đã hoàn thành các nội dung kỹ thuật theo đúng mục tiêu đặt ra:

  • Kết quả ứng dụng: Xây dựng thành công hệ thống phần mềm quản lý thư viện hoàn chỉnh gồm giao diện quản trị và giao diện độc giả. Hệ thống vận hành ổn định các chức năng: quản lý ấn phẩm (sách, tác giả, nhà xuất bản, danh mục, sách tái bản), quản lý tài khoản độc giả, xử lý quy trình mượn/trả sách, hệ thống gửi/nhận thông báo và thống kê tổng hợp số liệu.
  • Kết quả kiến trúc & kỹ thuật: Triển khai thành công kiến trúc phần mềm 3 tầng phân tán sử dụng Java RMI, tách biệt hoàn toàn tầng giao tiếp API, tầng xử lý dịch vụ phía Server và tầng giao diện phía Client. Thiết lập thành công mô hình sao chép cơ sở dữ liệu MySQL Replication (Master-Slave) trên nền tảng Ubuntu 20, đảm bảo tính đồng bộ dữ liệu giữa các máy chủ cơ sở dữ liệu độc lập.
  • Đóng góp học thuật: Cung cấp một mô hình thực nghiệm rõ ràng về việc ứng dụng công nghệ triệu gọi phương thức từ xa (Java RMI) kết hợp kỹ thuật phân tán dữ liệu trong phát triển ứng dụng quản lý tài nguyên, làm tài liệu tham khảo thực hành cho các môn học chuyên ngành kỹ thuật phần mềm.

Hạn chế và hướng nghiên cứu tiếp

Căn cứ trên phạm vi và nội dung thực hiện được trình bày trong văn bản:

  • Hạn chế: Hệ thống mới được thử nghiệm chủ yếu trên môi trường mạng nội bộ và hệ thống máy chủ cục bộ/máy ảo Ubuntu; kịch bản kiểm thử chủ yếu tập trung vào các luồng nghiệp vụ cơ bản (mượn sách, trả sách) mà chưa đi sâu vào đánh giá định lượng hiệu năng chịu tải tối đa (stress testing) hoặc xử lý xung đột ghi đồng thời phức tạp ở quy mô lớn.
  • Hướng phát triển: Mở rộng nghiên cứu cơ chế cân bằng tải tự động (Load Balancing) cho nhiều máy chủ RMI Server; hoàn thiện các kịch bản bảo mật truyền thông qua mạng; phát triển thêm ứng dụng trên nền tảng di động và mở rộng khả năng kết nối liên thông dữ liệu giữa các hệ thống thư viện khác nhau.

Giá trị tham khảo

Tài liệu đồ án là nguồn tư liệu hữu ích cho:

  • Sinh viên ngành Kỹ thuật phần mềm, Công nghệ thông tin, Khoa học máy tính: Tham khảo phương pháp phân tích thiết kế hệ thống phân tán, cách thức tổ chức dự án Java đa module (Multi-module Maven Project) và kỹ thuật lập trình mạng với Java RMI.
  • Người nghiên cứu về quản trị cơ sở dữ liệu: Tham khảo quy trình cài đặt, thiết lập tham số và cấu hình cơ chế sao chép dữ liệu MySQL Replication trên hệ điều hành Linux (Ubuntu).
  • Nhóm phát triển đề tài tương tự: Kế thừa tài liệu đặc tả ca sử dụng (Use Case Specifications), mô hình thực thể quan hệ (ERD) và các biểu đồ luồng hoạt động (Activity Diagrams) chuẩn cho bài toán quản lý thư viện.

Câu hỏi thường gặp

1. Kiến trúc phân tán của ứng dụng quản lý thư viện trong đồ án được phân chia thành những module nào?
Hệ thống được tổ chức thành 3 module Maven chính: Module API chứa các Remote Interface định nghĩa giao tiếp từ xa (kế thừa java.rmi.Remote); Module Server chứa lớp thực thi LibraryImpl và lớp khởi tạo RMIServer quản lý Registry và CSDL; Module Client chứa giao diện người dùng và lớp điều khiển ManageController, LibraryRemote để gọi hàm từ xa.

2. Vai trò của cơ chế Stub và Skeleton trong Java RMI được đồ án giải thích như thế nào?
Trong Java RMI, Stub là đối tượng đại diện ở phía Client, có nhiệm vụ khởi tạo kết nối, đóng gói tham số (marshal) và gửi đến máy chủ từ xa. Skeleton là đối tượng tiếp nhận ở phía Server, có nhiệm vụ giải mã tham số, triệu gọi phương thức trên đối tượng thực thi thực tế trên máy chủ và gửi kết quả/ngoại lệ phản hồi lại cho Stub.

3. Cơ chế MySQL Replication trong hệ thống hoạt động theo nguyên lý nào?
MySQL Replication hoạt động theo mô hình Master-Slave bất đồng bộ. Khi có thay đổi dữ liệu trên máy chủ Master, thao tác sẽ được ghi vào nhật ký nhị phân (binlog). Máy chủ Slave kết nối để đọc binlog, ghi lại vào nhật ký chuyển tiếp (relay log) và áp dụng các cập nhật đó vào CSDL cục bộ của Slave, giúp đồng bộ hóa dữ liệu và hỗ trợ phân tải đọc hoặc sao lưu.

4. Hệ thống phân chia quyền hạn và chức năng cho các nhóm tác nhân nào?
Hệ thống xác định hai nhóm tác nhân chính:

  • Quản lý (Thủ thư): Thực hiện thêm, sửa, xóa, tra cứu sách, tác giả, nhà xuất bản, danh mục, sách tái bản; tiếp nhận và phê duyệt mượn/trả sách; quản lý tài khoản độc giả; gửi thông báo và xem thống kê báo cáo.
  • Độc giả (Sinh viên / Người mượn): Đăng nhập hệ thống, quản lý thông tin cá nhân, tra cứu sách, gửi yêu cầu mượn/trả sách và nhận thông báo phê duyệt từ thủ thư.

5. Môi trường triển khai máy chủ cơ sở dữ liệu trong phần thử nghiệm là gì?
Trong chương trình thử nghiệm, hệ quản trị cơ sở dữ liệu MySQL Server được cài đặt và cấu hình trên hệ điều hành Ubuntu 20, thiết lập liên kết sao chép dữ liệu giữa Server 1 và Server 2.


Kết luận

Đồ án "Xây dựng ứng dụng quản lý thư viện sử dụng Java RMI với mô hình phân tán" đã nghiên cứu và ứng dụng thành công kỹ thuật triệu gọi phương thức từ xa Java RMI kết hợp giải pháp sao chép dữ liệu MySQL Replication để giải quyết bài toán quản lý thư viện phân tán. Công trình hoàn thành đầy đủ các giai đoạn từ khảo sát lý thuyết mạng, phân tích yêu cầu, thiết kế mô hình dữ liệu quan hệ đến xây dựng hệ thống phần mềm 3 module và kiểm thử các luồng nghiệp vụ mượn/trả sách. Kết quả của đồ án cung cấp tài liệu tham khảo học thuật có giá trị thực tiễn cao cho sinh viên và các nhà phát triển trong lĩnh vực kỹ thuật phần mềm và lập trình hệ thống phân tán.