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

Xây dựng hệ thống quản lý tuyển sinh cho Trung tâm Đào tạo Quốc tế - Học viện Công nghệ Bưu chính Viễn thông sử dụng NuxtJS

115 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

Trang 1

KHOA ĐA PHƯƠNG TIỆN

DO ÁN TOT NGHIỆP

Đề tài: “ Xây dựng hệ thống quản lý tuyển sinh cho

Trung tâm Đào tạo Quốc tế - Học viện Công nghệ Bưu chính Viễn thông

sử dụng NuxtJS ”

Người hướngdẫn : PGS.TS Hoàng Hữu Hạnh

Sinh viên thực hiện : Phạm Trường AnhMã sinh viên : BI9DCPT011

Lớp : DI9PTDPTKhóa : 2019-2024

Hệ : Đại học chính quy

Trang 2

HÀ NỘI - 2023

Trang 3

Đồ án tốt nghiệp LỜI CẢM ƠN

LỜI CẢM ƠN

Lời đầu tiên, em xin gửi lời cảm ơn chân thành tới tất cả những người đã hỗ trợ,

giúp đỡ em về kiến thức và tỉnh thần trong suốt quá trình học tập tại Học viện cũng

trong quá trình thực hiện đồ án tốt nghiệp.

Em xin chân thành cảm ơn thầy Hoàng Hữu Hạnh - người đã trực tiếp hướng

dẫn, nhận xét và giúp đỡ em trong suốt quá trình thực hiện khoán luận tốt nghiệp Em xin gửi lời cảm ơn đến Ban giám đốc Học viện Công nghệ Bưu chính Viễn Thông

cùng toàn thể quý thầy cô trong khoa Da Phương Tiện và các phòng ban khác trong

Học viện đã tạo điều kiện và giúp đỡ em cũng như toàn thể sinh viên trong quá trình

học tập và thực hiện đồ án tốt nghiệp.

Mặc du em đã có gắng hoàn thành luận văn trong phạm vi va khả năng cho phép,

nhưng chắc chắn sẽ không tránh khỏi những thiếu sót Kính mong quý thầy cô chỉ bảo và đóng góp ý kiến để em có thêm kinh nghiệm và kiến thức dé tiếp tục hoàn thiện

luận tốt nghiệp.

Em xin chân thành cảm on!

Phạm Trường Anh —- B19DCPT011 1

Trang 4

Dé án tốt nghiệp NHẬN XÉT - ĐÁNH GIÁ - CHAM DIEM

NHAN XÉT - ĐÁNH GIÁ - CHAM DIEM

Hà Nội, ngày tháng năm 2023

Giang viên hướng dẫn

(Ki ghi rõ họ tên)

Phạm Trường Anh —- B19DCPT011 ii

Trang 5

Đồ án tốt nghiệp MỤC LỤC

MỤC LỤC

10) OY 0 0) i

NHAN XÉT — ĐÁNH GIA — CHAM ĐIỀM 2- 2-5 se sess=sess+sesses ii DANH MỤC CÁC KÝ HIỆU VÀ CHU VIET TÁTT -.2- 5s ssessvi

