1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Đồ án tốt nghiệp xây dựng website sản phẩm điện tử sử dụng mô hình microservice

161 3 0

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

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 161
Dung lượng 8,02 MB

Nội dung

Sản phẩm hoàn thành phảilà một ứng dụng Web được xây dựng có đầy đủ các thành phần của mô hìnhMicroservice và đáp ứng thêm các yêu cầu về ứng dụng mua, lựa chọn sản phẩm yêuthích, t

Trang 1

MINH KHOA ĐÀO TẠO CHẤT LƯỢNG CAO

ĐỒ ÁN TỐT NGHIỆP

XÂY DỰNG WEBSITE SẢN PHẨM ĐIỆN TỬ SỬ DỤNG

MÔ HÌNH MICROSERVICE

SVTH : VÕ MINH HUY MSSV : 16110093 SVTH : NGUYỄN HỮU TOÀN MSSV : 16110226

Khoá: 16 Ngành: CÔNG NGHỆ THÔNG TIN GVHD: TS LÊ VĨNH THỊNH

Trang 3

MINH KHOA ĐÀO TẠO CHẤT LƯỢNG CAO

ĐỒ ÁN TỐT NGHIỆP

XÂY DỰNG WEBSITE SẢN PHẨM ĐIỆN TỬ SỬ DỤNG

MÔ HÌNH MICROSERVICE

SVTH : VÕ MINH HUY MSSV : 16110093 SVTH : NGUYỄN HỮU TOÀN MSSV : 16110226

Khoá: 16 Ngành: CÔNG NGHỆ THÔNG TIN GVHD: TS LÊ VĨNH THỊNH

Trang 4

Tp Hồ Chí Minh, ngày tháng năm 202

Trang 5

CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM

Độc lập – Tự do – Hạnh phúc

*******

Tp Hồ Chí Minh, ngày 01 tháng 07 năm 2020

NHIỆM VỤ KHÓA LUẬN TỐT NGHIỆP

Họ và tên sinh viên: Võ Minh Huy

Họ và tên sinh viên:Nguyễn Hữu Toàn

MSSV: 16110093

MSSV: 16110226

Giảng viên hướng dẫn: TS Lê Vĩnh Thịnh ĐT: 0938 252 222

Ngày nhận đề tài: / /202 Ngày nộp đề tài: / /202

1 Tên đề tài: XÂY DỰNG WEBSITE SẢN PHẨM ĐIỆN TỬ SỬ DỤNG MÔ HÌNHMICROSERVICE

2 Các số liệu, tài liệu ban đầu: Không có

3 Nội dung thực hiện đề tài:

- Tìm hiểu về React Js, Node Js

- Tìm hiểu Microservice

- Xây dựng website demo

TRƯỞNG NGÀNH

Nguyễn Đăng Quang

GIẢNG VIÊN HƯỚNG DẪN

Lê Vĩnh Thịnh

Trang 6

CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM

Độc lập – Tự do – Hạnh phúc

*******

PHIẾU NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN

Họ và tên Sinh viên 1: Võ Minh Huy MSSV 1: 16110093

Họ và tên Sinh viên 2: Nguyễn Hữu Toàn MSSV 2: 16110226

Ngành: Công nghệ Thông tin

Tên đề tài: XÂY DỰNG WEBSITE BÁN SẢN PHẨM ĐIỆN TỬ SỬ DỤNG MÔ

Trang 7

Tp Hồ Chí Minh, ngày tháng năm 202

Giáo viên hướng dẫn

(Ký & ghi rõ họ tên)

CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM

Độc lập – Tự do – Hạnh phúc

*******

PHIẾU NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN

Họ và tên Sinh viên 1: Võ Minh Huy MSSV 1: 16110093

Họ và tên Sinh viên 2: Nguyễn Hữu Toàn MSSV 2: 16110226

Ngành: Công nghệ Thông tin

Tên đề tài: XÂY DỰNG WEBSITE BÁN SẢN PHẨM ĐIỆN TỬ SỬ DỤNG MÔ

Trang 9

Lời đầu tiên, cho phép nhóm em được gửi lời cảm ơn chân thành đến thầy LêVĩnh Thịnh, người đã phụ trách hướng dẫn nhóm chúng em trong việc thực hiện vàhoàn thành bài báo cáo một cách tốt và hiệu quả nhất Những sự chỉ dạy, nhật xét, đónggóp ý kiến từ thầy đã góp phần rất quan trọng trong việc giúp chúng em hoàn hành đềtài một cách hoàn thiện nhất.

Cảm ơn các thầy cô trong khoa Công Nghệ Thông Tin đã luôn nhiệt tình, cốnghiến, tận tình giải đáp các thắc mắc của chúng em Bên cạnh đó, chúng em xin đượccảm ơn các bạn cùng khóa, các anh chị khóa trên đã không ngần ngại chia sẻ các thôngtin, kinh nghiệm bổ ích giúp chúng em hoàn thiện hơn đề tài của mình

