Xây dựng ứng dụng chia sẻ file
Trang 1ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM
BÁO CÁO MÔN HỌC
XỬ LÝ PHÂN BỐ
Đề tài XÂY DỰNG ỨNG DỤNG CHIA SẺ FILE
Giảng viên hướng dẫn: Thầy NGUYỄN CÔNG HOAN
Nhóm 5: PHẠM VĂN TRUNG – 11520438
VÕ VĂN TỊNH - 11520415 NGUYỄN VĂN TIẾN - 11520408 Lớp: SE339.F11
Trang 2
- -
Lời đầu tiên, nhóm em xin chân thành cảm ơn Thầy Nguyễn Công Hoan! Thầy đã tận tình chỉ bảo, truyền đạt những kiến thức vô cùng bổ ích, quý báu cũng như những
ví dụ cụ thể, sinh động, hấp dẫn để nhóm em có thể thực hiện tốt đề tài này
Nhóm em cũng xin cảm ơn Trường Đại Học Công Nghệ Thông Tin! Trường đã tạo thư viện học tập rất lý tưởng cho chúng em có thể họp nhóm hiệu quả
Nhóm em cũng xin gửi lời cảm ơn sâu sắc đến gia đình, bạn bè và những người thân đã động viên, cổ vũ về vật chất cũng như tinh thần giúp em vượt qua khó khăn, trở ngại để tiếp tục hoàn thành đề tài
Xin chân thành cảm ơn!
Tp HCM, tháng 1– 2015
Nhóm thực hiện
Trang 31 TÌM HIỂU WEB SHARE FILE OPEN SOURE 1
2 CÔNG NGHỆ SỬ DỤNG TRONG HỆ THỐNG 2
2.1 Công nghệ RMI trong xử lý phân bố 2
2.1.1 Các đặt tính của RMI 2
2.1.2 Kiến trúc cơ bản của RMI 3
2.1.3 Cách làm việc của RMI 3
2.2 Load balancing (cân bằng tải) với mod_jk 4
2.2.1 Sơ lược về mod_jk 4
2.2.2 Cài đặt mod_jk 4
3 HIGH LEVEL DESIGN WEB SHARE FILE APPLICATION 8
3.1 Kiến trúc Web Share File Aplication 8
3.2 Package Diagram 9
3.2.1 Spring File 3T 9
3.2.2 RMI Server 10
3.3 Component Diagram 10
3.4 Deployment Diagram 11
3.5 Actors and Use Cases Description 11
3.5.1 Actor 11
3.5.2 Use case diagram 12
3.5.3 Class diagram 12
3.5.4 Mô tả Use Case 13
4 DETAIL DESIGN 13
4.1 UC1: Login 13
4.1.1 Tác nhân 13
4.1.2 Pre-Condition 13
4.1.3 Mô tả chức năng 13
4.1.4 UML Activity Diagram (Đăng nhập) 14
Trang 44.2.2 Pre-condition 16
4.2.3 Mô tả chức năng 16
4.2.4 UML Activity Diagram 17
4.2.5 UML Sequence Diagram 17
4.2.6 Screen Flow 18
4.3 UC3: Quản lý file 18
4.3.1 Tác nhân 18
4.3.2 Pre-condition 18
4.3.3 Mô tả chức năng 18
4.3.4 UML Activity Diagram 19
4.3.5 UML Sequence Diagram 24
4.3.6 Screen Flow 26
4.4 UC4: Xử lý hệ thống phân tán 27
4.4.1 Tác nhân 27
4.4.2 Pre-condition 27
4.4.3 Mô tả chức năng 27
4.4.4 UML Activity Diagram 28
4.4.5 UML Sequence Diagram 29
4.5 UC5: Đồng bộ hóa dữ liệu, cân bằng tải 29
4.5.1 Tác nhân 29
4.5.2 Pre-condition 29
4.5.3 Mô tả chức năng 29
4.5.4 UML Activity Diagram 30
CÀI ĐẶT – TRIỂN KHAI 30
Trang 56.1.2 Tiến hành upload trên GUI 36
6.1.3 Console log RMI sau khi Upload 39
7 ĐÁNH GIÁ – KẾT LUẬN 42
7.1 Đánh giá 42
7.2 Kết luận 42
7.3 Hướng phát triển 42
8 TÀI LIỆU THAM KHẢO 43
Trang 6………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
Trang 71 TÌM HIỂU WEB SHARE FILE OPEN SOURE
Hiện nay có rất nhiều website chưa sẻ file mã nguồn mở trên thế giới, dưới đây là một số website mã nguồn mở phổ biến nhất, tốt nhất hiện nay:
Trang 82 CÔNG NGHỆ SỬ DỤNG TRONG HỆ THỐNG
2.1 Công nghệ RMI trong xử lý phân bố
Lập trình đối tượng phân tán là một trong những vấn đề nóng bỗng của công nghệ
phân tán phần mềm ngày nay Java là ngôn ngữ đi tiên phong với RMI (Remote
Method Invocation) - một kĩ thuật cài đặt các đối tượng phân tán vô cùng hiệu quả và linh động
Thông thường các chương trình của chúng ta được viết dưới dạng thủ tục hoặc hàm và việc các hàm gọi lẫn nhau, truyền tham số hay kết quả cho nhau chỉ xảy ra ở máy cục
bộ Kỷ thuật RMI (Remote Method Invoke) – mang ý nghĩa triệu gọi phương thức từ
xa – là cách thức giao tiếp giữa các đối tượng trong Java có mã lệnh cài đặt nằm trên các máy khác nhau có thể triệu gọi lẫn nhau
Để giải quyết một số vấn đề trong việc truyền thông giữa Client/Server RMI không gọi trực tiếp mà thông qua lớp trung gian Lớp này tồn tại ở cả hai phía Client và Server Lớp ở máy Client gọi là Stub, lớp ở máy Server gọi là Skel (Skeletion)
2.1.1 Các đặt tính của RMI
RMI là mô hình đối tượng phân tán của Java, nó giúp cho việc truyền thông giữa các đối tượng phân tán được dễ dàng hơn
RMI là API bậc cao được xây dựng dựa trên lập trình Socket
RMI không những cho phép chúng ta truyền dữ liệu giữa các đối tượng trên
Trang 9 Một điều thuận lợi quan trong nhất của RMI là nó cung cấp cớ chế callbacks,
nó cho phép Server triệu gọi các phương thức ở Client
2.1.2 Kiến trúc cơ bản của RMI
Remote interface: Nên extend từ java.rmi.remote.Nó khai báo tất cả các
phương thức mà Client có thể triệu gọi Tất cả các method trong interface này nên throw RemoteException
Remote implementation: Được thực thi từ Remote interface và mở rộng từ UnicastRemoteObject Triển khai các method được khai báo trong Interface tại đây Nó là một Remote Object thực sự Phát sinh hai lớp trung gian Stub và Skel
Server class bao gồm:
o RMI registry: Bộ đăng kí này sẽ đăng kí một Remote object với Naming Registry Giúp các Remote object được chấp nhận khi gọi các method từ
xa
o Các class thực thi trên server
Client class: Truy vấn trên tên Remote object trên RMI registry, thông qua stub
để gọi các phương thức trên server
2.1.3 Cách làm việc của RMI
Các Đối tượng ở phía Server đăng kí với bộ đăng kí RMI registry
Client kiểm tra các đối tượng ở xa trong RMI Registry
Vị trí của một đối tượng ở xa được xác định trong RMI Registry Một stub được trả về cho Client
Remote object có thể được sử dụng tương tự như Local object để truy xuất đến
Trang 102.2 Load balancing (cân bằng tải) với mod_jk
2.2.1 Sơ lược về mod_jk
Trong khi các ứng dụng web càng lúc càng nhiều người sử dụng thì tomcat có lẽ càng chịu tải Chúng ta cần phải xem đến cơ chế cân bằng tải cho server Thông
thường có hai hướng xử lý trong cân bằng tải: sử dụng phần mềm cài đặt (mod_jk, HAProxy…), viết ứng dụng xử lý phân bố cho phần mềm Ở trong đề tài này chúng
em sẽ giới thiệu về cơ chế cân bằng tải cho tomcat với mod_jk
Mod_jk là một phiên bản thay thế cho mod_jserv, được sử dụng để xử lý các thông tin liên lạc giữa Tomcat và Apache
Lý do chọn mod_jk: Hiện nay có rất nhiều ứng dụng hỗ trợ để xử lý cơ chế load balancing cho tomcat
Mod_jserv: Quá phức tạp, nó đã được chuyển Apache/ Jserv, mod_jserv mang nhiều bits không cần thiết cho tomcat Mod_jserv chỉ hỗ trợ Apche Tomcat hỗ trợ nhiều máy chủ thông qua một lớp tương thích trong thư viện jk Các vấn đề về hỗ trợ, tài liệu và sửa lỗi khó khăn Mod_jk khắc phục được điều này
Các cách tiếp cận lớp được cung cấp bởi thư viện jk làm cho nó dễ dàng hỗ trợ cả hai Apache 1.3.x và Apache 2.xx
Mode_jk còn hỗ trợ tốt cho SSL Khi một request được thực hiện thông qua HTTP
và HTTPS thì mod_jserv không đáng tin cậy Mod_jk có thể hỗ trợ tốt vấn đề này bằng cách sử dụng một giao thức Ajpv13 mới
2.2.2 Cài đặt mod_jk
1 Sử dụng instance-1 là server chính dùng balancing cũng như chứa tomcat
- Instance-1 : Apache(mod_jk), Tomcat7
- Instance-2: Tomcat7
- Instance-3: Tomcat7
- Instance-4: Tomcat7
2 Cài đặt mod_jk trên Instance-1
B1: Cài đặt Apache : sudo apt-get install apache2
Trang 11worker.tomcat2.type=ajp13 worker.tomcat2.port=8080 worker.tomcat2.host=107.167.182.83
worker.tomcat3.type=ajp13 worker.tomcat3.port=8080 worker.tomcat3.host=104.155.209.128
worker.tomcat4.type=ajp13 worker.tomcat4.port=8080 worker.tomcat4.host=104.155.197.173
worker.balancer.type=lb worker.balancer.balance_workers=tomcat1,tomcat2,tomcat3,tomcat4 worker.stat.type=status
Trang 12Tìm và thay đổi lại đường dẫn thành : /etc/apache2/workers.properties để
mod_jk biết các worker
B5: Định nghĩa mod_jk trong Apache config
sudo nano /etc/apache2/sites-enabled/000-default.conf
Xóa hết và thêm bên dưới
<VirtualHost *:80>
JkMount /status stat JkMount / balancer JkMount /* balancer
</VirtualHost>
Trang 13B6: Retart Apache Server
sudo /etc/init.d/apache2 restart
Tham khảo:
http://thetechnocratnotebook.blogspot.com/2012/05/installing-tomcat-7-and-apache2-with.html
Trang 143 HIGH LEVEL DESIGN WEB SHARE FILE APPLICATION
3.1 Kiến trúc Web Share File Aplication
Client1
Client2
Client3
Database Server 4 Database Server 2
Database Server 3
Application Tomcat Server 2
Application Tomcat Server 3
Application Tomcat Server 4
Server Load Balancing
Apache Web Server(mod_jk) Application Tomcat Server 1
Database Server 1
Hình 1: Kiến trúc tổng quan của hệ thống 1
Hệ thống chia sẻ file được xây dựng nhằm phục vụ cho nhóm người dùng nhỏ để thử nghiệm tính ổn định và tìm hiểu cách xây dựng một hệ thống xử lý phân bố nên chỉ giới hạn số người dùng ở mức 2-10 người sử dụng, hệ thống server, database được đặt trên 5 máy, và cho phép người dùng có thể download và upload dữ liệu tại mỗi máy tính cá nhân, đồng bộ hóa dữ liệu giữa các database đảm bảo hệ thống hoạt động tốt với mức giới hạn trên
Trang 153.2 Package Diagram
3.2.1 Spring File 3T
Trang 163.2.2 RMI Server
3.3 Component Diagram
Index.html
Trang 173.4 Deployment Diagram
AppServer 0 Client 1
Client 2
App Server 1
App Server 2 Web Server
Database 1
Database 2
Database 3 Database
Server 0
3.5 Actors and Use Cases Description
3.5.1 Actor
Danh sách các actor
STT Actor Name Definition & Interests
1 Admin Quản trị hệ thống, thêm xóa sửa cấp quyền cho User
4 System Tự động chạy, phân tải, kiểm tra server cho hệ thống
Mô tả các Actor:
- Admin: người quản trị hệ thống, quản lý thiết lập các thông tin, cấu hình hệ
thống Người có toàn quyền trên hệ thống
- Guest user: người dùng này chỉ có quyền download file do user chia sẻ
- User: người dùng sử dụng hệ thống thông qua việc đăng ký, mỗi user có tài
khoản trên hệ thống có một dung lượng lưu trữ nhất định trên hệ thống Người dùng có thể thực hiện các thao tác quản lý file của mình trên hệ thống, như
upload file lên, download file, cập nhật, sửa đổi, xóa, chia sẻ file cho mọi
người, lấy link download file…
Trang 18- System: actor này là hệ thống ứng dụng, tự động chạy để thực hiện các công việc kiểm tra xem trạng thái của file, của các server, cân bằng tải cho hệ
thống…
3.5.2 Use case diagram
Login
uses
Xử lý hệ thống phân tán
Trang 193.5.4 Mô tả Use Case
Bảng 3.1: Danh sách các Use Case của hệ thống
Người dùng đăng nhập vào hệ thống để thực hiện các chức năng tương ứng của hệ
thống tùy thuộc vào quyền của người dùng
Người dùng truy cập vào đăng nhập của hệ thống, tại đây người dùng có thể nhập
tên đăng nhập và mật khẩu để đăng nhập hệ thống
UC1.1 Đăng nhập Cho phép actor đăng nhập vào hệ
thống, kiểm tra quyền truy cập hệ thống
UC1.2 Đăng xuất Actor thoát khỏi hệ thống
UC3.2 Download file về
máy
UC3.3 Xóa file Xóa file đang được lưu trữ trên
server
Nguyến Văn Tiến
liệu, cân bằng tải
Đồng bộ file giữa các server, cân bằng tải khi download file
Võ Văn Tịnh Phạm Văn Trung
Trang 204.1.4 UML Activity Diagram (Đăng nhập)
Actor
Người dùng truy cập trang web
Hiển thị HomePage -User
-Admin
Trang 214.1.5 UML Sequence Diagram (Đăng nhập)
Trang 22Login Label Text Hiển thị nội dung trang
nhập & mật khẩu
tại mà client truy cập
Màn hình homepage là màn hình hiển thị chính các thông tin về các file của người
dùng, cũng như các tính năng chính của hệ thống Đối với người dùng bình thường
chỉ hiển thị một số thông tin về một số chức năng Đối với Admin sẽ hiển thị toàn bộ
các chức năng của hệ thống
Màn hình chính chứa menu chức năng cho người dùng sử dụng như upload file,
quản lý file…
Trang 234.2.4 UML Activity Diagram
Actor
Đăng nhập vào hệ thống
Hiển thị HomePage với các menu chức năng
Tất cả các người dùng hệ thống
4.2.5 UML Sequence Diagram
Truy cập vào hệ thống
Kiểm tra đăng nhập
Đăng nhập thành công
Hiển thị menu chức năng
Trang 254.3.4 UML Activity Diagram
4.3.4.1 UC3.1 Upload file
Trang 26Chọn page quản lý file
Chọn thư mục muốn upload file lên
Chọn Upload
Kiểm tra file tồn tại
Kiểm tra dung lượng lưu trữ còn đủ hay không
Thông báo file không tồn tại
Thông báo không đủ
Lấy ra server đang rảnh nhất
No
Kiểm tra Server chết
Lưu log cho
loop
Thông báo upload thấy bại
No
Thực hiện Upload file lên server vừa lấy
yes
-User -Admin
Trang 274.3.4.2 UC3.2 Download file
Truy cập page quản lý
file
Chọn file muốn download
Nhấn nút download
Kiểm tra file tồn tại
Thông báo file không tồn tại
Download file
No
Yes
Lấy ra server rảnh nhất
Truy xuất dữ liệu từ server đó
No
Kiểm tra server hiện tại chết
Thực hiện chuyển sang download từ server khác
Yes
Tất cả các người dùng
Trang 284.3.4.3 UC3.3 Xóa file
Truy cập page quản lý
file
Chọn file muốn xóa
Chọn Delete
Kiểm tra xóa được hay không
Thông báo không xóa được file
Yes
Xóa file trên tất cả các server
Lấy ra server rảnh nhất
Truy xuất dữ liệu từ server đó -User
-Admin
Trang 294.3.4.4 UC3.5 Share file
Truy cập page quản lý
Kiểm tra file tồn tại
Thông báo file khoont
Truy xuất dữ liệu từ server đó -User
-Admin
Trang 304.3.5 UML Sequence Diagram
4.3.5.1 UC3.1 Upload file
Actor :FileManagerGUI BUSFileManager DAOFileManager
Chọn thư mục muốn Upload
Kết quả Upload
Chọn file upload lên
Trang 314.3.5.2 UC3.2 Download file về máy
Actor :FileManagerGUI BUSFileManager DAOFileManager
Chọn file muốn download
CheckFileIsExist(strFilePath)
CheckFileIsExist(strFilePath)
Kiểm tra Nhấn nút download
Kết quả kiểm tra file Kết quả kiểm tra file
Kết quả download Kết quả download
4.3.5.3 UC3.3 Xóa file
Actor :FileManagerGUI BUSFileManager DAOFileManager
Chọn file muốn xóa
CheckFileIsExist(strFilePath)
CheckFileIsExist(strFilePath)
Kiểm tra Nhấn nút xóa file xóa file
Kết quả kiểm tra file Kết quả kiểm tra file
Kết quả xóa Kết quả xóa
Trang 324.3.5.4 UC3.5 Share file
Actor :FileManagerGUI BUSFileManager DAOFileManager
Chọn file muốn share kiểm tra file tồn tại
Kiểm tra
Gửi yêu cầu share/download file
Mở trang download/get link
Kết quả kiểm tra
Chọn share/download
Kiểm tra file tồn tại
Kết quả kiểm tra Kết quả kiểm tra
Thực hiện yêu cầu
Mở trang download/get link
4.3.6 Screen Flow
Trang 33File& Folder Label Text Quản lý file
Hệ thống sẽ tự động thực hiện việc đưa file vừa được upload lên 1 server bất kỳ
đến lưu trữ trên tất cả các server khác hiện có của hệ thống, đảm bảo file của người
dùng không bị mất mát, thất lạc, đồng thời đảm bảo người dùng có thể truy cập quản
lý file một cách dễ dàng
Đảm bảo file được upload lên server là duy nhất và giống nhau trên tất cả các
server
Trang 344.4.4 UML Activity Diagram
File đã được upload lên một server
Truyền file qua RMI đến Server Kiểm tra xem server
tiếp theo còn sống
Kiểm tra file tồn tại
Kiểm tra tồn tại trong Database
trong log sống
Yes Xóa log
Trang 354.4.5 UML Sequence Diagram
File đã được nguời dùng upload lên 1 server
Truyền file qua RMI
Request kiểm tra trạng thái server
Đẩy file vừa up đến server khác
Kiểm tra file
kết quả lưu file phân tán
4.5 UC5: Đồng bộ hóa dữ liệu, cân bằng tải
Khi người dùng download file về, hệ thống sẽ tự động kiểm tra liên tục xem server hiện đang download còn hoạt động không, nếu không hệ thống tự động chuyển sang server khác để người dùng tiếp tục download, và lưu lại trạng thái server bị die, ngược
Trang 364.5.4 UML Activity Diagram
Nguời dùng đang truy cập vào hệ thống
Lấy ra server đang rảnh nhất
Truy cập liệu từ server đó hiển thị cho người dùng
Người dùng download file
Kiểm tra server hiện tại chết Chuyển sang download từ server khác
Yes No
-System
5 CÀI ĐẶT – TRIỂN KHAI
5.1 Cài đặt môi trường phát triển
Cài Đặt môi trường chạy trên Ubuntu
5.1.1 Install Tomcat
B1: Cập nhật ubuntu
sudo apt-get update
B2: Cài Đặt tomcat7
sudo apt-get install tomcat7
B3: Cài các gói quản lí
sudo apt-get install tomcat7-docs tomcat7-admin tomcat7-examples