0 ):0/00/900.(065:70i 61211777 viii DANH MỤC CAC HINH VE ccccsssssssssssessessessessessessessessessessessessssesessesessssesssees x MO ĐẦUU 2Ÿ G S9 Sư g9 g9 u00 152952 xiii CHƯƠNG 1 TONG QUAN LY THUY:T - 5 s° se se 2s s2 £ss<2 1

1.1 Giới thiệu về phát triển ứng dụng web - ¿5s S2+Et2E2E2E2EEEEEEEEEEEEEEEeErrrree 1

1.1.1 Khái niệm về ứng dụng web -. - + + +2Sx2EE2E12E121121111111111111211211211 1 1

1.1.2 Một số ứng dụng web phổ biến ees - 2S E9SE2EEEE2EEEEEE2EE21E111117111 11.111 xe |

1.1.3 So sánh ứng dụng web và trang Web - on nu 1

1.1.4 Cách thức hoạt động của ứng dụng web - -c c + v12 1x ren 2

IDc on 0 00 ẽ 3

1.2.1 Khái niệm về LinUx - ¿2-5 +SSE9SE9EE9EEEEEEE122121121121121121121121711111 11111 re 3 1.2.2 Ưu nhược điểm của LinUX ¿- 5c StSE*EEEEEEEEEEEEEEEEEEEESEEEEEEEEEEEEEEEEEEEErrkrkrkrvex 3

1.3 Giới thiệu về INginx -¿- 2-52-5222 E12E2E2171717111112112111111 1111211111 11c 3

1.3.1 Giới thiệu về Nginx - - 2 5c 1 St E2 1211211211111 1111111111211211111111 1111 1x 3

1.3.2 Cách thức hoạt động của NgInx - ¿2c 2c 3321112311191 11 1111111511111 1 11k re 4

1.3.3 Những tinh năng của ÌNBIHX c- Án TH nh TH HH kt 5

1.3.4 So 020/000 na 6

1.4 Giới thiệu về Redis Cache ccccccccccscsssssssssessssesessesesscscsvsussvsvsvevevsvevsvevevsvavsvevsvevseaes 7

1.4.1 Khái niệm về Redis Cache -¿- 2-52 51+S2+E22E22E2112121717121121212111711121 110 xe 7

1.4.2 Tính năng chính của Redis Cache - - s6 11v ng ng ưkt 7

1.4.3 Cau trúc dit liệu của Redis Cache - ¿2 +2 2212EE£2E2E1221221121122122121222 xe 8 1.4.4 Ưu điểm và nhược điểm của Redis Cache c.ccceccccsssssssssssesseseseesesececsvseecsvsusecececeees 8 1.4.5 Ứng dụng của Redis Cache cecsccsscssssssssssssssessessessessessessessssessssvsessvsusevsvsssevsseeeees 9

1.5 Giới thiệu về Do ker ¿- 2 ++s+E2E£2E£EEEEEEEEEE127121121121121121121171111 1111 re 11

Pham Trường Anh — B19DCPT011 iii

Trang 6

Đồ án tốt nghiệp MỤC LỤC

1.5.1 Khái niệm về Doek€r . -s:- +t22xt 222x221 2211222122 tre 11 1.5.2 Ưu điểm va nhược điểm của Docker c.ccceccscsscssssssesessesesessesesersvsseevsvsesesececececeeeees 11

1.5.3 Các thành phần và công cụ của Do Ker 2-2 sSs+SE£EE£EE2EE2EE2E22E2EeExrrrrees 12 1.5.4 So sánh Docker với các nền tảng khác - + + sSt‡E2EE2EEEE2EEEE2EEE12EEEExrek 15

1.6 Giới thiệu về Golang- Gin FrameWOF ¿+ 2+ seSE+E‡EE+E£E£EEEEEEEEEEEEerrkrkrreei 16

SN 60,69 1 5 16

1.6.2 Cau trúc ứng dung web server với Golang c.cccccscccessesessessesessesseseseecseseeseseesees 17 1.6.3 Giới thiệu về Gin Framework c.ccccccccssescssssesecsesesscsescecsesucsesvsucecsvsucecsnencaesveneeceeee 17

1.6.4 Định tuyến và bên trung gian - ¿5+ sSsE‡EEEE E121 1111112111111 111111 1E te 18 1.7 Tổng quan về MongoDB -¿- + x2E2219EE2312212212121211211212121121 2.2 re 18

1.7.1 Khái niệm về MongoDB csccccecessessessessessessessessessesessessessessessesscscsessssessssvsneseaeeees 18

1.7.2 Cách thức hoạt động của MongolDE ¿c3 3112111325111 115511 1151511115111 xe, 18

1.7.3 Các khái niệm cần chú ý về MongoDB c.cssescescssessessesessessssessesessessesesesssseeseseees 19 1.7.4 Ưu điểm và nhược điểm của MongoDB -¿- 2 s2x++z++£x+zxzzxzzxrrxzrrzxee 20

1.7.5 So sánh MongoDB với các hệ quan tri cơ sở dữ liệu khác - -‹ -+<>+ 21

1.7.6 Ung dung của MongoDB trong thực tẾ -¿- ¿5e +x‡EE£EE£EE2EEEEEEEErEererkrrees 22

1.8 Tổng quan về NuxtJS 5c St SE 121911 21E11111112112111211112111111111 111111 re 22

1.8.1 Giới thiệu về NuxtJ§ 5c: 2 t2 tt HH1 re 23

1.8.2 Lich SỬ ra ỞỜI 22010111101 1111 1111919955511 111kg TT ng 23

1.8.4 Cau trúc thư mục dự án Nuxt[S - - + SSt St S233 EEEEEEEEEEEEEEESESEEEEEEEEEEEErkrkrrree 24

1.8.5 Routing trong NuxtJŠ - - c 0111 11H 1 SH 1n SH TH TH KH kh 251.8.6 Quản ly trạng thái với NuxtJŠ - c1 1n 1S 1n SH TH HH TH tk ng key 27

1.8.7 Tối ưu hoá công cụ tìm kiẾm ¿5c 2 eE9EE9EEEEE2E12E12112112112117111 2111 xe 27

1.8.8 Server- side rendering và Client- side renderIng - - - ¿+ cccs*‡‡++ssvcx+sseeexss 28

1.8.9 So sánh ưu và nhược điểm của NuxtJS và NextJS - c- stcttcvevexekrrexsxea 29 1.9 Tiểu kết chương Ì - 2:22 1+SE2E22EEEEE211221221211221271211211211212121121 11 ce 30

CHUONG 2 PHAN TÍCH VA THIẾT KE HE THÓNG 31 2.1 Phát biểu bài tOAN Lecce eeccseeeecssseeessseeeessneeessneeeesnneessncessneeesuneeeseneeessnieessneeetieee 31

2.1.1 Tổng quan hệ th6ng ceccccecccccscescsscscssessesessesssscssesesucsesscssescsscsssessesessesnsessssecseeaes 31

Phạm Trường Anh —- B19DCPT011 iv

Trang 7

Đồ án tốt nghiệp MỤC LỤC

2.1.2 Đặt vấn đề - :- c2 12122 2212110112112112112112112111111111212110121211111111 ra 31 2.1.3 Mô hình tổng quan về hệ thống - 2-2-2: ©S222£+EE+EE22EE2EEEEE2EE2EEEEE2E2Eerrzxee 31

2.2 Phân tích hệ thống, 2-2 2 2+ £+E2E£EE£EEEEEEEEEEEEE12112112112112112117171 11.111 cre 32

2.2.1 Mô hình phát triỀn - + 2+ E9SEE£EE#EE2EEEEEEEEEEEE2171211212111111121 1111111111 cre 33 2.2.2 Biêu đồ phân rã chức năng ¿- - St 9SE9EEEEEE2EEEEEEEEEEE1217111E1111111 1e Te 34 2.2.3 Biểu G6 usecase - -:c c tt 1211 11111111111515111111111111111111111111111111EE11 51.1110 Hs 35

2.2.4 Biểu đồ quan hệ ER 2© s+E9EE9EE2E12E1211211211717171111111112111121 11 y0 47 2.3 Thiết kế hệ thong ceccecceccsscsscssessessessessessessesssssessesvssvcsessessessessvsesevsvsessvsseseveessees 48

2.3.1 Biểu đồ lớp -¿- 5: s1 1E 1212151121112111121121111111 1111110111121 2112111111 tre 48 2.3.2 Biểu đồ tuần tự ¿5-1 2t 2EEE122121121121121121121211111111111112112121212 ra 48

2.4 Tiểu kết chương 2 -¿- 252522 E2E2E712171711111211211211211111111 2111121 11 re 56

CHUONG 3: CÀI ĐẶT VÀ TRIEN IKHAI <2 s<s<©ssecssesses 57 3.1 Triển khai sản phẩm - 2 252 £2EE2EE*EEEEEEEEEEEEEE187111211211211211111 11.1111 te 57

3.2 Cài đặt môi trường - + s2x2E12E1221121127171121121111211211211211111111 21k 57

3.2.1 Cai đặt golang — gin frame WO - eeeeseceeceneeeeeeseeeeeeseeneeeaeesseesseessneeenaees 57

3.2.2 Cài đặt NuxtJS 5c 2c 2t 21 222212112112112111211211112122112111211 212 eerreg 57

3.2.4 Cài đặt NgiX oe ececcccccccecsessessessessesssessessesssessessessssssessessessuesiessessesissessesesseseeseseeees 603.2.5 Cai đặt Redis Server cccccccccccccssccccsssseececessssececessseececessseeeccessseeeesesseeeesesseeeeeenees 66

3.2.6 Cài đặt Docker cccccceecssssssccccccccesssessssccssssccececeseesesssssssssecesesesesssssteeseesess 673.3 Xây dựng API cho dự ấn - c1 2211211121111 11511 1111118 1111111111 111111 Egx rrvết 70

3.3.1 API phía tuyên sinh - 5c St St 2E2121121112112111211111111 111111111 rêu 70

3.3.2 API phía quản lý - 5k TT TH TH HH HH HH nh Hư 71

3.4 Trién khai GIAO ISN AU AN 6 +1l 73

3.4.1 Xây dựng trang tuyén Simhee ceceeccecccesessessessessessescsessessessessesvsscsvsssesssessvssseeeeeees 73

3.4.2 Xây dựng trang QUAN fT| - 111911111 1111511119 111191 11H 11H TH vn 77

3.5 Tiểu kết chương 3 2: 2 +25 2E2221921221122122121121122127121121121121111112 11c e 80

40000/.00277.7 81 TÀI LIEU THAM KHHẢO -s° 5° 5< 5< 5£ ££S£ES£ES4 E34 E3ES4ESsESEssEsz2szszee 82

3:00800002055 83

Phạm Trường Anh —- B19DCPT011 V

Trang 8

Đồ án tốt nghiệp MỤC LỤC

Phạm Trường Anh —- B19DCPT011 vi

Trang 9

Đồ án tốt nghiệp DANH MỤC CÁC KÝ HIEU VÀ CHỮ VIET TAT

DANH MỤC CÁC KÝ HIỆU VA CHỮ VIET TAT

Application Programming Giao diện lập trình ứng dụng

BSON Binary JavaScript Object Dinh dang đối tượng JavaScript nhị

Notation phan

C10K 10,000 clients currently Mười nghìn kết nối đồng thời

CLI Command Line Interface Giao diện dòng lệnh

CMS Content Management System | Hệ thống quản lý nội dung

CSR Client Side Rendering Tạo trang phía máy khách

DBMS Database Management Hệ thống quản lý cơ sở dữ liệu

DDos Distributed Denial of Service | Hình thức tan công mạng

GUI Graphical User Interface Giao diện người dùng

HTML Hyper Text Markup Language | Ngôn ngữ Đánh dấu Siêu văn ban HTTP Hypertext Transfer Protocol Giao thức Truyền tải Siêu Văn Ban

JSON JavaScript Object Notation Dinh dang đối tượng JavaScript Phạm Trường Anh - B19DCPT011 vì

Trang 10

Đồ án tốt nghiệpDANH MỤC CÁC KÝ HIEU VÀ CHỮ VIET TAT

Uniform Resource Locator

TLS Transport Layer Security

XML Extensible Markup Language

NoSQL Not Only Structured Query Ngôn ngữ truy vấn phi cấu trúc

RDBMS Relational Database Hệ quản tri cơ sở dữ liệu quan hệ

Management System

SEO Search Engine Optimization | Tối ưu hóa công cụ tìm kiếm SQL Structured Query Language Ngôn ngữ truy van có cau trúc SSL Secure Sockets Layer Lớp cổng bảo mật

SSR Server-side Rendering Tao trang phia may chu

Trang 11

DANH MUC CAC BANG

1 So sánh sự khác nhau giữa ứng dung web va trang Web ccccceceseeeeeneees 1

2 So sánh ưu nhược điểm của LinuX c.c.cceeccsscsescssesesessesesscsessseseseseveeeseeeeeeeeeeees 3

3 Sự khác nhau giữa Nginx và Apache - . - -c t1 v12 vn vn ngư 6

4 Ưu nhược điểm của Redis Cache -.-¿- - St + ESE9E5EE2E2EE1215E111111113 E115 8

5 So sánh ưu nhược điểm của Docker Swartt c.cccccccscscssssesesesesesseseseseseseseeeeees 14

6 So sánh giữa Docker và VÌM HT ng nh 157 So sánh MongoDB với các hệ quan tri cơ sở dit liệu khác - 21

8 So sánh giữa NuxtJS và NextdS ec ccccccceseceneceneeeeeeeeeeseeseeeeeseeeeeseeeeens 29

1 Đặc ta Usecase - đăng ký xét tuyỀn - -c c2 1221211121111 re 36

2 Dac ta usecase — Xem các chương trình liên quan - -. - <s+++<cs++ 37

3 Đặc tả usecase - xem điều kiện xét tuyển ¬— 38 4 Đặc tả usecase - xem hồ sơ và cách đăng ký - ¿5c +sctecerzkerersrei 38

5 Đặc tả usecase - khám phá CÏE - + 1322183211121 Eexxx 39

6 Đặc ta usecase - đăng nhập - ¿2c 13121121211 111921 1111188511111 1122111 xrg 39

7 Đặc tả usecase - xem danh sách h6 SƠ - 2 St St+E‡EvEE+ESEEEESEeErrterrrrrrrd 40 8 Đặc ta usecase - xem chỉ tiết hỒ SƠ - 6-5: tt E1 SE EE E151 1111111111111 ExE+ 41

9 Đặc ta usecase - in thông tin h6 SƠ - ¿252 ESE+ESE£EE2E£EE2EEE2EEEeErrrrees 41 10 Đặc tả usecase- xoá hỗ sơ xét tUVEN ee eeeececsscesessesessesecsessesssesseseseestsseeeseees 42

11 Đặc tả usecase - thống kê theo trường muốn xét tuyền -. - 2: 43 12 Đặc tả usecase - thống kê theo ngành xét tuyỀn 2-5 2 ecscszeerszed 43 13 Đặc tả usecase - xem danh sách đối tác - + +x+x+Et+E+EEEE+E+EEEEzEersrxsxses 44

14 Đặc tả Usecase — thêm đối tác -. - ¿s33 E1 EE212E1E15111111112121111E3 xe 44

15 Đặc tả usecase - xem Chi tiết đối tác - cv t tt E111 EEskrrrke 45 16 Đặc ta usecase — sửa thông tin đối tác - + s+ct+Ex2E2E2E2Eerkrkerxrrres 46 17 Đặc tả usecase- xoá đối thC cccccccssesesssscsessesesecsesesecsesucecsvsvsvevevsvevsvevevevevevsees 46

1 Thông tin api tạo một hồ sơ xét tuyÊn ¿+ 2 k+Ex+E£EEEEE2EEEEEEeEerkrkrxred 70 2 Thông tin api link chương trình đào tạo của đối tác :- :-++5z+szss¿ 71

3 Thông tin api đăng nhập - c2 2121112111 2211 1111211111111 1 111111 1k rree 71

Phạm Trường Anh —- B19DCPT011 viii

Trang 12

Đồ án tốt nghiệp DANH MỤC CÁC BẢNG

Bang 3 4 Thông tin api thống kê danh sách theo trường xét tuyền - s5: 71 Bảng 3 5 Thông tin api thống kê danh sách theo ngành xét tuyển - 71 Bảng 3 6 Thông tin api thống kê danh sách theo trường xét tuyển với năm 72 Bảng 3 7 Thông tin api lay danh sách h6 sơ xét tuyỂn 2: 52 +s+EeEzEeErxzEerxzed 72 Bảng 3 8 Thông tin api xoá h6 xét tuyỀn - 2 + 2 2+E£EE+EEEEEEE2EEEE2EEEEE12121EEEcee 72 Bảng 3 9 Thông tin api in một hồ sơ xét tuyễn ¿-2- + +¿22222++£xtzE2zxerxrrxerxee 72 Bảng 3 10 Thông tin api lay danh sách đối tác + + ++x+EE+Ex£EE£EEEEEzEerxrkerees 72 Bảng 3 11 Thông tin api xoá một đối tác - +- + s+Sx+EE2EEEE2EEEEE2EE212121 111111 EE 73 Bảng 3 12 Thông tin api xem thông tin một đối tác - ¿+ + £+E+EzxeEererxrxez 73

Phạm Trường Anh —- B19DCPT011 1X

Trang 13

Dé án tốt nghiệp DANH MỤC CÁC HÌNH VẼ

Bảng 3 13 Thông tin api cập nhật thông tin một đối tác - ¿2-2 s+zxz£s+xzxezxzed 73 DANH MỤC CÁC HÌNH VE

Hình 1 1 Mô hình hoạt động của NgInx -.- LH TH như 5Hình 1 2 Mô hình Cache - A SIđ€ - - G11 nh TH TH nhu HH 9Hình 1 3 Mô hình Read- Through - - + 3221321113511 1951 3511151151111 11118111 kg 9

Hình 1 4 Mô hình Write- Through - c1 221121111211 121 11 111811182111 1881111181 re 10

Hình 1 5 Mô hình Write- BacK - -. c1 1121 SSH SH kg 10Hình 1 6 Giao diện của Docker Extensions trên Docker Desktfop ‹ 13

Hình 1 7 Mô hình kiến trúc của Docker Swarm 2-2 5¿+22+2E+£EtzEczEeEzErrxerxes 14 Hình 1 8 Khác biệt giữa cau trúc của Docker và VM ¿+ 2 +x+E+EerzEerrsrxee 15 Hình 1 9 Cau trúc ứng dụng web server với Golang -¿s ++c++x+z+zxzxvzsssves 17 Hình 1 10 Hiệu suất giữa SQL time và Mongo tỉme 2 2 2 +c+z+Ee£zEersrxzed 20

Hình 1 11 Cấu trúc thư mục dự án NuxtJS -¿- ¿St St+EEtSESEEEE2EEEEEESEEEEESErrkrkrrerree 25

Hình 1 12 Ví dụ cụ thé về cau trúc tệp trong Pages 2- 2 sS2+EeEx+EzEeEzEerxrxee 25 Hình 1 13 Kết quả khi route được ø€n€rafe + + ecx+E+x£E2E£EEEE2EEEx2E21 211 cree 26 Hình 1 14 Ví du về một route lồng ¡00 ‹-1 26 Hình 1 15 kết qua của route lồng nhau khi được generafe - 2-2 2 z+s+zxezxze+ 27

Hình 1 16 Mô hình hoạt động của Server-side rendering(SSR) - -< 555: 28

Hình 1 17 Mô hình hoạt động cua Client -side rendering (CSR) 55s: 29

Hình 2 1 Mô hình tổng quan hệ thống - 2 2£ S¿2S22EE+EE2E2EE2EEEE+2EE2EEtrxerrzxee 32

Hình 2 2 Mô hình SŠcrum 5 6 + E112 9911211 11111 1111 nh HH TH nh TH HH kh 33

Hình 2 3 Biéu đồ phân rã chức năng phía CMS ¿- 2 ++S++EE2Et+E£EEEEEEEErEerrxrex 34

Hình 2 4 Biểu đồ phân rã chức năng phía người đăng ký - 2 2+s+c++Eezszx+2 34 Hình 2 5 Biểu đồ usecase phía CMS - ¿- 2 +2S22E22EEEEE2E122122121E212212121 22 2xe2 35

Hình 2 6 Biểu đồ usecase phía [USeT 2-2 2 2 S2E‡2E£EE£EEEEEEEEEEEEEE2E121121 1.21 te, 36 Hình 2 7 Biểu đồ quan hệ ER 2-52 2 St+E9E£2EEEEEEXEEEEE121121121121121111.11 11111 1x0 47

Hình 2 8 Biểu d6 lớp - 52s SE E219 121E112111111111111211111111111 1111111111111 tre 48 Hình 2 9 Biểu đồ tuần tự đăng ký xét tuyển ¿-©5¿©22 2t 2x 2222122121212 E22 c2 48 Hình 2 10 Biểu đồ tuần tự chương trình liên quan - 2-52 2 52 +££EzEeEzEererxzes 49

Phạm Trường Anh —- B19DCPT011 x

Trang 14

11 Biéu đồ tuần tự đăng nhập phía CMS 2-5-5252 E2 EEEEEEEEEErkrkred 49

12 Biểu đồ tuần tự thong kê hồ sơ xét tuyển theo trường :- 5 +- 50

13 Biéu đồ tuần tự thống kê hồ sơ xét tuyển theo ngành - 2 + 552 50

14 Biểu đồ tuần tự danh sách hồ SƠ 2-5 St SE2EEEE2EEEEE2EEEEEEEEEEEEEEEEEErree 51

15 Biểu đồ tuần tự xem chi tiết h6 SƠ ¿S222 StSE+E+E2EEEEEEEEEEEEEEEEEsErErrrrrea 51 16 Biểu đồ tuần tự in thông tin h6 SƠ 2¿- 2-55 2S22222Ex2EE2E2Exerxzrrerxees 52

17 Biéu đồ tuần tự xoá hồ sơ xét tuyỂn essesseseesesessesesessesesseseeesees 53 18 Biéu đồ tuần tự danh sách đối tác - ¿+ cSt xSESE2E2EE121211515111 111111 xeE 53

19 Biểu đồ tuần tự tạo đối tác MOL ec eccseecsseecseneeesneeesneeessnecssneeseneecsneeesneeeets 54 20 Biểu đồ tuần tự chỉ tiết đối tác ccc cv 54 21 Biểu đồ tuần tự cập nhật chương trình đối tÁC các tt vn tre 5S

22 Biéu đồ tuần tự xoá chương trình đối tác +: sSsec2E2E2EzEzxrxres 56

1 Giao diện dự án NuxtJs khi chạy thành công - 5 5 225 ‡+++ssvxssss2 58

2 Cai đặt MongoDB — bước Ì - - «xxx vn ng HH rệt 58

3 Cai đặt MongoDB — DUOC 2 -. - + 1121 111 1 1111 1111 1n rệt 594 Cài đặt MongoDB — bước 3 c1 t3 1111112111 1151 111111 111111181 E1 re 595 Giao diện MongolDB - c1 2c 11211101111 111011101 1110111011 11g 1 1H vn vết 60

6 Cài đặt Nginx — bước Ì - sgk 60

7 Cai dat Nginx (u¡vaẢải 618 Cai dat Nginx — DUGC ốc 619 Cài đặt Nginx — DUGC 5 ec ecccccccceseceseceeseeeseeesseeesecsseeesseceseesseesseeeeeenseensees 62

10 Cai dat Nginx — DUOC 1 6211 Cải đặt Nginx — ĐƯỚC 7 - Ghi ng nh nh nghiệp 63

12 Cai đặt Nginx — DUOC 8 c2 11211 v1 TH HH TH TH TH kg 6313 Giao diện của Nginx khi chạy localhost trên trình duyệt -.-‹- 64

14 Cách tắt Nginx — bước Ì + + + SE EE2121121111211111111 1111111111 xe 64 15 Cách tắt Nginx — bước 2 ¿- +23 2212212112112212211211211221211 21 1c e6 65

16 Cách tắt Nginx — bước 3 -:- + St E12 12112112112112117111 11111111112 xe 65

17 Chạy Nginx với PowershelÏL - c + 2 3211112111111 1111111111118 1 1E krg 66

18 Cai dat Docker — Bước Ì - << c1 1111111 22295351 111v v xxx ng 67

Phạm Trường Anh —- B19DCPT011 xi

Trang 15

Cài đặt Docker — Bước 2 21111 1222311111 11531 111 1E ke y2 68

Giao diện setting của DOCÌK€T 5 1 1 231991 9 1E ng nh ng nh 68

Cai dat Docker — BưƯỚC Ô LH HT ng nh 69Cài đặt Docker — Bước 4 - + c2 1111222311111 11531111 1n ng 69Cài đặt Docker — Bước Š - L 11111222311 111 11531111111 kn nen ngu 70

Giao diện chính của Ioeker +5 2 1133322211111 11 Ekkkkkkeeeeeeeeeeeses 70

Giao diện trang tuyên sinh - + 2c sex EEEEE12112112112112112121 11 re 74

Giao diện thông tin đăng Ký c1 221221111211 12111 1111111111181 1 11111 re 74

Giao điện thông tin h6 SƠ ¿2-52 SSE2ESE9EE2EEEEEE 2115111211121 1e 75

Giao diện các chương trình liên quan 5< SE sseereeee 75

Giao diện điều kiện xét tuyÊn - ¿+ St SE E9 12E121121121121 21212111 tre 76 Giao diện hồ sơ và cách thức đăng ký - -+- sec ve re rrxerrrex 76

Giao diện khám phá CÍTE (2c 2 2321132511193 13921 1111811111811 xe 77

Giao diện đăng nhập hệ thong ám ằằằằằ 77 Giao diện tổng quan trang quản lý 2 25+ ++E+£E+EE£EEEEESEESEEzExrrrrees 78

Giao diện quản lý hO SƠ 2-5252 Sc SE E219 EEE1E7121121121121121121 71111 te 78

Giao diện chỉ tiết hO SƠ sc-5cc22vt 2 t2 tt tre 79 Giao diện quản lý đối tác -:- +cs2212E122121121121121171717111 111.11 xe 79

Giao diện thêm đối tác - -55sc 2 tt ttttErrrgrrrrrrrrrieo 80

Phạm Trường Anh —- B19DCPT011 xi

Trang 16

Đồ án tốt nghiệp MO DAU

MO DAU

Trong một thế giới ngày càng toàn cầu hóa và cạnh tranh, việc quan lý tuyên sinh trở nên phức tạp hơn bao giờ hết, đặc biệt trong lĩnh vực giáo dục Dựa vào thực tế đó,

Trung tâm Dao tạo Quốc tế - Học viện Công nghệ Bưu chính Viễn thông đã đặt ra

thách thức cho minh trong việc cải thiện và tối ưu hóa quy trình tuyến sinh.

Hiện tại, Trung tâm Đào tạo Quốc tế của học viện đã hợp tác với rất nhiều trường đại học nỗi tiếng trên thế giới tạo ra chương trình liên kết quốc tế để giúp cho học sinh, sinh viên có thé có cơ hội trải nghiệm học tập tại một trong sé những trường

đại học hàng đầu Vì vậy một hệ thống quản lý sẽ là cầu nối giúp cho học sinh, sinh viên có thê hiểu rõ hơn về quy trình và thủ tục đăng ký xét tuyên, về phía Trung Tâm

có thé quản lý được hỗ sơ về số lượng,trường xét tuyên, ngành xét tuyên, các thông

tin cá nhân của ứng viên xét tuyên qua đó có thé xem xét kỹ lưỡng trước khi xét duyệt

hồ sơ đạt yêu cầu qua đó có thé giảm tải các quy trình làm việc một cách tối ưu.

Với sứ mệnh đó, em quyết định chọn đề tài "Xây dựng hệ thống quản lý tuyễn

sinh cho Trung tâm Đào tạo Quốc tế - Học viện Công nghệ Bưu chính Viễn thông

sử dụng NuxtJS" là đồ án tốt nghiệp của mình với mong muốn rang có thé đóng góp

vào sự phát triển và hiệu quả hơn của quản lý tuyên sinh tại trung tâm Dự án này được

chia thành ba chương chính, mỗi chương đề cập đến một khía cạnh quan trọng của quá

trình phát triển dự án.

se Đối tượng và phạm vi nghiên cứu

- Đối tượng: Những người làm công tác quản lý hồ sơ tuyển sinh quốc tế cho

trung tâm đào tạo quốc tế Học viện

- Phạm vi nghiên cứu: Xây dựng hệ thống quản lý tuyển sinh quốc tế phục vụ

công tác quan lý tuyển sinh chương trình quốc tế cho Trung Tâm Đào tạo Quốc

tế Học viện Công nghệ Bưu chính Viễn Thông

© Muc tiêu dé tai

- Nghiên cứu về hệ thống quan lý hồ sơ tuyển sinh

- Xây dựng hệ thống quản lý hồ sơ tuyên sinh quốc tế dé sử dụng cho người dùng dé giải quyết nhu cầu tạo ra một hệ thống quan lý hồ sơ tuyển sinh quốc tế

trở nên đễ dàng và nhanh chóng hơn, giúp tiết kiệm thời gian ¢ Nội dung chính của đề tài sẽ bao gồm các chương sau:

- Chương 1: Tổng quan lý thuyết Chương 1 sẽ trình bày tổng quan về phát

triển ứng dụng web và giới thiệu tổng quan về các công nghệ được sử dụng trong quá trình phát triển sản phẩm.

Phạm Trường Anh —- B19DCPT011 xiii

Trang 17

Đồ án tốt nghiệp MO DAU

- Chương 2: Phân tích và thiết kế hệ thống Chương 2 sé đưa ra phát biểu về bài

toán, xác định yêu cầu, phương pháp xây dựng hệ thống, đưa ra biểu đồ use case,

biểu đồ tuần tự cho từng chức năng của hệ thống

- Chương 3: Cài đặt và triển khai hệ thống Chương 3 sẽ trình bày cách cài đặt

sản phẩm và đưa ra một số hình ảnh triển khai của sản phẩm thực tế.

Em hy vọng rằng dự án này sẽ có giá trị cho người đọc, đặc biệt những người quan tâm đến phát triển hệ thống thông tin và ứng dụng công nghệ vào lĩnh vực giáo

Phạm Trường Anh —- B19DCPT011 XIV

Trang 18

Đồ án tốt nghiệp

CHƯƠNG 1 TONG QUAN LY THUYET

CHUONG 1 TONG QUAN LY THUYET

Trong thời dai số hóa ngày nay, việc tuyển sinh trực tuyến là một điều tat yếu

cua Trung tâm Đào tạo Quốc tế - Học viện Công nghệ Bưu chính Viên thông nói riêng

và các Trung tâm Đào tao Quốc tế khác nói chung Tuyển sinh trực tuyến giúp người

dùng giảm quy trình và thời gian đăng kỷ ho sơ tuyển sinh Vì vậy chương dau tiên của đồ án sẽ di vào tìm hiểm về các công nghệ lõi để tạo ra một hệ thống hỗ trợ tuyển sinh

trực tuyển.

1.1 Giới thiệu về phát triển ứng dụng web

1.1.1 Khái niệm về ứng dụng web

Ung dụng web là một loại phan mềm được thiết kế dé chạy trên trình duyệt web và tương tác với người dùng thông qua giao điện người dùng web Điều này có nghĩa

là người dùng có thể truy cập và sử dụng ứng dụng mà không cần phải tải về và cài đặt

nó trực tiếp trên thiết bị của họ Các ứng dụng web có thể chạy trên nhiều loại trình

duyệt web khác nhau, giúp tối ưu hóa sự linh hoạt và tiện ích cho người dùng.

1.1.2 Một số ứng dung web phổ biến.

° Ứng dụng web thương mại điện tử: với sự hỗ trợ từ các ứng dụng web thương mại điện tử như Amazon, Shoppe,Lazada từ đó người dùng có thể duyệt, tìm kiếm và

thanh toán trực tuyến cho sản pham.

e Ứng dụng webmail: Các ứng dung webmail được người dùng là doanh nghiệp va cá

nhân sử dụng rộng rãi để truy cập email của họ Ứng dụng webmail thường bao gồm những công cụ giao tiếp khác, chăng hạn như nhắn tin tức thì và họp video Chúng ta

có Gmail, Outlook.com

e Ứng dụng web mạng xã hội : Các ứng dụng web mạng xã hội hiện nay là 1 trong

những xu hướng của ứng dụng web Không thể không nhắc đến các ứng dụng web

mạng xã hội như: Facebook, Instagram, Tiktok 1.1.3 So sảnh ứng dụng web và trang web

Bang 1 1 So sảnh sự khác nhau giữa ứng dụng web và trang web

Ứng dụng Web Trang Web

Có tính tương tác cao hơn Người | Thường chỉ cung cấp thông dùng có thê thực hiện các thao tác | tin tĩnh và không có khả năng

Tính tương tac | nhự điền form, tương tác với các | tương tác mạnh mẽ.

yêu tô trang như ô trò chuyện, và

có trải nghiệm người dùng da

Phạm Trường Anh —- B19DCPT011 1

Trang 19

Đồ án tốt nghiệp

CHƯƠNG 1 TONG QUAN LY THUYETdang.

Thường yêu cầu quản ly va lưu

trữ dữ liệu lâu dài Sử dụng các cơ

Thường chỉ hiển thị thông tin tĩnh và không yêu cầu việc

lẻ cap dt | 56 dữ liệu để lưu trữ thông tin và | lưu trữ dữ liệu lâu dải.

‘ có thé tương tác voi dir liệu trong

thoi gian thuc.

Yêu cầu một mô hình phát triển | Thường được phat triển dé

Mô hình phát | phức tạp hơn với sự tích hợp của | hiển thị nội dung và thông tin

triển cả phần máy chủ (backend) và | cho người dùng.

phần khách hàng (frontend).

1.1.4 Cách thức hoạt động của ứng dụng web

Ứng dung web có cách thức hoạt động dựa theo mô hình khách — chủ, cu thể thì

ứng dụng web vận hành như sau:

© Kiến trúc phía máy khách:

- Tập lệnh phía máy khách xử lý chức năng giao diện như các nút và hộp thả

xuống, điền thông tin.

- Khi người dùng cuối nhấp vào liên kết của ứng dụng web, trình duyệt web sẽ tải tập lệnh phía máy khách và kết xuất các yêu tô đồ họa cũng như nội dung văn

bản dé người dùng tương tác.

- Vị dụ: người dùng có thể đọc nội dung, xem video hoặc điền thông tin chi tiét

vào biéu mẫu liên hệ Các hành động như nhấp vào nút “gửi” sé đi tới máy chủ

dưới dang yêu cầu của máy khách ® Kiến trúc phía máy chủ:

- Tập lệnh phía máy chủ có nhiệm vụ xử lý dữ liệu.

- Máy chủ của ứng dụng web xử lý các yêu cầu của máy khách và gửi lại phản

hồi Các yêu cầu thường đòi hỏi thêm đữ liệu, chỉnh sửa hay lưu dữ liệu mới.

- Ví dụ: nếu người dùng nhấp vào nút Đọc thêm, máy chủ của ứng dụng web sẽ gửi lại nội dung cho người dùng Nếu người dùng nhấp vào nút Gửi, máy chủ của

ứng dụng sẽ lưu dữ liệu người dùng vào cơ sở dữ liệu Trong một số trường hợp,

máy chủ sẽ hoàn thiện yêu cầu đữ liệu và gửi lại trang HTML hoàn chỉnh cho máy khách Quá trình này được gọi là kết xuất phía máy chủ.

Phạm Trường Anh —- B19DCPT011 2

Trang 20

Đồ án tốt nghiệp

CHƯƠNG 1 TONG QUAN LY THUYET

1.2 Giới thiệu về Linux 1.2.1 Khái niệm về Linux

Linux là một họ các hệ điều hành tự do nguồn mở tương tự Unix và dựa trên Linux kernel một hạt nhân hệ điều hành Linux thường được đóng gói thành các bản

phân phối Linux.

1.2.2 Ưu nhược điểm của Linux

Bảng 1 2 So sánh wu nhược điểm của Linux

Ưu điểm Nhược điểm

` Một số nhà sản xuất driver không phát

Là hệ điêu hành miền phí oak sự

triên và hô trợ cho Linux.

Khó tiếp cận và làm quen khi ta đã quá

uen thuộc với Windows thì khi chuyên

Tính linh hoạt cao ee Caensang Linux bạn can một thời gian đê có

thể làm quen được Linux.

Số ứng dụng hoạt động trên Linux còn

Tính bảo mật cao ` Ane Hoạt dung

hạn chê

Hỗ trợ hiệu quả cho những máy có cau hình yếu

1.3 Giới thiệu về Nginx

1.3.1 Giới thiệu về Nginx

Nginx là một máy chủ web và cũng là một phần mềm máy chủ proxy nguồn mở.

Nó là một trong những máy chủ web phổ biến nhất và được ưa chuộng đặc biệt trong các ứng dụng web có khối lượng lớn và yêu cầu xử lý cao.

1.3.1.1 Độ phổ biến của Nginx

Những công ty lớn sử dụng Nginx bao gồm: Autodesk, Atlassian, Intuit,

T-Mobile, GitLab, DuckDuckGo, Microsoft.v.v Vậy là đủ dé thay do phố biến và

đáng tin cậy của Nginx với cộng đồng.

1.3.1.2 Mục đích của Nginx

Một số mục đích mà Nginx hướng tới như là:

Phạm Trường Anh —- B19DCPT011 3

Trang 21

Đồ án tốt nghiệp

CHƯƠNG 1 TONG QUAN LY THUYET

¢ Hiệu suất và Tốc độ: Nginx được thiết kế dé xử ly hang ngàn kết nối đồng thời một cách hiệu quả Mục tiêu là cung cấp hiệu suất cao và thời gian phản hồi nhanh cho các

ứng dụng web và dịch vụ mạng.

® Cân bằng tai: Nginx hỗ trợ cân bằng tải dé phân phối đồng đều khối lượng công việc và yêu cầu tới nhiều máy chủ backend, giúp tối ưu hóa sức mạnh tính toán và đảm

bảo sự 6n định và khả dụng của ứng dụng.

e Bao mật va Bảo vệ DDoS: Nginx được thiết kế với tính năng bảo mật mạnh mẽ và

khả năng chống lại các cuộc tấn công mạng như DDoS Nó cung cấp cơ chế kiểm soát

truy cập và khả năng giữ an toàn cho hệ thống.

e Tối ưu hóa Tài nguyên: Nginx tối ưu hóa việc sử dụng tài nguyên hệ thống, giúp tiết kiệm bộ nhớ và CPU, làm giảm tài nguyên cần thiết để xử lý một số lượng lớn yêu

e Linh hoạt và Mở rộng: Nginx được thiết kế dé linh hoạt và có thé mở rộng dễ dàng, từ việc chia tách các chức năng thành các module cho đến khả năng mở rộng theo nhu

¢ Hỗ trợ Giao thức và Ứng dụng da dạng: Nginx hỗ trợ nhiều giao thức, bao gồm

HTTP, HTTPS, SMTP, POP3, và IMAP.

Mục dich mà Nginx được tạo ra dé giải quyết như cau tối ưu hoá hiệu suất, linh

hoạt, bảo mật và dễ mở rộng để hỗ trợ các ứng dụng web và dịch vụ mạng đa dạng Đặc biệt trong các trường hợp cần phục vụ nội dung tinh như tệp dữ liệu hình anh, css,

js, text, và hoặc các yêu cầu truy van đồng thời số lượng lớn.

1.3.2 Cách thức hoạt động của Nginx

Trước khi nói về NGINX, thì ta cần nói đến cách máy chủ hoạt động.

Vi dụ như, khi máy khách gửi một yêu cầu dé mở một trang web Trình duyệt sẽ

liên lạc với máy chủ chứa website đó Sau đó, máy chủ sẽ tìm kiếm đúng tệp dữ liệu yêu cầu của trang đó và gửi ngược về cho trình duyệt Đây là một loại truy vấn đơn

giản nhất Cách này được gọi là một bước xử lý dữ liệu được thực thi theo một trình tự

duy nhất máy chủ truyền thống tạo một trình tự cho mỗi yêu cầu.

Còn Nginx thì hoạt động theo cách khác, nó hoạt động theo kiến trúc bat đồng bộ

hướng sự kiện Cụ thể Nginx hoạt động như sau:

® Phía Server Nginx sau khi được bật, nó sẽ chạy tiến trình chủ với các quyền truy

cập Sau khi xác định và thiết lập môi trường, tiễn trình chủ sẽ tạo các tiến trình con để

xử lý yêu cầu và phục vu dit liệu cho máy khách Các phan tiến trình này làm việc

dưới quyền của tiến trình chủ.

Phạm Trường Anh —- B19DCPT011 4

Trang 22

Đồ án tốt nghiệp

CHƯƠNG 1 TONG QUAN LY THUYET

¢ Phía máy khách gửi yêu cầu lên máy chủ thông qua một công (thường là cổng 80 cho HTTP và công 443 cho HTTPS), lúc này một phần kết nối mới được thiết lập.

® Khi một phần kết nối mới được thiết lập, Nginx chon một phần tiễn trình khả dụng từ danh sách các phần tiến trình đã được tạo trước đó Nginx chia công việc cho phần

tiễn trình đã chọn.

¢ Phần tiến trình xử lý yêu cầu của máy khách đó Quá trình xử lý bao gồm đọc yêu cầu, kiểm tra câu hình, xử lý định tuyến , và chuyên tiếp yêu cầu tới máy chủ Backend

tương ứng đã được định tuyến Điều này thường được thực hiện qua các giao thức

mạng như ( HTTP,Fast CGLSCGI ).

e Nginx xử lý phản hồi từ máy chủ Backend và gửi nó lại cho máy khách ban dau, đảm bảo rằng thông tin và nội dung được chuyển đúng cách theo định tuyến đã xác

định trước đó.

© Đồng thời nó có thé lưu trữ tạm thời nội dung của phản hồi này trong bộ nhớ hoặc trên đĩa Lưu trữ tạm thời giữ lại bản sao của phản hồi, bao gồm cả tiêu đề và nội

dung, dé có thé phục vụ lại khi có yêu cầu tương tự từ máy khách.

® Nếu có phản hồi trong lưu trữ tạm thời và nó vẫn còn hiệu lực (chưa hết hạn hoặc

chưa bị cập nhật), Nginx sẽ trả về phản hồi từ cache mà không cần gửi yêu cầu tới

¢ Quản lý lưu trữ tam thời sẽ quản lý như việc lưu trữ, xóa bỏ các mục lưu trữ tamthời cũ,cập nhật các mục lưu trữ tạm thời mới và giới hạn kích thước mục lưu trữ tạm

thời để đảm bảo tài nguyên được sử dụng một cách hiệu quả.

Máy chủ web ( web server)

Clients Luu

dunes yeni naa Arn see | chủ ứng dung ( Application server)

| seit eam ems) | nhớ lưu trữ đệm (Memcached)

Bộ nhớ đệm (Proxy cache)

+ L

Trinh tải bộ đệm Quan lý bộ đệm

Cache loader Cache manager

Pham Trường Anh — B19DCPT011 5

Trang 23

Đồ án tốt nghiệp

CHƯƠNG 1 TONG QUAN LY THUYETHình 1 1 Mô hình hoạt động cua Nginx

1.3.3 Những tinh nang của Nginx

Hiện nay máy chủ Nginx có nhiều tính năng nổi bật như:

® Tao ra khả năng xử lý hơn đến 10.000 kết nối cùng một lúc với các bộ nhớ thấp Khắc phụ van đề truy cập C10K.

¢ Hỗ trợ phục vụ các tập tin tĩnh và lập ra các chỉ mục tập tin phù hợp.

® Nginx có khả năng hỗ trợ thực hiện mã hóa cho giao thức mạng HTTPS.

¢ Cấu hình của Nginx vô cùng linh hoạt giúp lưu lại nhật ký truy van dé dang hơn.

®_ Nginx có khả năng chuyển hướng lỗi 3XX-5XX ¢ Nginx có thé hạn chế ty lệ đáp ứng của truy vấn.

® Nginx giúp giới hạn số kết nối đồng thời cũng như truy van từ 1 địa chỉ ¢ Nginx có thé hỗ trợ và tương thích hoan toàn với IPv6.

®_ Nginx có thể hỗ trợ cho websockets.

¢ Nginx hỗ trợ truyền tải các file FLV va MP4.

¢ Nginx có dung lượng nhỏ, tiêu tốn ít tài nguyên hệ thống và có khả năng xử lý hàng

nghìn kết nối cùng lúc mà không làm giảm hiệu suất.

1.3.4 So sảnh Nginx với Apache

® Trước tiên là sự giống nhau của 2 web server này là:

- Có hệ thống Mailing và diễn dan Stack Overflow hỗ trợ.

- Có khả năng bảo mật tốt cho mã nguồn.

- Hai server có hiệu năng trên nội dung tĩnh tương tự nhau.

- Đều có cộng đồng sử dụng lớn.

- Cả Nginx và Apache cung cap các công cụ quản lý và câu hình, cung cap cách

đê tinh chỉnh câu hình may chủ theo nhu câu cụ thê của dự án.

® Sự khác nhau của Nginx va Apache là:

Bang 1 3 Sự khác nhau giữa Nginx và Apache

Nginx Apache

Hiệu suất và tối Nginx thường nhanh hơn và | Apache mạnh mẽ và linh hoạt,

ưu hoá tối ưu hơn Apache đối với | nhưng có thể yêu cầu cấu hình

việc xử lý hàng nghìn kết nối | kỹ thuật dé đạt hiệu suất tương

Phạm Trường Anh —- B19DCPT011 6

Trang 24

Đồ án tốt nghiệp

CHƯƠNG 1 TONG QUAN LY THUYET

Hỗ trợ ngườiCó nhiêu tai liệu và nguôn học Apache có nhiều tài liệu, hướng

phục vụ các nội dung tinh

dùng trực tuyến dé tìm hiểu dẫn và module mở rộng.

Cũng chạy trên một số Unix Chạy trên tất cả các loại hệ thống

hiện đại và hỗ trợ một số tính | Unix-like và hỗ trợ đầy đủ cho

Hệ điều hành năng cho Windows Tuy | Windows hỗ trợ nhiên, hiệu suất hoạt động của

Ngmx trên windows khôngmạnh như Apache.

oo, Hoạt động dựa trên kiến trúc | Hoạt động dựa trên kiến trúc

Kiên trúc , ` , `

hướng quy trình hướng quy trình

X + Nginx không có khả năng xử | Apache có thé xử lý cả nội dung

Nội dung tĩnh Ty ủy R v ala NÀY R

ae ly các nội dung động mà chi | tinh và nội dung độngvà động

1.4 Giới thiệu về Redis Cache

1.4.1 Khái niệm về Redis Cache

Redis Cache hay Redis là một hệ thong ma nguồn mở được sử dụng như một cơ sở dữ liệu, bộ nhớ cache, trung gian tin nhắn Có thể hiểu Redis là một hệ thống lưu

trữ dữ liệu có cấu trúc trên bộ nhớ Redis thường được sử dụng như một cache hoặc bộ

nhớ đệm trong các ứng dụng web để giảm thời gian truy cập vào cơ sở di liệu chậm Từ đó cải thiện hiệu suất của ứng dụng.

1.4.2 Tính năng chính của Redis Cache

Tính năng của Redis cache được tối ưu hóa để cung cấp hiệu suất cao và linh

hoạt trong việc lưu trữ, truy xuất và xử ly dt liệu Một số tính năng nôi bật của Redis

® Kho lưu trữ bộ nhớ trong của Redis lưu trữ dữ liệu hoàn toàn trong bộ nhớ trong

giúp đảm bảo tốc độ truy cập dữ liệu cực kỳ nhanh.

Phạm Trường Anh —- B19DCPT011 7

Trang 25

Đồ án tốt nghiệp

CHƯƠNG 1 TONG QUAN LY THUYET

© Khoá chính: Redis là một hệ thống lưu trữ dit liệu dưới dang cặp key-value, cho

phép lưu trữ và truy xuất đữ liệu dựa trên các key duy nhất.

® Kho nhớ đệm : Redis thường được sử dụng như một hệ thống cache, giữ dữ liệu tạm

thời trong bộ nhớ đề giảm thời gian truy cập dit liệu từ nguồn dữ liệu chính.

© Xuất dữ liệu/ thay thé di liệu: Redis cung cấp chức năng xuất dữ liệu/thay thé dit liệu dé hỗ trợ gửi thông báo từ một phan của ứng dụng đến các phần khác.

e Thời gian tồn tại: Redis cho phép đặt thời gian tồn tại cho các key, giúp quản lý việc

hết hạn và xoá đữ liệu tự động sau một khoảng thời gian nhất định 1.4.3 Cấu trúc dữ liệu của Redis Cache

Không giống như các kiểu lưu trữ key-value đơn giản khác cung cấp các cau trúc

dữ liệu hạn chế, Redis có rất nhiều cấu trúc dữ liệu dé đáp ứng nhu cầu ứng dụng gồm:

® Key-Value Store: là một cơ sở dữ liệu key-value, có thể lưu trữ đữ liệu dưới dạng các cặp key-value Key là một chuỗi và value có thé là một trong các kiểu dữ liệu.

¢ Strings : là kiểu dữ liệu co bản trong Redis Lưu trữ các giá trị chuỗi như một value

dưới dang key-value Strings có thé chứa bat kỳ loại dữ liệu nào, không chỉ chuỗi đơn

® Lists : là một danh sách có thứ tự của các giá trị, cho phép thêm và loại bỏ các phần

tử ở cả hai đầu của danh sách.

® Sets : là một tập hợp không có thứ tự các giá tri không trùng lặp Sets thường được

sử dụng dé lưu trữ các tập hợp dit liệu duy nhất.

® Sorted sets — Zset : là một tập hợp các giá tri được sắp xếp theo thứ tự Mỗi giá trị trong Sorted Set được gán một số thứ tự.

® Hashes : là một tập hợp các cặp key-value, thường được sử dụng dé lưu trữ thong

tin cụ thé, chang hạn như các thuộc tính của một đối tượng.

© Hyperloglog: là một cấu trúc dữ liệu xấp xi dé ước tính số lượng phan tử duy nhất

trong một tập hợp lớn.

¢ Dữ liệu JSON va XML: Redis cũng hỗ trợ lưu trữ dir liệu JSON và XML dưới dạng chuỗi và sử dụng các cơ sở dữ liệu lưu trữ dưới dạng các cấu trúc dữ liệu Redis chuỗi.

1.4.4 Uu điểm và nhược điểm của Redis Cache

Bang 1 4 Ưu nhược điểm của Redis Cache

Ưu điểm Nhược điểm

Tăng tốc độ truy xuất đữ liệu : Redis Giới hạn bộ nhớ : Do Redis hoạt động

lưu trữ dữ liệu trên bộ nhớ chính, giúp | lưu trữ dữ liệu trên bộ nhớ chính và dung

Phạm Trường Anh —- B19DCPT011 8

Trang 26

Đồ án tốt nghiệp

CHƯƠNG 1 TONG QUAN LY THUYET

giảm thời gian truy cập vào 6 đĩa va tăng

tốc độ truy xuất dữ liệu.

lượng lưu trữ sẽ bị giới hạn bởi bộ nhớ

có sẵn trên hệ thống.

Hỗ trợ cấu trúc dữ liệu phong phú :

hỗ trợ các cấu trúc dữ liệu phức tạp như

hash, list, set, sorted set và bitmaps.

Không đảm bảo bền vững: Vì Redis

lưu trữ dữ liệu trên bộ nhớ chính, nếu máy chủ Redis bị tắt hoặc khởi động lại,

dữ liệu trong cache sẽ bi mất.

1.4.5 Ung dụng của Redis Cache

1.4.5.1 Lưu trữ bộ nhớ đệm

Một số kiêu lưu trữ bộ nhớ đệm phổ biến như là:

© Cache - Aside: Khi ứng dụng cần đọc dữ liệu tir database, nó sẽ kiểm tra trước xem cache có chứa dữ liệu mình cần không.Nếu có (cache hit) thi sẽ trả về dir liệu cần truy

van, ngược lại nếu không (cache miss) thì ứng dụng sẽ lay từ database.

1 Cache hit : đọc dữ liệu từ cache

3 viết dữ liệu vào database

————— 2 Cache miss : đọc dữ liệu từ database ————>

Bộ nhớ đệm

Hình 1 2 Mô hình Cache - Aside

® Read Through: Giống với cache aside nhưng ở đây, việc lay dữ liệu từ database khi

cache miss là của cache vì cơ sở dữ liệu sẽ đọc và lưu vào trong cache.

Phạm Trường Anh —- B19DCPT011 9

Trang 27

< 1 Cache hit : đọc dữ liệu từ cache — — — Co:ởdrlệu

Hình 1 3 Mô hình Read- Through

¢ Write Through: Dữ liệu được ghi vào cache va sau đó được lưu vào database Khi

được sử dụng cùng với phương pháp read through thì sẽ giúp đữ liệu có tính nhất

quán, không phải sử dụng những kĩ thuật cache invalidation.

Bộ nhớ đệm

Dữ liệu được viết vào cache ———>! ———— Dữ liệu được viết vào database ——> Cơ sở dữ liệu

Hình 1 4 Mô hình Write- Through

se Write - Back: Ứng dụng lưu mọi thứ vào trong cache, rồi sau một khoảng thời gian chờ nào đó cache sẽ lưu lại tất cả vào database Chiến thuật này thường được dùng cho

các ứng dụng nặng, nhưng có nhược điểm là nếu xảy ra lỗi trước khi cache lưu dit liệu vào database thì những dit liệu vừa lưu trong cache sẽ bị mat.

Bộ nhớ đệm

Dữ liệu được viết vào cache ————>Dữ liệu được viết vào database ——> Cơ sở dữ liệu

Hình 1 5 Mô hình Write- Back

® Cache invalidation : Khi dtr liệu trong database bi thay đôi thi dữ liệu trong cache đã bị cũ và không còn chính xác Lúc này, cần thực hiện update hoặc gỡ bỏ những dữ

liệu đã hết hạn trong cache, quá trình này gọi là cache invalidation.

Phạm Trường Anh —- B19DCPT011 10

Trang 28

Đồ án tốt nghiệp

CHƯƠNG 1 TONG QUAN LY THUYET1.4.5.2 Phân tích thời gian thực

Redis cache được sử dụng rộng rãi trong các ứng dụng phân tích thời gian thực

dé cung cấp hiệu suất cao và xử ly dit liệu nhanh chóng Một số ứng dụng phô biến

cua Redis cache trong lĩnh vực nay:

¢ Dữ liệu tông hop bộ nhớ đệm: Redis có thé lưu trữ kết qua phan tích đã được tông

hợp như tổng, trung bình, sỐ lượng, đối với dữ liệu thực.

s Quan lý phiên: Redis có thé được sử dụng dé quản lý thông tin phiên trong ứng

dụng phân tích thời gian thực.

e Bang diéu khién thoi gian thực: Redis cache có thể lưu trữ dữ liệu được cập nhật

liên tục và cung cấp đữ liệu thực cho các bảng điều khiển để giám sát hiệu suất và

thống kê trong thời gian thực.

e Đề xuất theo thời gian thực: Redis cache có thé lưu trữ và cập nhật thông tin đề xuất

thời gian thực dựa trên hoạt động của người dùng, giúp cung cấp đề xuất người dùng

nhanh chóng và chính xác.

¢ Xử lý sự kiện theo thời gian thực: Redis có thé được sử dụng dé xử lý và lưu trữ các

sự kiện theo thời gian thực ,giúp phân tích và đưa ra hành động dựa trên dữ liệu đang

diễn ra.

1.4.5.3 Tin nhắn chờ

Redis cache có thé được sử dụng hiệu quả trong các hệ thống message queues —

tin nhăn chờ để quản lý và xử lý các tin nhắn một cách nhanh chóng và đáng tin cậy.

Một số ứng dụng phổ biến của Redis cache trong hệ thống message queues:

¢ Tin nhắn được lưu trong bộ nhớ đệm: Redis có thể được sử dụng dé lưu trữ tam thời

các tin nhắn trước khi chúng được xử lý Điều này giúp giữ tin nhắn trong trường hợp

hệ thống chưa sẵn sàng hoặc đang quá tải.

® Xuất bản /thay thé: Redis hỗ trợ cơ chế pub/sub, cho phép các client đăng ký dé

nhận các tin nhắn từ một hoặc nhiều kênh Điều này hữu ích trong việc triển khai các hệ thống tin nhăn chờ sử dụng Redis.

se Bộ nhớ đệm siêu dữ liệu: Redis có thé lưu trữ siêu dữ liệu của các tin nhắn dé kiểm soát trạng thái, thời gian gửi, và thông tin liên quan khác về các tin nhắn.

e Xử lý tin nhắn bị trì hoãn: Redis có thé được sử dụng dé xử lý các message theo một thời điểm hoặc độ trễ nhất định Tin nhắn được đặt vào Redis với thời gian hết

hạn và sau đó được xử lý khi hết thời gian.

e Hang đợi ưu tiên: Redis có thể được sử dụng để triển khai các hàng đợi ưu tiên

bằng cách gán mức độ ưu tiên cho các message và xử lý theo thứ tự ưu tiên.

Phạm Trường Anh — B19DCPT011 11

Trang 29

Đồ án tốt nghiệp

CHƯƠNG 1 TONG QUAN LY THUYET

1.5 Giới thiệu về Docker 1.5.1 Khái niệm về Docker

Docker là một nền tang mã nguồn mở cho việc đóng gói, triển khai và chạy ứng

dụng trong một môi trường cô lập gọi là bộ chứa Docker cho phép tạo ra các bộ chứa,

bên trong nó là ứng dụng và tất cả các phụ thuộc, bao gồm hệ điều hành, thư viện và các công cụ cần thiết Mỗi bộ chứa hoạt động như một môi trường độc lập, không gây

ảnh hưởng đến các bộ chứa khác, giúp đảm bảo tính cô lập và đồng nhất của ứng dụng.

Từ đó hỗ trợ cải thiện quy trình phát triển ứng dụng.

1.5.2 Uu điểm và nhược điểm của Docker s® Uudiém:

- Tích hợp và triển khai dễ dàng: Docker cung cấp một hệ sinh thái công cụ

phong phú và hỗ trợ tích hợp tốt với các công cụ và dịch vụ phổ biến khác như

Kubernetes, Jenkins, Prometheus, v.v

- Bảo mat: Docker dam bảo rằng các ứng dụng đang chạy trên các bộ chứa được

hoàn toàn phân tách và cô lập với nhau dé tăng tính bảo mật, thông qua việc cung

cấp cho người dùng quyền kiểm soát va quản lý hoàn toàn luồng dữ liệu.

- Quản lý phiên bản và cung cấp dich vụ nhanh chóng: Docker cho phép tạo ra

các ảnh có thê tái sử dụng và xây dựng quá trình triển khai tự động.

- Tính nhất quán và phân tán: Docker Swarm và Kubernetes cho phép triển khai

ứng dụng trên một cụm các máy chủ phân tán.

© Nhược điểm:

- Khó khăn trong quản lý mạng: Việc quản lý mạng và kết nối giữa các bộ chứa có thê trở nên phức tạp, đặc biệt trong các môi trường phân tán lớn.

- Khó khăn khi xử lý lượng ảnh lớn hoặc ảnh kích thước lớn: Một số ảnh

Docker có thé có kích thước lớn, đặc biệt là khi chứa các phụ thuộc phức tạp.

- Không có tính tương thích đa nền tảng: Nếu một ứng dụng được thiết kế dé

chạy trong một bộ chứa Docker trên Windows, thì nó không thể chạy trên Linux

và ngược lại Đây là vấn đề khiến cho Docker không đa dụng được như môi

trường ảo.

1.5.3 Các thành phan và công cụ của Docker

1.5.3.1 Docker lmage

Docker Image là một gói đóng gói độc lập và có thé chạy của một ứng dụng hoặc một môi trường cụ thể Nó là một thư mục bất biến, chứa tất cả các thành phần cần

Phạm Trường Anh — B19DCPT011 12

Trang 30

Đồ án tốt nghiệp

CHƯƠNG 1 TONG QUAN LY THUYET

thiết dé chạy một ứng dung, bao gồm mã nguồn, thư viện, phụ thuộc, công cu hệ thống

và tệp cau hình Là một thành phan quan trọng trong Docker.

1.5.3.2 Docker Container

Docker Container là một môi trường chạy cô lập va độc lập, được tạo ra từ

Docker Image Nó là phiên bản chạy của Docker Image và chứa tất cả các thành phần cần thiết dé chạy một ứng dụng hoặc một dịch vụ cụ thể.

1.5.3.3 Docker Compose

Docker Compose là một công cụ được sử dụng để định nghĩa và quản lý ứng

dụng đa bộ chứa trong Docker Nó cho phép chúng ta xác định cấu trúc và cấu hình

của các bộ chứa trong một tệp duy nhất được gọi là "docker-compose.yml".

1.5.3.4 Docker Hub

Docker Hub là một dịch vụ lưu trữ và chia sẻ các ảnh Docker Nó là một kho lưu

trữ trực tuyến công cộng cho phép người dùng tải lên, tải xuống và chia sẻ các ảnh

1.5.3.5 Docker Engine

Docker Engine là một công cụ mã nguồn mở giúp quan lý va chạy các ứng dụng được đóng gói bằng theo các bộ chứa Docker Engine sử dụng các bộ chứa dé đóng

gói ứng dụng và các phụ thuộc.

1.5.3.6 Docker Volume

Docker Volume là một khái niệm trong Docker được sử dụng để quản lý và lưu trữ đữ liệu của các bộ chứa Docker Nó cho phép người dùng tạo và sử dụng các khối

lưu trữ riêng biệt và độc lập với các bộ chứa.

1.5.3.7 Docker Extensions

Docker Extensions cho phép người dùng sử dụng các công cụ bên thứ ba trong

Docker Desktop dé mở rộng thêm chức năng của nó.

Phạm Trường Anh — B19DCPT011 13

Trang 31

Đồ án tốt nghiệp

CHƯƠNG 1 TONG QUAN LY THUYET

@ Containers Extensions Marketplace sive ‘eeuback =;

a Docker Extensions let you use third-party tools within Docker Desktop to extend its functionality Learn more Ø

{2 Images

@& Volumes Browse Manage Build Request an extension @

WỀậ Dev Environments seta Sort

Q Search Content x Categories x Recently added x@B Docker Scout ranxaccrss

@ ‘Leeming center 99

@ Builds sets QB _Kubescape Digma Continuous Feedback

sao, ARMO + vklokun/docker-desktop-extensi Digma Inc + digmaai/digma-docker-extension:0

Secure your Kubernetes cluster and gain insight Java code runtime linter for complex applicationsinto your cluster’s security posture via an easy-to

use online dashboard.Extensions

@ Add Extensions

FEATURED Reviewed # 2.9K FEATURED Reviewed # ¡ 0k

ContainerWatch Not reviewed # 2.4K

ContainerWatch + containerwatch/containerwatch:1.0.(

Monitoring tools for Docker: metrics visualization (up to 3 days), log aggregation and filtering, and alerts Install H

Redis Enterprise Not reviewed # 1.9K

Virag Tripathi virag/redis-enterptise-docker-extension:0

Docker extension for Redis Enterprise Install ?

(115262, cov 0.00% vik 34.47 6b aval of 62.6768 Not connected o Hub Ovo |

Hinh 1 6 Giao dién cua Docker Extensions trén Docker Desktop

Với Docker Extensions, người dùng có thé kết nối các công cụ phat triển khác nhau vào quy trình phát triển và triển khai ứng dụng Các ứng dụng nay sẽ giúp nâng

cao chức năng của Docker Desktop với các tính năng gỡ lỗi, kiểm thử, bảo mật và

mạng, cùng với đó là các phần mềm tích hợp được tùy chỉnh khi sử dụng Extensions

1.5.3.8 Docker Machine

Docker Machine là một công cụ trong hệ sinh thái Docker, được sử dụng dé tạo, quản lý và điều khiển các máy ảo chạy Docker trên các nền tảng khác nhau Docker Machine giúp đơn giản hóa việc triển khai và quản lý Docker trên các máy tính cá nhân hoặc trong môi trường phát triển và thử nghiệm Nó cung cấp một CLI để tạo, khởi chạy, dừng và xóa các máy ảo Docker Với Docker Machine, người dùng có thể

tạo ra các máy ảo Docker đơn giản và nhanh chóng trên máy tính cá nhân hoặc trên

các dịch vụ đám mây như Amazon EC2 và Microsoft Azure Điều này cho phép người

dùng phát triển và chạy các ứng dụng Docker trên các môi trường khác nhau mà không

cần cài đặt Docker trực tiếp trên máy tính.

1.5.3.9 Docker Swarm

Docker Swarm là một công cụ va một tinh năng tích hop của Docker được sử

dụng để quản lý và triên khai các ứng dụng phân tán trên một cụm máy chủ Docker.

Cum Docker cho phép người dùng tạo một cụm gồm nhiều nút để chạy, quản lý các bộ chứa Kiến trúc của Docker Swarm:

Phạm Trường Anh —- B19DCPT011 14

Trang 32

Đồ án tốt nghiệp

CHƯƠNG 1 TONG QUAN LY THUYET

Kiến trúc Swarm

Nhóm đồng thuận Raft

Hệ thông lưu trữ trang thai nội bộ

Hình 1 7 Mô hình kiến trúc của Docker Swarm

Cụm bao gồm các nút Manager và các Worker Người dùng có thê khai báo trạng thái mong muốn của nhiều dịch vụ để chạy trong cụm sử dụng YAML files Nút

Manager là nút nhận các định nghĩa dịch vụ từ người dùng, nó quản lý và điều phối các nhiệm vụ đến các nút Worker Theo mặc định nút Manager cũng được coi là nút

Worker Nút Worker là nút nhận và thực thi các nhiệm vụ từ nút Manager Một nhiệm

vụ mang một bộ chứa Docker và các lệnh dé chạy bên bộ chứa.

Bang 1 5 So sánh ưu nhược điểm của Docker Swarm

Ưu điểm Nhược điểm

Dễ sử dụng khi cung cấp các CLI và

API trực quan Tinh năng giới han va phức tap

Cộng đồng sử dung chưa phát triển mạnh,

Tích hợp tốt với bộ chứa Docker vì vậy sẽ khó khăn hơn trong việc tìm tài

liệu và sự hỗ trợ

Tự động mở rộng và thu hẹp theo kích 2 ¬

thước công việc, do đó tiệt kiệm tai ` ⁄- rere

` việc quản lý sô lượng lớn các bộ chứa

1.5.4 So sánh Docker với các nền tảng khác

Docker và VM là hai trong số những công nghệ được sử dụng nhiều nhất trong

quá trình triển khai ứng dụng Điểm khác biệt chính của 2 công nghệ này nằm ở kiến

trúc của chúng.

Phạm Trường Anh —- B19DCPT011 15

Trang 33

Đồ án tốt nghiệp

CHƯƠNG 1 TONG QUAN LY THUYET

Ứng dụng 1 Ứng dụng 2 Ứng dụng 3 Bộ chứa 1

Cac file thực Cac file thực Cac file thực |

thithư viện thithư viện thi/thư viện

Phần mềm giảm sat may do Hypervisor Docker Engine |

Hình 1 8 Khác biệt giữa cấu trúc của Docker va VM

Bên trong các VM có cả hệ điều hành chủ lẫn hệ điều hành khách Hệ điều hành

khách là bất kỳ hệ điều hành nào cũng được, chăng hạn như Linux hoặc Windows,

không phụ thuộc vào hệ điều hành máy chủ.

Các bộ chứa Docker phù hợp dé chạy nhiều ứng dụng trên một Kernel (nhân hệ

điều hành) duy nhất, trong khi VM thường được sử dụng khi các ứng dụng hoặc

service cân chạy trên các hệ điêu hành khác nhau Từ khác biệt giữa câu trúc của

Docker va VM nên ta có thé đúc kết ra một sự so sánh giữa Docker và VM như sau:

Bang 1 6 So sánh giữa Docker va VM

Tóm tắt chỉ tiết phần cứng và tăng | Cải thiện việc quản lý môi trường

Mục tiêu | cường mức khai thác phan cứng | ứng dung và mang lại sự nhất quán

trên nhiều môi trường.

gk ds ce | Phần mềm giám sát VM điều phối

Công cụ Docker Engine điêu phôi giữa hệ " x & naps , P '

oo oa te a, giữa phan cứng vật ly của máy vàquản lý điêu hành và các bộ chứa Docker VM

Kiến tric | Chia sẻ tài nguyên với Kernel Chạy Kernel và hệ điều hành

Phạm Trường Anh —- B19DCPT01116

Trang 34

Đồ án tốt nghiệp

CHƯƠNG 1 TONG QUAN LY THUYET

may chu co ban riéng.

Mỗi VM có một hệ điều hành

Tính x 2 4 Lad 2 4.

Mỗi bộ chứa có thé chia sẻ hệ riêng nên mat nhiêu thời gian đề di

tương oak ` 2 ne LA ath LẠ

„ điêu hành với nhau chuyên sang một hệ điêu hànhthích khá

Mức độ cô | Cô lập tiên trình ở mức độ hệ điêu | Cô lập tiên trình ở mức độ phân

lập hành cứng.

Kích Nhẹ, tầm hàng trăm KB hoặc vài : NÓ uy

, Nang, tâm vai GB

thước MB

Có thê được tạo trong thời gian Tốn nhiều thời gian hơn dé tạo Thời gian | ngắn Thời gian khởi động tính | Thời gian khởi động tính bằng

bang giây phút

Độ khó Cơ chế sử dụng phức tạp bao gồm | Các công cụ của VM dễ sử dụng

khi sử cả các công cụ của Docker lẫn và đơn giản hơn trong khâu quản

dụng công cụ do bên thứ ba quản lý lý và vận hành.

1.6 Giới thiệu về Golang- Gin Framework

1.6.1 Giới thiệu về Golang

Golang hay còn gọi là Go là ngôn ngữ lập trình mã nguồn mở, được thiết kế tại Google bởi Robert Griesemer, Rob Pike, and Ken Thompson Go được thiết kế với

mục tiêu đơn giản, dễ đọc, hiệu suất cao và dễ sử dụng cho việc xây dựng các ứng

dụng hệ thống, phần mềm, và công cụ.

1.6.2 Cấu trúc ứng dụng web server với Golang

e Request từ client đến server ban đầu sẽ phải đi qua một thành phần gọi là

Multiplexer (tạm dịch là bộ ghép kênh).

¢ Bộ ghép kênh sẽ phân tích request (tùy vào url hay là method) và chuyên đến cho

Handler thích hợp đề xử lý tiếp.

© Các Handler sẽ là các hàm gọi Database, xử lý logic request tùy theo yêu cau và trả

lại dữ liệu cho Template dé hién thị ra (template engine như trong Node.JS là ejs hay

jade ).

Pham Trường Anh — B19DCPT011 17

Trang 35

Đồ án tốt nghiệp

CHƯƠNG 1 TONG QUAN LY THUYET

© Cuối cùng Multiplexer sẽ tra lai response cho client.

Công cụ tạo mẫu Xử lý

Templete Engine Handler

Hình 1 9 Cấu trúc ứng dung web server với Golang 1.6.3 Giới thiệu về Gin Framework

1.6.3.1 Gin Framework

Gin là một framework phát triển ứng dụng web được xây dựng bang ngôn ngữ

lập trình Go còn được gọi là Golang.

1.6.3.2 Mục đích cua Gin Framework

Gin framework là một công cụ phát triển ứng dụng web mạnh mẽ, nó tập trung vào hiệu suất và tính đơn giản, giúp phát triển ứng dụng web nhanh chóng và hiệu quả.

1.6.3.3 Tinh năng cua Gin so với các framework khác

se Tốc độ và hiệu suất cao: Gin tập trung vào tối ưu hóa hiệu suất, cho phép xử lý hàng

nghìn yêu cầu mỗi giây.

¢ Routing đơn giản và nhanh chóng: Gin cung cấp một cú pháp đơn giản và linh hoạt dé xác định các tuyên đường (routes) và xử lý các yêu cầu HTTP.

¢ Middleware hỗ trợ mạnh mẽ: Gin hỗ trợ việc thêm middleware vào quy trình xử lý

yêu cầu HTTP, cho phép thêm các chức năng như xác thực, quyền truy cập, ghi nhật

ký và nhiều tính năng khác.

° Hỗ trợ xử lý yêu cầu HTTP: Gin hỗ trợ xử lý yêu cầu HTTP bao gồm GET, POST, PUT, DELETE và nhiều loại yêu cầu khác.

® Hỗ tro validation và binding dữ liệu: Gin cung cấp công cụ dé kiểm tra và ràng buộc đữ liệu đầu vào từ yêu cầu HTTP.

Phạm Trường Anh —- B19DCPT011 18

Trang 36

Đồ án tốt nghiệp

CHƯƠNG 1 TONG QUAN LY THUYET

e Thiết kế dé sử dung: Gin được thiết kế sao cho dé sử dung và có tài liệu đầy đủ giúp

người phát triển nhanh chóng tiếp cận và làm việc với nó.

e Xử ly sự cô nhanh gon: Gin có thê năm bat và nhận ra sự cô trong một yêu cau

HTTP và khôi phục nó, vì vậy máy chủ sẽ luôn trong tìn trạng sẵn sàng.

1.6.4 Định tuyến và bên trung gian

1.6.4.1 Định tuyến trong Gin framework

Định tuyến trong Gin là quá trình ánh xạ các yêu cầu HTTP tới các xử lý cụ thể dựa trên URL và phương thức HTTP (GET, POST, PUT, DELETE, v.v ) Mỗi định tuyến trong Gin được liên kết với một hàm xử lý cụ thể, được gọi là "handler function" hoặc "action." Khi có yêu cầu tới một đường dẫn cụ thể, Gin sẽ gọi handler function

tương ứng đề xử lý yêu cầu đó.

1.6.4.2 Bên trung gian trong Gin framework

Bên trung gian trong Gin là các chức năng được thực thi trước hoặc sau khi xử lý

một yêu cầu HTTP Bên trung gian có thé thực hiện các tác vụ như xác thực, ghi nhật

ký, xử lý lỗi, và nhiều công việc khác Bên cạnh đó còn giúp tách biệt các chức năng

và tăng cường tính tái sử dụng của mã nguồn trên nhiều chức năng khác nhau của ứng

dụng web.

1.7 Tống quan về MongoDB

1.7.1 Khái niệm về MongoDB

MongoDB là một hệ quản tri cơ sở dữ liệu (DBMS- Database Management

System) thuộc loại NoSQL (Not only Structured Query Language - hệ thống không sử dụng SQL để truy vấn và tương tác với đữ liệu).

1.7.2 Cách thức hoạt động của MongoDB

MongoDB hoạt động dưới một tiến trình dịch vụ ngầm luôn mở một cổng (Công

mặc định là 27017) dé lắng nghe các yêu cầu truy vấn, thao tác từ các ứng dung gửi vào sau đó Mỗi khi có một truy vấn đữ liệu, bản ghi được ghi đệm lên bộ nhớ Ram, dé

phục vụ lượt truy van sau diễn ra nhanh hơn mà không cần phải doc từ 6 cứng Khi có

yêu cầu thêm/sửa/xóa bản ghi, dé đảm bảo hiệu suất của ứng dụng mặc định

MongoDB sẽ chưa cập nhật xuống ồ cứng ngay, mà sau 60 giây MongoDB mới thực

hiện ghi toàn bộ dữ liệu thay đôi từ RAM xuống 6 cứng.

Phạm Trường Anh — B19DCPT011 19

Trang 37

Đồ án tốt nghiệp

CHƯƠNG 1 TONG QUAN LY THUYET

1.7.3 Các khái niệm can chú ý về MongoDB

1.7.3.1 Cơ sở đữ liệu và bảng

Cơ sở dữ liệu là nơi lưu trữ chứa các tai liệu liên quan Mỗi cơ sở dữ liệu có tập hợp tệp riêng trên hệ thống tệp máy chủ Một máy chủ MongoDB đơn thường có nhiều

cơ sở đữ liệu.

Bảng trong MongoDB được gọi là "collection." Ta có thể tạo và quản lý các collection bằng các câu lệnh như “db.createCollection” và “db.collection.drop” Mỗi

collection chứa các tai liệu có cấu trúc tương tự nhau.

1.7.3.2 Tài liệu

Một bản ghi thuộc một bang thì được gọi là một tai liệu Các tai liệu lần lượt bao

gồm các trường tên và giá trị (key-value) Tài liệu là bản ghi cơ bản trong MongoDB và được biéu diễn đưới dạng BSON (Binary JSON).

1.7.3.3 Chỉ mục

Chỉ mục hỗ trợ thực hiện hiệu quả các truy vấn trong MongoDB Nếu không có chỉ mục thì MongoDB phải quét mọi tài liệu trong bảng để trả về kết quả truy vấn từ đó gây ra việc truy van mat nhiều thời gian hơn Cho nên chỉ mục sẽ là một cách dé

tăng tốc độ truy vấn đữ liệu bằng cách tạo các cấu trúc đữ liệu tối ưu hóa cho việc truy

xuất qua đó giảm tải thời gian truy van của câu lệnh.

1.7.3.4 Bảo mật

MongoDB cung cấp nhiều tính năng khác nhau, chang hạn như xác thực, kiểm soát truy cập, mã hóa dé bảo mật cho việc triển khai MongoDB Một số tính năng bảo

mật chính bao gồm: xác thực, phân quyên

® Xác thực: là quá trình kiểm tra danh tính của người dùng dé đảm bảo họ có quyền truy cập vào hệ thống MongoDB Qua đó có thể tăng cường sự bảo mật của dir liệu

trong quá trình truy cập.

® Phân quyên: là quá trình kiểm tra xem một người dùng được phép thực hiện các

hoạt động cụ thé trên cơ sở dữ liệu MongoDB MongoDB hỗ trợ phân quyền dựa trên

các vai trò và quyền hạn Ta có thể tạo các vai trò tùy chỉnh và gán quyền cho người

dùng hoặc vai trò Từ đó tạo ra một mô hình truy cập tuần tự, tránh xung đột trong quá

trình truy cập vào cơ sở dữ liệu.

1.7.3.5 Truy vấn dữ liệu và tham chiếu dữ liệu

Truy vấn đữ liệu: Truy vấn đữ liệu trong MongoDB được thực hiện bằng cách sử dụng phương thức find hoặc findOne Ta có thé xác định điều kiện truy van bang cach chi định các điều kiện trong tài liệu JSON Vi du: db.collection.find({ field: value )).

Pham Trường Anh — B19DCPT011 20

Trang 38

Đồ án tốt nghiệp

CHƯƠNG 1 TONG QUAN LY THUYET

Tham chiếu dit liệu: tham chiếu đữ liệu cho phép chi lấy ra các trường cu thé trong kết quả truy van thay vì lấy toàn bộ document Ta có thé sử dụng tham chiếu dit

liệu bằng cách sử dụng tham số thứ hai của phương thức find Ví dụ:

db.collection find({}, (fieldl: 1, field2: I }).

1.7.4 Uu điểm và nhược điểm của MongoDB

© Uuđiểm:

- Do MongoDB sử dụng lưu trữ dữ liệu dưới dạng Document JSON nên mỗi

một collection sẽ có các kích cỡ và các document khác nhau, linh hoạt trong việc

lưu trữ dữ liệu.

- Dữ liệu trong MongoDB không có sự ràng buộc lẫn nhau, không như trong RDBMS nên khi insert, xóa hay update nó không cần phải mat thời gian kiểm tra

xem có thỏa mãn các ràng buộc dữ liệu như trong RDBMS.

MongoDB rat dé mở rộng : Trong MongoDB có một khái niệm gọi là cluster

-cụm các node chứa dir liệu giao tiép với nhau, khi muôn mở rộng hệ thông ta chỉcân thêm một node với vào cluster.

- Trường dữ liệu “id” luôn được tự động đánh chỉ mục (index) dé tốc độ truy

vấn thông tin đạt hiệu suất cao nhất.

- Khi có một truy vấn đữ liệu, bản ghi được cached lên bộ nhớ Ram, dé phuc vu

lượt truy van sau diễn ra nhanh hơn mà không cần phải đọc tir 6 cứng.

- Tốn bộ nhớ do dé liệu lưu dưới dang key-value, các collection chỉ khác về

value do đó key sẽ bị lặp lại, từ đó dé dẫn đến trường hợp thừa dữ liệu.

Phạm Trường Anh —- B19DCPT011 21

Trang 39

Đồ án tốt nghiệp

CHƯƠNG 1 TONG QUAN LY THUYET

- Khi làm việc với bản ghi, MongoDB sẽ chưa cập nhật ngay xuống 6 cứng, ma sau 60 giây MongoDB mới thực hiện ghi toàn bộ dữ liệu thay đôi từ RAM xuống

6 cứng điêù này sẽ là nhược điểm vì sẽ có nguy cơ bị mat dữ liệu khi xảy ra các

tình huống như mất điện

1.7.5 So sảnh MongoDB với các hệ quản trị cơ sở dữ liệu khác

Bang 1 7 So sánh MongoDB với các hệ quan trị cơ sở dit liệu khác

MongoDB RDBMS (Relational database management system)

MongoDB là một hệ quan tri co

sở dữ liệu không SQL (NoSQL)

Hệ quản trị cơ sở dữ liệu SQL, sử

dụng mô hình dữ liệu có câu trúc với

ae và sử dung mô hình lưu trữ dữ các bảng, cột và quan hệ giữa chúng.

l liệu dạng JSON-like gọi làBSON (Binary JSON).

Sử dụng ngôn ngữ truy van déi_ | Sử dung SQL (Structured Query

Ngôn ngữ | tượng (query language) dựa trên | Language) cho việc truy vấn và truy van | JSON, được gọi là MỘL tương tác với cơ sở dữ liệu.

(MongoDB Query Language).

Tích hợp Thường được sử dụng trong các | Thường được sử dụng trong các ứng

ma ứng dung web và di động, cũng | dụng kinh doanh, hệ thông quan lyVỚI Ứng „ , +" Se _ a

dung nhu cac du án phát triển nhanh đữ liệu lớn, và các ứng dụng đòi hỏi

° va yêu câu linh hoạt vê dữ liệu | tính toàn ven dữ liệu cao.

Tính nhất | Thường không hỗ tro tính toàn | Các hệ thống SQL cung cấp tính

quan va ven dir liệu bang cách mặc định, | toàn ven dữ liệu mạnh mẽ, với hỗ trợ

tính toàn | vả việc quản lý các quan hệ giữa | cho khóa ngoại và các ràng buộc dữ

vẹn dữ các tài liệu là trách nhiệm của liệu.

liệu ứng dụng.

Hiệu suât

Hiệu suất thường tốt cho các tải

làm việc nhanh và sự mở rộng

dễ dàng Tuy nhiên, hiệu suất có

thé bị ảnh hưởng nếu không

được cấu hình đúng hoặc nếu dữ liệu không được thiết kế đúng.

Các hệ thống SQL thường có hiệu

suất 6n định cho các truy vấn phức

tạp và thời gian thực, nhưng có thể

cần phải được tối ưu hóa cho các tải

làm việc nhanh.

Khả năng Dễ dàng mở rộng bằng cách Mở rộng thường phức tạp hơn và yêu

Phạm Trường Anh — B19DCPT011 22

Trang 40

Đồ án tốt nghiệp

CHƯƠNG 1 TONG QUAN LY THUYETmởrộng | thêm các nút vào mang cluster | câu sự quản lý kỹ thuật nhiêu hon.

Tổng kết lại, ta sử dụng MongoDB trong trường hợp:

® Nếu website có tính chất thêm dữ liệu cao vì mặc định MongoDB có sẵn cơ chế ghi

với tốc độ cao va an toàn.

© Website có nhiều dit liệu quá, giả sử website có đến 10 triệu bản ghi thi các hệ quản

trị cơ sở dit liệu khác khó có thé đáp ứng được nhu cầu như vậy, nhưng MongoDB có

khả năng tìm kiến thông tin liên quan nhanh chóng nên trường hợp này MongoDB sẽ

là phương án phù hợp nhất.

1.7.6 Ủng dụng của MongoDB trong thực tế

1.7.6.1 Ung dụng của MongoDB trong thương mại điện tử

Ứng dụng e-commerce là một trong những lĩnh vực phô biến sử dụng MongoDB.

Vi dụ:

® Mua sắm dif liệu giỏ hàng: Giỏ hàng cung cấp cho người dùng khả năng chọn và mua các mặt hàng từ danh mục sản phẩm.

® Dữ liệu khách hàng: Dữ liệu khách hang là một trong những phan quan trọng nhất của mỗi thương mại điện tử Nó chứa dữ liệu nhạy cảm, nó chứa rất nhiều dit liệu liên

quan đến đơn đặt hàng của khách hàng.

® Giao dịch thanh toán: Trong Grandnode, không lưu trữ dữ liệu thẻ tín dụng nhạy

cảm, các nhà cung cấp thanh toán chịu trách nhiệm cho nó.

1.7.6.2 Ứng dụng của MongoDB trong hệ thống mạng xã hội

® Facebook: Facebook sử dụng MongoDB đề lưu trữ hồ sơ người dùng, bài viết, hình

ảnh và video.

¢ Twitter: Twitter sử dụng MongoDB dé lưu trữ dữ liệu về tweet, người ding theo dõi và được theo đõi, cũng như tin nhắn riêng tư.

1.8 Tổng quan về NuxtJS

Trước khi nói về NuxtJS thì ta sẽ phải hiểu về VueJS Vì NuxtJS được xây dựng

trên nền tảng của Vue1S.

© VueJS là một framework JavaScript mã nguồn mở được sử dụng dé xây dựng giao

diện người dùng (UI - User Interface) động, tương tác trên ứng dụng web.

¢ VueJS tập trung vào việc tạo ra một giao diện người dùng linh hoạt và dé quan lý, cho phép phân chia ứng dụng thành các thành phần (components) nhỏ, tái sử dụng và

tương tác với dữ liệu một cách hiệu quả.

Phạm Trường Anh — B19DCPT011 23

Ngày đăng: 28/03/2024, 11:06

Xem thêm:

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

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

TÀI LIỆU LIÊN QUAN