Báo cáo được thực hiện trong một khoảng thời gian có hạn, cùng với những hạnchế về mặt kiến thức nên việc sai sót là điều không thể tránh khỏi trong quá trình thựchiện Chúng em kính mong nhận được những lời nhận xét, ý kiến đóng góp quý báo từquý Thầy Cô để chúng em có thêm kinh nghiệm và hoàn thành tốt hơn những đề tài saunày

Chúng em xin chân thành cảm ơn !

Trang 10

CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM

Độc lập – Tự do – Hạnh phúc

*******

ĐỀ CƯƠNG LUẬN VĂN TỐT NGHIỆP

Họ và tên Sinh viên 1: Võ Minh Huy MSSV 1: 16110093

Họ và tên Sinh viên 2: Nguyễn Hữu Toàn MSSV 2: 16110226

Ngành: Công nghệ Thông tin

Thời gian làm tiểu luận: từ: / /2020 đến: / /202

Tên đề tài: XÂY DỰNG WEBSITE BÁN SẢN PHẨM ĐIỆN TỬ SỬ DỤNG MÔ HÌNH MICROSERVICE

GV hướng dẫn: TS LÊ VĨNH THỊNH

Nhiệm vụ của luận văn:

1 Nghiên cứu về React JS

2 Nghiên cứu về cách viết REST API và cách ứng dụng

3 Sử dụng thư viện để tạo Model cho dữ liệu trong MySQL

4 Dùng Angular để làm front-end theo kiểu Single page application

5 Kiểm thử

Trang 11

MỤC LỤC

LỜI CẢM ƠN 9

ĐỀ CƯƠNG LUẬN VĂN TỐT NGHIỆP 10

MỤC LỤC 11

MỤC LỤC HÌNH ẢNH 14

MỤC LỤC BẢNG 16

CHƯƠNG 1: TỔNG QUAN 19

1.1 Tính cấp thiết của đề tài 19

1.2 Mục đích đề tài 19

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

1.4 Kết quả dự kiến đạt được 21

CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 22

2.1 Tổng quan về Microservice 22

2.1.1 Khái niệm Microservice Structure 22

2.1.2.Cách thức Microservice vận hành 23

2.1.3 Ưu nhược điểm của Microservice 23

2.1.4.Nguyên tắc xây dựng kiến trúc Microservice 25

2.1.5.Duy trì tính nhất quán của dữ liệu khi sử dụng kiến trúc Microservice 26

2.2 NodeJS 27

2.2.1 Tổng quan 27

2.2.2 Nguyên tắc hoạt động 28

2.2.4 Nhược điểm 30

2.3 Cơ sở dữ liệu MySQL 31

2.3.1.Định nghĩa 31

2.3.2.MySQL Server 31

2.3.3.MySQL Client 31

Trang 12

2.3.4.Cách thức hoạt động 32

2.4 Docker 32

2.4.1.Khái niệm docker 32

2.4.2.Khái niệm container 32

2.4.3.Ưu điểm của Docker 33

2.4.4.Các khái niệm liên quan 33

2.4.5 Quy trình hoạt động 34

CHƯƠNG 3: KHẢO SÁT HIỆN TRẠNG VÀ XÁC ĐỊNH YÊU CẦU 36

3.1 Khảo sát hiện trạng 36

3.1.1.Trang https://www.thegioididong.com/ 37

3.1.2 Trang https://dienmaythienhoa.vn/ 39

3.2 Xác định yêu cầu 40

3.3 Đặc tả chức năng 42

3.3.1.Bảng requirement cho use case 42

3.3.2.Liệt kê các actor 46

3.3.3.Bảng use case 47

CHƯƠNG 4: THIẾT KẾ ỨNG DỤNG 106

4.1 Thiết kế dữ liệu 106

4.1.1.Sơ đồ thiết kế dữ liệu 106

4.1.2.Mô tả sở đồ thiết kế dữ liệu 106

4.2 Sơ đồ tuần tự (Sequence Diagram) 106

4.2.1.Sơ đồ tìm kiếm sản phẩm “Search Product” 106

4.2.2 Sơ đồ lọc sản phẩm “Filter Product” 109

4.2.3 Sơ đồ bình luận và đánh giá “Comment and ratings” 113

4.2.4 Sơ đồ quản lý giỏ hàng 115

4.2.5 Sơ đồ đăng ký tài khoản “Register an account” 116

4.2.6 Sơ đồ đăng nhập vào tài khoản “Login” 116

4.2.7 Sơ đồ quản lý thông tin tài khoản 117

Trang 13

4.2.10 Sơ đồ quản lý danh mục “Manage Category” 121

4.2.12 Sơ đồ quản lý User “Manage User” 124

4.2.13 Sơ đồ quản lý đơn hàng “Manage Order” 126

4.2.14 Sơ đồ quản lý địa chí giao hàng “Manage Address Shipping” 129

4.2.15 Sơ đồ đăng xuất “Logout an account” 131

CHƯƠNG 5: GIAO DIỆN VÀ KIỂM THỬ 132

5.1 Giao diện 132

5.1.1 Giao diện khách hàng 132

5.1.2 Giao diện admin 138

5.2 Kiểm thử 146

5.2.1 Chức năng đăng ký 146

5.2.2 Chức năng đăng nhập 148

5.2.3 Chức năng đổi mật khẩu 149

5.2.4 Chức năng tìm kiếm sản phẩm 150

5.2.5 Chức năng thanh toán 151

CHƯƠNG 6: KẾT LUẬN 154

6.1 Kết quả đạt được 154

6.2 Ưu điểm và nhược điểm 154

6.2.1 Ưu điểm 154

6.2.2 Nhược điểm 154

6.2.3 Khó khăn 155

6.3 Kinh nghiệm đạt được 155

6.4 Hướng phát triển trong tương lai 155

TÀI LIỆU THAM KHẢO 156

Trang 14

MỤC LỤC HÌNH ẢNH

Hình 1: Mô hình kiến trúc Microservice 22

Hình 2: Saga Pattern 26

Hình 3: Kiến trúc MySQL 32

Hình 4: Kiến trúc Docker 35

Hình 6: Giao diện thegioididong.com 37

Hình 7: Giao diện trang Điện máy Thiên Hòa 39

Hình 8: Sequence tìm sản phẩm theo tên 106

Hình 9: Sequence tìm sản phẩm theo danh mục 107

Hình 10: Sequence tìm sản phẩm theo hãng 108

Hình 11: Sequence lọc sản phẩm theo danh mục 109

Hình 12: Sequence lọc sản phẩm theo giá 111

Hình 13: Sequence lọc sản phẩm theo đánh giá 112

Hình 14: Sequence thêm bình luận và đánh giá 113

Hình 15: Sequence sửa bình luận và đánh giá 114

Hình 16: Sequence xem sản phẩm trong giỏ hàng 115

Hình 17: Sequence đăng ký tài khoản 116

Hình 18: Sequence đăng nhập tài khoản 116

Hình 19: Sequence xem thông tin tài khoản 117

Hình 20: Sequence sửa thông tin tài khoản 117

Hình 21: Sequence đổi mật khẩu 118

Hình 22: Sequence xem thông tin đơn hàng 118

Hình 23: Sequence xem chi tiết đơn hàng 119

Hình 24: Sequence xóa đơn hàng 120

Hình 25: Sequence thêm danh mục 121

Hình 26: Sequence sửa thông tin danh mục 122

Hình 27: Sequence xóa danh mục 123

Hình 28: Sequence xem danh mục 123

Hình 29: Sơ đồ thêm user 124

Hình 30: Sequence sửa user 124

Hình 31: Sequence xóa user 125

Hình 32: Sequence xem user 126

Hình 33: Sequence xem đơn hàng 126

Hình 34: Sequence sửa đơn hàng 127

Hình 35: Sequence xóa đơn hàng 128

Trang 15

Hình 36: Sequence sửa trạng thái đơn hàng 129

Hình 37: Sequence thêm địa chỉ giao hàng 129

Hình 38: Sơ đồ sửa địa chỉ giao hàng 130

Hình 39: Sequence xóa địa chỉ giao hàng 130

Hình 40: Sequence xem địa chỉ giao hàng 131

Hình 41: Sơ đồ đăng xuất 131

Trang 16

MỤC LỤC BẢNG

Bảng 1: Bảng Requirement cho user 46

Bảng 2: Use case tìm sản phẩm theo tên 47

Bảng 4: Use case tìm sản phẩm theo danh mục 48

Bảng 5: Use case tìm sản phẩm theo giá 49

Bảng 6: Use case tìm sản phẩm theo hãng 50

Bảng 7: Use case lọc sản phẩm theo danh mục 51

Bảng 8: Use case lọc sản phẩm theo hãng 52

Bảng 9: Use case lọc sản phẩm theo giá tiền 53

Bảng 10: Use case lọc sản phẩm theo số sao đánh giá 54

Bảng 11: Use case lọc sản phẩm đang được giảm giá 55

Bảng 12: Use case xem thông tin chi tiết sản phẩm 56

Bảng 13: Use case xem bình luận và đánh giá 57

Bảng 14: Use case thêm bình l uận và đánh giá 58

Bảng 15: Use case sửa bình luận và đánh giá 59

Bảng 16: Use case xem sản phẩm trong giỏ hàng 60

Bảng 17: Use case Thêm sản phẩm vào giỏ hàng 61

Bảng 18: Use case Cập nhật giỏ hàng 63

Bảng 19: Use case Xóa sản phẩm trong giỏ hàng 65

Bảng 20: Use case Đăng ký 66

Bảng 21: Use case đăng nhập 68

Bảng 22: Use case đăng nhập bằng Facebook 69

Bảng 23: Use case đăng nhập bằng Google 70

Bảng 24: Use case xem thông tin tài khoản 71

Bảng 25: Use case sửa thông tin cá nhân 72

Bảng 26: Use case đổi mật khẩu 73

Trang 17

Bảng 27: Use case thanh toán bằng tiền mặt 74

Bảng 28: Use case thanh toán bằng PayPal 75

Bảng 29: Use case xem thông tin đơn hàng 76

Bảng 30: Use case xóa đơn hàng 77

Bảng 31: Use case xem sản phẩm yêu thích 78

Bảng 32: Use case xóa sản phẩm yêu thích 79

Bảng 33: Use case thêm sản phẩm 80

Bảng 34: Use case sửa thông tin sản phẩm 81

Bảng 35: Use case xóa sản phẩm 82

Bảng 36: Use case xem danh sách sản phẩm 83

Bảng 37: Use case thêm danh mục sản phẩm 84

Bảng 38: Use case sửa danh mục 85

Bảng 39: Use case xóa danh mục 86

Bảng 40: Use case xem danh mục 87

Bảng 41: Use case thêm hãng 88

Bảng 42: Use case sửa thông tin hãng 89

Bảng 43: Use case xóa hãng 90

Bảng 44: Use case xem hãng 91

Bảng 45: Use case thêm User 92

Bảng 46: Use case sửa user 93

Bảng 47: Use case xóa user 95

Bảng 48: Use case xem user 95

Bảng 49: Use case xem đơn hàng 96

Bảng 50: Use case xem thông tin chi tiết đơn hàng 97

Bảng 51: Use case sửa trạng thái đơn hàng 98

Bảng 52: Use case xóa đơn hàng 99

Bảng 53: Use case thêm địa chỉ giao hàng 100

Trang 18

Bảng 54: Use case sửa địa chỉ giao hàng 101

Bảng 55: Use case xóa địa chỉ giao hàng 102

Bảng 56: Use case xem địa chỉ giao hàng 103

Bảng 57: Use case đăng xuất 105

Bảng 58: Bảng mô tả kiểm thử chức năng đăng ký 147

Bảng 59: Bảng kiểm thử chức năng đăng nhập 148

Bảng 60: Bảng kiểm thử chức năng đổi mật khẩu 149

Bảng 61: Bảng kiểm thử chức năng tìm kiếm sản phẩm 151

Bảng 62: Bảng kiểm thử chức năng thanh toán 151

Trang 19

CHƯƠNG 1: TỔNG QUAN

1.1 Tính cấp thiết của đề tài

Việt Nam đang dần bước vào thời đại số hóa Các mạng 4G, 5G đang dần phủ sóng khắp mọi miền đất nước Số lượng người dùng di động ngày càng nhiều Do đó, việc mua sắm qua mạng trở thành nhu cầu và xu hướng trong thời đại mới với nhiều tiện ích: Rẻ, ít tốn thời gian, được giao tận nhà, tiện lợi Vì vậy, với mong muốn có thể theo

đà xu hướng này, chúng em quyết định xây dựng 1 web bán hàng online, mà cụ thể là bán các thiết bị điện tử để vừa thử sức bản thân, vừa rèn luyện kỹ năng code cho sự nghiệp sau này

1.2 Mục đích đề tài

Đề tài “: XÂY DỰNG WEBSITE BÁN SẢN PHẨM ĐIỆN TỬ SỬ DỤNG MÔ HÌNHMICROSERVICE” đặt ra 2 vấn đề trọng tâm về mục tiêu mà sinh viên nghiên cứu cầnthực hiện được bao gồm:

Vấn đề đầu tiên đưa ra về yếu tố lý thuyết, sinh viên thực hiện cần có kết quả nghiêncứu chuyên môn và hiểu được tổng quan và khả năng ứng dụng của từng thành phầntrong mô hình Microservice nói chung Với từng thành phần, hiểu và xác định đượccác đặc trưng về nguyên tắc hoạt động, thành phần hoặc mô hình Thư viện được xâydựng dựa trên ngôn ngữ lập trình Javascript đạt được sự phổ biến đến lập trình viênnhư: NodeJS – xây dựng ứng dụng phía người dùng Song song với việc hiểu về cácthành phần tiêu biểu của Microservice sinh viên cũng cần phải có thêm tìm hiểu về cácthư viện, mã nguồn module giúp ích trong quá trình xây dựng ứng dụng Web thực tế

Trang 20

Vấn đề thứ hai của đề tài đặt ra về ứng dụng mô hình Microservice vào xây dựng mộtsản phẩm cụ thể, ở đây là “Website bán sản phẩm điện tử” Sản phẩm hoàn thành phải

là một ứng dụng Web được xây dựng có đầy đủ các thành phần của mô hìnhMicroservice và đáp ứng thêm các yêu cầu về ứng dụng mua, lựa chọn sản phẩm yêuthích, tracking sản phẩm trong quá trình vận chuyển và một số tính năng khác có thể ápdụng trong thực tế cũng như khả năng nâng cấp hoặc tiếp tục phát triển tính năng trongtương lai

Trang 21

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

Đề tài được thực hiện nghiên cứu xoay quanh hai nhóm đối tượng trọng tâm bao gồm: nhóm đối tượng về kiến thức công nghệ và nhóm đối tượng có nhu cầu mua, sử dụng các tựa sản phẩm mà họ yêu thích

Trong đó nhóm đối tượng về kiến thức công nghệ bao gồm 2 đối tượng nghiên cứu bắt buộc là: Mã nguồn mở NodeJS, mô hình Microservice, Docker Kết hợp thêm trong nhóm đối tượng nghiên cứu về kiến thức công nghệ là một số thư viện Javascript có giátrị ứng dụng như JWT (Json Web Token), charts cũng cần được nghiên cứu cho các ứng dụng về doanh thu cũng như mức độ ưa thích của sản phẩm

Nhóm đối tượng có nhu cầu mua, nghiên cứu về sản phẩm điện tử và các sản phẩm hỗ trợ đi kèm, tìm hiểu về nghiên cứu hành vi mua hàng của khách để tăng doanh thu bán hàng

Phạm vi nghiên cứu đề ra ở mức độ tổng quát, người thực hiện đề tài hiểu được các kiến thức chung của nội dung nghiên cứu và áp dụng được từng nội dung kiến thức vàosản phẩm thực tế, không đặt nặng các lý thuyết nặng nề không mang tính ứng dụng

1.4 Kết quả dự kiến đạt được

– Hiểu được các kiến thức về Microservice, Restful API

– Xây dựng hoàn thành một website bán sản phẩm điện tử online với những kiến thức đã tìm hiểu

Trang 22

CHƯƠNG 2: CƠ SỞ LÝ THUYẾT

2.1 Tổng quan về Microservice

2.1.1 Khái niệm Microservice Structure

Trang 23

Nền tảng cả kiến trúc microservices là xây dựng một ứng dụng mà ứng dụng này là tổng hợp của nhiều services nhỏ và độc lập có thể chạy riêng biệt, phát triển và triển khai độc lập.

Kiến trúc Microservice là một tập hợp các service kết nối nhỏ hơn

Hình 1: Mô hình kiến trúc Microservice

Trang 24

– Mỗi vùng chức năng giờ được thực thị bởi một dịch vụ nhỏ

– Ứng dụng web cũng có thể chia nhỏ hơn chuyên cho từng đối tượng người dùng(khách hàng/admin)

2.1.3 Ưu nhược điểm của Microservice

+ Cho phép các services được phát triển bởi những team khác nhau Mỗi team

có thể phát triển, thử nghiệm, triển khai và mở rộng quy mô dịch vụ của

mình một cách độc lập với tất cả các team khác

– Giảm thiểu rủi ro: Nếu có lỗi trong một service thì chỉ có service đó bị ảnh

hưởng Các services khác sẽ tiếp tục xử lý các yêu cầu Trong khi đó, một thành

Trang 25

phần hoạt động sai của kiến trúc một khối có thể làm ảnh hưởng toàn bộ hệ

+ Cần implement việc communication giữa các inter-services

+ Handle partial failure là rất phức tạp vì một luồng xử lý cần đi qua nhiều

services

+ Việc thực hiện các requests trải rộng trên nhiều services khó khăn hơn, điều này cũng đòi hỏi sự phối hợp cẩn thận giữa các teams

+ Khó khăn trong việc đảm bảo toàn vẹn CSDL nếu triển khai theo kiến trúc

cơ sở dữ liệu phân vùng

+ Triển khai và quản lý microservices nếu làm thủ công theo cách đã làm với ứng dụng một khối phức tạp hơn rất nhiều

+ Phải xử lý sự cố khi kết nối chậm, lỗi khi thông điệp không gửi được hoặc thông điệp gửi đến nhiều đích đến vào các thời điểm khác nhau

Trang 26

2.1.4 Nguyên tắc xây dựng kiến trúc Microservice

1) Single Responsibility Principle (SRP): một service với phạm vi và chức năng giới hạn, tập trung vào một nhiệm vụ giúp quá trình phát triển và triển khai dịch

vụ trở nên nhanh chóng hơn

2) Trong quá trình thiết kế, ta nên xác định và giới hạn các services theo chức năngnghiệp vụ thực tế

3) Đảm bảo microservices có thể phát triển và triển khai độc lập

4) Mục tiêu của thiết kế là phạm vi của microservices phục vụ một nghiệp vụ chứ không chỉ đơn giản làm các dịch vụ nhỏ hơn Kích thước hợp lý của một service

là kích thước đủ để đáp ứng yêu cầu của một chức năng trong hệ thống

5) Khác với services trong SOA, một microservice không nên có quá nhiều hàm hay chức năng hỗ trợ xung quanh và định dạng thông báo/ gửi tin (messaging) đơn giản

Trang 27

2.1.5 Duy trì tính nhất quán của dữ liệu khi sử dụng kiến trúc Microservice

Trang 28

Để duy trì tính nhất quán của dữ liệu khi xây dựng 1 kiến trúc Microservice, ta nên sử dụng Saga pattern thay vì 2 phase-commit/distributed transactions

Ý tưởng của Saga patteren:

Một service publishes một event khi dữ liệu của nó thay đổi

Các services khác consume event đó và cập nhật dữ liệu của chúng

Nếu một transaction thất bại, thì saga sẽ thực hiện một loạt các transactions để hoàn táccác transactions trước đó bằng việc sử dụng là Event Sourcing và Transaction Log

Tailing

Hình 2: Saga Pattern

Trang 29

2.2 NodeJS

2.2.1 Tổng quan

NodeJS là một framework môi trường hỗ trợ dịch và thực thi chương trình được viết bằng JavaScript mà không cần dùng tới trình duyệt

NodeJS ra đời nhờ những lập trình viên đầu tiên của JavaScript mở rộng nó từ một

ngôn ngữ chỉ có thể thực thi trên trình duyệt thành ngôn ngữ có thể thực thi độc lập trên máy tính

NodeJS cũng giống với trình duyệt hiện nay, được chạy dựa trên V8 JavaScript engine

- công cụ giúp trình duyệt dịch và thực thi JavaScript Ngoài ra, NodeJS cung cấp một

số thư viện không có sẵn trong V8 engine

• Một số khái niệm tiêu biểu trong NodeJS

- Event: mỗi một thao tác, yêu cầu (request) đến server đều được NodeJS xem là một sự kiện (event)

- Event Queue: hàng đợi sự kiện là nơi tất cả các sự kiện (event) đã đi vào sẽ lần lượt được xử lý theo cơ chế FIFO, tức là các sự kiện đến server trước sẽ được NodeJS

xử lý trước, các sự kiện đến server sau sẽ được xử lý sau

- Callbacks: là các thao tác, các xử lý, các hàm sẽ được thực hiện sau khi đã thực thi hoàn thành một hàm định nghĩa callback Việc sử dụng callback giúp cho lập trình viên quản lý các vấn đề về

- Message: nội dung thông báo tương ứng với từng callback

Trang 30

- Blocking I/O: là cơ chế được ứng dụng trong phần lớn các ngôn ngữ server-side,

cơ chế này quản lý các request đến server và lần lượt cho thực hiện yêu cầu của requesttiếp theo khi request đang xử lý đã hoàn thành Từ đây dễ thấy được rằng nếu các yêu cầu xử lý của request đến sớm tiêu tốn nhiều thời gian thì các request đến sau bắt buộc phải đợi toàn bộ thời gian xử lý này Với NodeJS việc quản lý các request yêu cầu

được thay thế bằng cơ chế xử lý Non-Blocking I/O để giải quyết vấn đề thời gian chờ nêu trên

- Thread Pool: là một chương trình viết bằng ngôn ngữ C++ được tích hợp bên trong NodeJS, chương trình này cho phép xử lý đa luồng Đây chính là môi trường xử

lý chính cho tất cả tác vụ được server NodeJS xử lý và các tác vụ này cũng được xử lý trên các luồng khác nhau

- Event Loop: là một vòng lặp vô tận, nó chuyển các yêu cầu đã nhận sang ThreadPool, đồng thời mỗi một yêu cầu cũng được tự động đăng ký một Callback, khi yêu cầuđược xử lý xong hàm Callback tương ứng sẽ được thực thi

2.2.2 Nguyên tắc hoạt động

Nguyên tắc hoạt động quan trọng nhất tạo nên khả năng xử lý với tốc độ cao của

NodeJS đến từ việc xử lý Non-Blocking Quá trình xử lý này cho phép NodeJS nhận và

xử lý đồng thời nhiều tác vụ thông qua duy nhất một luồng xử lý (Single thread) thay

vì tạo nhiều luồng xử lý tương ứng với các request ở các ngôn ngữ Server truyền thống

đã có Các tác vụ được nhận vào luồng xử lý nếu không được quy định tuần tự thực hiện (phải hoàn thành công việc A trước rồi sau đó bắt đầu thực hiện công việc công việc B) sẽ được cho phép truy cập tài nguyên song song lẫn nhau mà không bị khóa lại (Blocking) đợi tác vụ trước đó Từ đó mà những tác vụ diễn ra không liên quan đến nhau có thể xử lý song song độc lập với nhau, rút ngắn lượng lớn thời gian xử lý cho server NodeJS

Trang 31

Kết hợp với xử lý quá trình xử lý Non-Blocking là Callbacks và Event Loop giúp cho NodeJS quản lý tất cả các tác vụ được được thực thi Cụ thể khi một tác vụ được xử lý Non-Blocking hoàn thành sẽ gửi về 1 Callback với ý nghĩa thông báo với hệ thống

rằng tác vụ đã thực hiện xong hoàn toàn Trước đó khi các tác vụ này được định nghĩa thì callback của từng tác vụ cũng đã được đưa vào Event Table để chờ các sự kiện

(Event) cho phép thực thi Khi Event mong chờ của tác vụ được diễn ra cũng là lúc các message của tác vụ đang chờ trong Event Table được di chuyển sang Event Queue chờ thực hiện theo nguyên tắc “đến trước thực hiện trước” (First In First Out - FIFO) Songsong với quá trình này là quá trình Event Loop thực hiện một vòng lặp vô tận kiểm tra

có message nào đang đợi trong Event Queue hay không và Thread Pool có đang thực hiện tác vụ nào hay không, nếu đồng thời có message đang chờ và Thread Pool có thể tiếp nhận tác vụ Event Loop sẽ đưa phần tử đầu tiên của Queue vào Thread Pool xử lý

và gửi về callback khi tất cả các message quy định callback tương ứng đã hoàn thành Nếu không còn message nào trong Event Queue vòng lặp Event Loop vẫn luôn luôn được chạy để kiểm tra và xử lý ngay khi có tác vụ chờ

Tổng thể với sự kết hợp giữa các đặc trưng tiêu biểu: Non-Blocking I/O, Callbacks, Event Loop một server NodeJS xử lý bất đồng bộ (asynchronous) các đồng bộ các tác

vụ được yêu cầu và trả về kết quả ngay khi các tác vụ được hoàn thành thông qua

callback Còn quá trình xử lý và phản hồi callback này được xử lý với sự điều phối, quản lý của vòng lặp vô tận xử lý sự kiện Event Loop lấy từng message của quy định callback thực hiện với tài nguyên hệ thống và phản hồi callback khi tất cả message quy định callback tương ứng đã hoàn thành

Trang 32

Có được sự hỗ trợ từ các công cụ thông dụng tích hợp sẵn trong NodeJS Lập trình viên

có thể dễ dàng kiểm tra mã nguồn đã chạy đúng hay chưa với Jasmin trong việc tạo cácunit test Tương tự khi cài đặt những thư viện mới phục vụ cho dự án, Node package manage (npm) sẽ là công cụ hỗ trợ đắc lực

Trang 33

2.3 Cơ sở dữ liệu MySQL

2.3.1 Định nghĩa

MySQL là một hệ thống quản trị cơ sở dữ liệu mã nguồn mở (Relational Database

Management System, viết tắt là RDBMS) hoạt động theo mô hình client-server

RDBMS là một phần mềm hay dịch vụ dùng để tạo và quản lý các cơ sở dữ liệu

(Database) theo hình thức quản lý các mối liên hệ giữa chúng

Công ty Thuy Điển MySQL AB phát triển MySQL vào năm 1994 Công ty công nghệ

Mỹ Sun Microsystem sau đó giữ quyền sở hữu MySQL sau khi mua lại MySQL vào năm 2008 Năm 2010, gã khổng lồ Oracle mua Sun Microsystems và MySQL thuộc quyền sở hữu của Oracle từ đó

2.3.2 MySQL Server

MySQL Server là máy tính hay một hệ các máy tính cài đặt phần mềm MySQL dành cho server để lưu trữ dữ liệu, giúp máy khách có thể truy cập vào quản lý Dữ liệu này được đặt trong các bảng, và các bảng có mối liên hệ với nhau MySQL server nhanh,

an toàn, đáng tin cậy Phần mềm MySQL cũng miễn phí và được phát triển, phân phối

và hỗ trợ bởi Oracle Corporation

2.3.3 MySQL Client

MySQL client không hẵn phải cài phần mềm MySQL của Oracle mà là nói chung của mọi phần mềm có thể thực hiện truy vấn lên một MySQL server và nhận kết quả trả về.MySQL client điển hình là đoạn mã PHP script trên một máy tính hay trên cùng server dùng để kết nối tới cơ sở dữ liệu MySQL database Phpmyadmin cũng là một MySQL client có giao diện người dùng Một số công cụ miễn phí dùng làm MySQL là:

MySQL Workbench (Mac, Windows, Linux), Miễn phí, mã nguồn mở

Sequel Pro (Mac), miễn phí, mã nguồn mở

Trang 34

2.3.4 Cách thức hoạt động

Một máy client sẽ liên lạc với máy server trong một mạng nhất định Mỗi client có thể gửi một request từ giao diện người dùng (Graphical user interface – GUI) trên màn

hình, và server sẽ trả về kết quả như mong muốn

1) MySQL tạo ra bảng để lưu trữ dữ liệu, định nghĩa sự liên quan giữa các bảng đó

2) Client sẽ gửi yêu cầu SQL bằng một lệnh đặc biệt trên MySQL

3) Ứng dụng trên server sẽ phản hồi thông tin và trả về kết quả trên máy client

2.4 Docker

2.4.1 Khái niệm docker

Docker là một nền tảng để cung cấp cách để building, deploying và running ứng dụng

dễ dàng hơn bằng cách sử dụng các containers (trên nền tảng ảo hóa) Ban đầu viết

bằng Python, hiện tại đã chuyển sang Golang

Hình 3: Kiến trúc MySQL

Trang 35

2.4.2 Khái niệm container

Khi sử dụng docker, các lập trình viên có thể đóng gói các ứng dụng bao gồm cả nhữngthành phần cần thiết khác như các thư viện hoặc các dependencies thành 1 package Package này được gọi là container

2.4.3 Ưu điểm của Docker

 Tính dễ ứng dụng : Docker rất dễ cho mọi người sử dụng từ lập trình viên, sys admin… nó tận dụng lợi thế của container để build, test nhanh chóng Có thể đóng gói ứng dụng trên laptop của họ và chạy trên public cloud, private cloud…

“Build once, run anywhere”

 Tốc độ : Docker container rất nhẹ và nhanh, có thể tạo và chạy docker container trong vài giây

 Môi trường chạy và khả năng mở rộng : Có thể chia nhỏ những chức năng của ứng dụng thành các container riêng lẻ Ví dụ Database chạy trên một container

và Redis cache có thể chạy trên một container khác trong khi ứng dụng Node.js lại chạy trên một cái khác nữa Với Docker, rất dễ để liên kết các container với nhau để tạo thành một ứng dụng, làm cho nó dễ dàng scale, update các thành phần độc lập với nhau

2.4.4 Các khái niệm liên quan

– Docker Engine: là thành phần chính của Docker, như một công cụ để đóng gói ứng dụng

– Docker Hub: là một “github for docker images” Trên DockerHub có hàng ngàn public images được tạo bởi cộng đồng cho phép bạn dễ dàng tìm thấy những image mà bạn cần Và chỉ cần pull về và sử dụng với một số config mà bạn

mong muốn

– Images: là một khuôn mẫu để tạo một container Thường thì image sẽ dựa trên 1image có sẵn với những tùy chỉnh thêm Ví dụ bạn build 1 image dựa trên image

Trang 36

Centos mẫu có sẵn để chạy Nginx và những tùy chỉnh, cấu hình để ứng dụng web của bạn có thể chạy được Bạn có thể tự build một image riêng cho mình hoặc sử dụng những image được chia sẽ từ cộng đồng Docker Hub Một image

sẽ được build dựa trên những chỉ dẫn của Dockerfile

– Container: là một instance của một image Bạn có thể create, start, stop, move ordelete container dựa trên Docker API hoặc Docker CLI

– Docker Client: là một công cụ giúp người dùng giao tiếp với Docker host

– Docker Daemon: lắng nghe các yêu cầu từ Docker Client để quản lý các đối

tượng như Container, Image, Network và Volumes thông qua REST API Các Docker Daemon cũng giao tiếp với nhau để quản lý các Docker Service

– Dockerfile: là một tập tin bao gồm các chỉ dẫn để build một image

– Volumes: là phần dữ liệu được tạo ra khi container được khởi tạo

2.4.5 Quy trình hoạt động

Build

Đầu tiên tạo một dockerfile, trong dockerfile này chính là code của chúng ta

Dockerfile này sẽ được Build tại một máy tính đã cài đặt Docker Engine Sau khi build

ta sẽ có được Container, trong Container này chứa ứng dụng kèm bộ thư viện của

Trang 37

Nếu một máy tính khác muốn sử dụng Container chúng ta thì bắt buộc máy phải thực hiện việc Pull container này về máy, tất nhiên máy này cũng phải cài Docker Engine

Sau đó thực hiện Run Container này

Hình 4: Kiến trúc Docker

Trang 38

CHƯƠNG 3: KHẢO SÁT HIỆN TRẠNG VÀ XÁC ĐỊNH YÊU CẦU

3.1 Khảo sát hiện trạng

Với sự cạnh tranh của các trang website bán sản phẩm điện tử qua mạng ngày càng lớn,các trang web thay đổi về chức năng và cả giao diện để đáp ứng nhu cầu mua sắm của người dùng Nên các website liên quan đến sản phẩm hiện nay phải đáp ứng được về cảgiao diện đẹp, dễ tìm được sản phẩm mà người dùng cần và chức năng dễ sử dụng, tiệnlợi

Khảo sát hiện trạng của một số trang web tương tự trên thị trường:

Trang 39

3.1.1 Trang https://www.thegioididong.com/

 Ưu điểm :

- Thanh menu đầy đủ yêu cầu, dễ dàng tìm kiếm theo nhiều từ khóa

- Trang giỏ hàng đầy đủ tính năng, cho người dùng có thể biết đầy đủ thông tin sản phẩm

- Cách phối màu hợp lý, đẹp

Hình 5: Giao diện thegioididong.com

Trang 40

- Giao diện thân thiện với người dùng

Ngày đăng: 10/06/2023, 16:25

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

TÀI LIỆU LIÊN QUAN

w