Tải bản đầy đủ (.pdf) (79 trang)

kết hợp NODEJS với MONGODB cho bài toán xây dựng hệ quản trị cơ sở dữ liệu thời gian thực

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (3.54 MB, 79 trang )

lOMoARcPSD|9242611

Bà GIÁO DĀC VÀ ĐÀO T¾O

TR¯âNG Đ¾I HàC QUÀN LÝ VÀ CƠNG NGHà HÀI PHỊNG
-------------------------------------------

ISO 9001:2015

Đà ÁN TÞT NGHIàP
NGÀNH: CƠNG NGHà THƠNG TIN

Sinh viên: Lê Thành Cơng
GiÁng viên h°áng d¿n: TS. Ngun Trßnh Đơng

HÀI PHỊNG - 2021


lOMoARcPSD|9242611

Bị GIO DC V O TắO
TRõNG ắI HC QUN Lí V CễNG NGH HI PHềNG
-------------------------------------------

KắT HỵP NODEJS VI MONGODB CHO BÀI TỐN XÂY
DČNG Hà QN TRÞ C¡ Sä DĊ LIàU THâI GIAN THČC

Đà ÁN TÞT NGHIàP
NGÀNH: CƠNG NGHà THƠNG TIN

Sinh viên


GiÁng viên h°áng d¿n

: Lê Thành Cơng
: TS. Ngun Trßnh Đơng

HÁi Phịng – 2021

HÀI PHỊNG - 2021


lOMoARcPSD|9242611

Bị GIO DC V O TắO
TRõNG ắI HC QUN Lí VÀ CƠNG NGHà HÀI PHỊNG
--------------------------------------

NHIàM VĀ ĐÀ TÀI TÞT NGHIàP

Sinh viên : Lê Thành Công

Mã sinh viên : 1612111012

Láp : CT2001C
Ngành : Công Nghệ Thông Tin
Tên đÁ tài : Kết hÿp NodeJS với MongoDB cho bài toán xây dựng hệ quản trị
c¡ sá dữ liệu thßi gian thực


lOMoARcPSD|9242611


NHIàM VĀ ĐÀ TÀI
1. Nßi dung và các yêu cầu cần giÁi quy¿t trong nhiám vā đÁ tài tßt nghiáp

- Lập trình NodeJS, AnglurJS, Socket.IO, Express Framework.
- Hệ quản trị c¡ sá dữ liệu MongoDB
- Kết nối NodeJS, Socket.IO với MongoDB
2. Các tài liáu, sß liáu cần thi¿t

Sử dāng số liệu thực tế thu thập trên m¿ng internet
3. Đßa điểm thčc tÁp tßt nghiáp


lOMoARcPSD|9242611

CN Bị HNG DắN TI TịT NGHIP
Hỏ v tờn

: Nguyn Trnh ụng

Hỏc hm, hỏc vò

: Tin s

Ân vò cụng tác

: Tr°ßng Đ¿i học Quản lý và Cơng nghệ Hải Phịng

Nßi dung h°áng d¿n

:


- Lập trình NodeJS, AnglurJS, Socket.IO, Express Framework.
- Hệ quản trị c¡ sá dữ liệu MongoDB
- Kết nối NodeJS, Socket.IO với MongoDB
Đề tài tốt nghiệp đ°ÿc giao ngày 12 tháng 10 năm 2020
Yêu cầu phải hoàn thành xong tr°ớc ngày 31 tháng 12 năm 2020
Đã nhận nhiệm vā ĐTTN

Đã giao nhiệm vā ĐTTN

Sinh viên

GiÁng viên h°áng d¿n

Hải Phòng, ngày

tháng

TR¯äNG KHOA

năm 2021


lOMoARcPSD|9242611

CịNG HềA X HịI CH NGHA VIT NAM
òc lp Tč do – H¿nh phúc
-----------------------------------------

PHI¾U NHÀN XÉT CĂA GIÀNG VIÊN HNG DắN TịT NGHIP

H v tờn ging viờn: Nguyn Trnh Đông
Đ¡n vị công tác: Khoa Công nghệ Thông tin – Tr°ßng ĐHQL&CNHP
Họ và tên sinh viên: Lê Thành Cơng
Ngành: Cơng nghệ Thơng tin
Nái dung h°ớng dẫn:

- Lập trình NodeJS, AnglurJS, Socket.IO, Express Framework.
- Hệ quản trị c¡ sá dữ liệu MongoDB
- Kết nối NodeJS, Socket.IO với MongoDB
1. Tinh thần thái đß căa sinh viên trong q trình làm đÁ tài tßt nghiáp

- Sinh viên chịu khó tìm hiểu kiến thāc đã học và liên quan.
- Nghiêm túc thực hiện theo yêu cầu cÿa giáo viên.
2. Đánh giá chÃt l°ÿng căa đá án/khóa ln (so vái nßi dung u cầu đã đÁ ra
trong nhiám vā Đ.T. T.N trên các mặt lý ln, thčc tißn, tính tốn sß liáu&)

- Sự āng dāng Hệ quản trị c¡ sá dữ liệu MongoDB để phāc vā nh° mát c¡ sá dữ
liệu thßi gian thực có ý nghĩa thực tế cao. Khóa luận đã trình bày phần kiến thāc
c¡ bản trong Ch°¡ng 1. Ch°¡ng 2 trình bày kỹ thuật sử dāng NodeJS và
Socket.IO kết nối với c¡ sá dữ liệu MongoDB để t¿o ra cách thāc xử lý dữ liệu
theo h°ớng thßi gian thực dựa trên sự phản hồi tāc thßi cÿa hệ thống sử dāng
ph°¡ng pháp này. Ch°¡ng 3 thử nghiệm với bài toán quản lý xe cơng ten n¡ để
minh họa kỹ thuật. Khóa luận đ¿t yêu cầu đề ra.
3. Ý ki¿n căa giÁng viên h°áng d¿n tßt nghiáp

Đ¿t

Khơng đ¿t

Điểm:


Hải Phịng, ngày tháng năm 2020
GiÁng viên h°áng d¿n
(Ký và ghi rõ họ tên)


lOMoARcPSD|9242611

CịNG HềA X HịI CH NGHA VIT NAM
òc lp Tč do – H¿nh phúc
-----------------------------------------

PHI¾U NHÀN XÉT CĂA GIÀNG VIÊN CHÂM PHÀN BIàN
Họ và tên giảng viên:

&&&&&&&&&&&&&&&&&&&&&&&&.....................
Đ¡n vị công tác:

&&&&&&&&&&&&&&&&&&&&&&&&&&&&&..

Họ và tên sinh viên: &&&&&&&&&&&&&& Ngành: .&&& .&
Đề tài tốt nghiệp: .............................................................................................
1. Phần nhÁn xét căa giÁng viên chÃm phÁn bián

.......................................................................................................................
.......................................................................................................................
.......................................................................................................................
.......................................................................................................................
2. Nhċng mặt còn h¿n ch¿


.......................................................................................................................
.......................................................................................................................
.......................................................................................................................
.......................................................................................................................
3. Ý ki¿n căa giÁng viên chÃm phÁn bián
Đ°ÿc bảo vệ

Khơng đ°ÿc bảo vệ

Điểm:..............................

Hải Phịng, ngày

tháng

năm 2021

GiÁng viên chÃm phÁn bián
(Ký và ghi rõ họ tên)


lOMoARcPSD|9242611

LâI CÀM ¡N
Lßi đầu tiên em xin chân thành cảm ¡n các thầy, cô trong khoa Công Nghệ
Thông Tin cũng nh° tồn thể mọi ng°ßi trong ngơi tr°ßng Đ¿i học Dân lập Hải Phòng
đã t¿o điều kiện thuận lÿi cho em trong suốt q trình học tập t¿i tr°ßng cũng nh°
trong thßi gian thực hiện đồ án tốt nghiệp.
Đặc biệt, em muốn gửi lßi cảm ¡n tới Thầy Nguyễn Trịnh Đơng giảng viên trực
tiếp h°ớng dẫn tận tình chỉ bảo giúp em khắc phāc những khó khăn, thiếu sót để có thể

hồn thành các phần trong đồ án tốt nghiệp từ lý thuyết cho tới thực hành sử dāng
công cā. Với hiểu biết tìm tịi cÿa bản thân và sự chỉ bảo h°ớng dẫn tận tình cÿa giảng
viên em đã cố gắng hoàn thành đồ án mát cách tốt nhất có thể nh°ng cũng khơng thể
tránh đ°ÿc thiếu sót. Kính mong nhận đ°ÿc sự đóng góp ý kiến từ thầy cơ để em có
thể nâng cao cũng nh° bổ sungthêm kiến thāc cho bản thân, hoàn thiện đồ án với mát
kết quả tốt và hoản chỉnh h¡n
Em xin chân thành cảm ¡n!

Hải Phòng, ngày tháng năm
Sinh viên thực hiện


lOMoARcPSD|9242611

MĀC LĀC
GIàI THIàU ....................................................................................................................... 1
CH¯¡NG 1: KI¾N THĄC NÀN TÀNG ......................................................................... 2
1.1.

Đặt vÃn đÁ .............................................................................................................. 2

1.2.

C¢ så dċ liáu h°áng tài liáu................................................................................. 2

1.3. Giao thąc HTTP ....................................................................................................... 3
1.3.1 Giới thiệu HTTP ................................................................................................... 3
1.3.2. Lịch sử phát triển ................................................................................................. 3
1.3.3.


Nguyên lý ho¿t đáng cÿa HTTP ...................................................................... 4

1.3.4.

Uniform Resource Locator (URL) .................................................................. 4

1.3.5.

Giao thāc TCP/IP ............................................................................................ 5

1.4. Giao thąc HTTP 2.0 ................................................................................................. 6
1.4.1. Giới thiệu HTTP 2.0 ............................................................................................ 6
1.4.2. Nguyên lí ho¿t đáng ............................................................................................ 6
1.5. WebSocket ................................................................................................................ 9
1.5.1.

Giới thiệu Socket ............................................................................................. 9

1.5.2. Nguyên lí ho¿t đáng cÿa Socket .......................................................................... 9
1.5.3. Phân lo¿i Socket ................................................................................................ 10
1.5.4. Giới thiệu Web Socket ...................................................................................... 12
1.5.5. Cấu trúc cÿa Web Socket .................................................................................. 12
1.5.6. Các thuác tính cÿa WebSocket .......................................................................... 13
1.5.7. Các sự kiện WebSocket ..................................................................................... 14
1.5.8. Các ph°¡ng thāc cÿa WebSocket...................................................................... 15
1.6. MongoDB ................................................................................................................ 16
1.6.1. Giới thiệu MongoDB ......................................................................................... 16
1.6.2. Mát số câu lệnh c¡ bản trên MongoDB ............................................................ 16
1.6.3. ¯u điểm cÿa MongoDB .................................................................................... 17
1.6.4. Nh°ÿc điểm cÿa MongoDB .............................................................................. 18

1.6.5. Các āng dāng cần MongoDB ............................................................................ 18
1.7. NodeJs ..................................................................................................................... 19
1.7.1. Giới thiệu ........................................................................................................... 19
1.7.2. Những āng dāng nên viết bằng Nodejs ............................................................. 19
1.7.3. Cài đặt NodeJs ................................................................................................... 19


lOMoARcPSD|9242611

1.8. Express .................................................................................................................... 21
1.8.1. Giới thiệu Express ............................................................................................. 21
1.8.2. Cài đặt Express .................................................................................................. 21
1.9. Resful API ............................................................................................................... 22
1.9.1. Giới thiệu RestFul API ...................................................................................... 22
1.9.2. Đặc điểm cÿa Resful API .................................................................................. 22
1.10. Angurlar Js ........................................................................................................... 23
1.10.1. Giới thiệu Angular ........................................................................................... 23
1.10.2. Cỏc tớnh nng cĂ bn ....................................................................................... 23
CHĂNG 2: KắT HỵP NODEJS VàI MONGODB .................................................. 25
2.1

C¢ så dċ liáu thãi gian thčc .............................................................................. 25

2.1.1

Giới thiệu về c¡ s¡ dữ liệu th¡i gian thực ..................................................... 25

2.1.2

So sánh c¡ sá dữ liệu thßi gian thực và c¡ sá dữ liệu truyền thống.............. 26


2.1.3

Mát số āng dāng ............................................................................................ 26

2.2

Sĉ dāng MongoDB nh° c¢ så dċ liáu thãi gian thčc vái NodeJS ................. 27

2.2.1

Th° viện SocketIO ........................................................................................ 27

2.2.2

So sánh MongoDb với Firebase .................................................................... 28

2.3

Sĉ dāng th° vián SocketIO xây dčng ąng dāng c¢ så dċ liáu thãi gian thčc
32

2.3.1

Thiết lập cấu hình .......................................................................................... 32

CH¯¡NG 3: THĈ NGHIàM Hà THÞNG ................................................................... 36
3.1

Phát biểu bài tốn ............................................................................................... 36


3.2.

Xác đßnh yêu cầu căa há thßng .......................................................................... 36

3.2.1.

Yêu cầu phi chāc năng .................................................................................. 36

3.2.2.

Yêu cầu chāc năng: ....................................................................................... 37

3.3.

Xác đßnh các tác nhân, các UC sĉ dāng và biểu đá UC .................................. 37

3.3.1.

Các tác nhân .................................................................................................. 37

3.3.2.

Các UseCase sử dāng .................................................................................... 37

3.4.

Biểu đá các use case ............................................................................................ 39

3.4.1.


Biểu đồ use case tổng quát ............................................................................ 39

3.4.2.

Biểu đồ Use case đăng nhập .......................................................................... 40

3.4.3. Biểu đồ Use case quản lý lái xe ......................................................................... 41
3.4.4. Biểu đồ Use case quản lý đầu xe ....................................................................... 42
3.4.5. Biểu đồ Use case quản lý mooc xe .................................................................... 43
3.4.6. Biểu đồ use case quản lý tuyến đ°ßng .............................................................. 44


lOMoARcPSD|9242611

3.4.7. Biểu đồ use case quản lý lệnh điều xe ............................................................... 45
3.4.8. Biểu đồ use case quản lý điều khiển xe ............................................................. 46
3.5. Biểu đá tuần tč ....................................................................................................... 47
3.5.1. Biểu đồ tuần tự chāc năng đăng nhập ............................................................... 47
3.5.2. Biểu đồ tuần tự cho chāc năng thêm lái xe ....................................................... 48
3.5.3. Biểu đồ tuần tự cho chāc năng sửa lái xe .......................................................... 48
3.5.4. Biểu đồ tuần tự cho chāc năng xóa lái xe.......................................................... 49
3.5.5. Biểu đồ tuần tự cho chāc năng thêm tuyến đ°ßng ............................................ 50
3.5.6. Biểu đồ tuần tự cho chāc năng sửa tuyến đ°ßng .............................................. 50
3.5.7. Biểu đồ tuần tự cho chāc năng xóa tuyến đ°ßng .............................................. 51
3.5.8. Biểu đồ tuần tự cho chāc năng thêm đầu xe...................................................... 51
3.5.9. Biểu đồ tuần tự cho chāc năng sửa đầu xe ........................................................ 52
3.5.10. Biểu đồ tuần tự cho chāc năng xóa đầu xe ...................................................... 53
3.5.11. Biểu đồ tuần tự cho chāc năng thêm mooc xe ................................................ 53
3.5.12. Biểu đồ tuần tự cho chāc năng sửa mooc xe ................................................... 54

3.5.13. Biểu đồ tuần tự cho chāc năng xóa mooc xe ................................................... 55
3.5.14. Biểu đồ tuần tự cho chāc năng thêm lệnh điều xe........................................... 55
3.5.15. Biểu đồ tuần tự cho chāc năng sửa lênh điều xe ............................................. 56
3.5.16. Biểu đồ tuần tự cho chāc năng xóa lệnh điều xe ............................................. 57
3.5.17. Biểu đồ tuần tự cho chāc năng thêm điều khiển xe......................................... 57
3.5.18. Biểu đồ tuần tự cho chāc năng sửa điều khiển xe ........................................... 58
3.6.

Biểu đá láp........................................................................................................... 60

3.7.

Xây dčng c¢ så dċ liáu ....................................................................................... 60

3.7.1. Bảng 3.7.2. Bảng 3.7.2. Bảng 3.7.3. Bảng 3.7.4. Bảng 3.7.4. Bảng 3.8.

Giao dián ch°¢ng trình ...................................................................................... 62

3.8.1. Giao diện danh sách đầu xe ............................................................................... 62
3.8.2. Giao diện danh sách mooc xe ............................................................................ 62
3.8.3. Giao diện danh sách lái xe ................................................................................. 63
3.8.4. Giao diện danh sách tuyến đ°ßng ..................................................................... 63



lOMoARcPSD|9242611

DANH MC T VIắT TT
T vit tt

HTTP

URL

HTML

TCP/IP
W3C

RFC

OSI

T y

Diòn gii

HTTP là giao thāc truyền tải siêu
văn bản. Đây là giao thāc tiêu
chuẩn cho World Wide Web
(www) để truyền tải dữ liệu d°ới
Hypertext Transfer Protocol
d¿ng văn bản, âm thanh, hình ảnh,
video từ Web Server tới trình
duyệt web cÿa ng°ßi dùng và

ng°ÿc l¿i.
URL là địa chỉ tài nguyên cÿa mát
Uniform Resource Locator
web
HTML là mát ngôn ngữ đánh dấu
đ°ÿc thiết kế ra để t¿o nên các
Hypertext Markup Language
trang web trên World Wide Web.
Cùng với CSS và JavaScript
TCP/IP là mát bá giao thāc trao
đổi thông tin đ°ÿc sử dāng để
Transmission Control
Protocol/ Internet Protocol truyền tải và kết nối các thiết bị
trong m¿ng Internet
World Wide Web Consutirum W3C là mát quy chuẩn thiết kế
chung đ°ÿc rất nhiều nhà thiết kế
web sử dāng nh° th°ớc đo đánh
giá māc đá hồn thiện cÿa những
website đó.
Request For Comment
RFC là tập hÿp những tài liệu về
kiến nghị, đề xuất và những lßi
bình luận liên quan trực tiếp hoặc
gián tiếp đến công nghệ, nghi thāc
m¿ng INTERNET
Open Systems Interconnection OSI là mát thiết kế dựa vào
Reference Model
nguyên lý tầng cấp, lý giải mát
cách trừu t°ÿng kỹ thuật kết nối
truyền thông giữa các máy tính và

thiết kế giao thāc m¿ng giữa
chúng


lOMoARcPSD|9242611

DANH SÁCH CÁC HÌNH
Hình 1. 1: Ngun lý ho¿t đáng cÿa HTTP .....................................................................4
Hình 1. 2: Kiến trúc giao thāc TCP/IP so với OSI ..........................................................5
Hình 1. 3: S¡ đồ ho¿t đáng cÿa Socket trong việc truyền nhận dữ liệu ..........................9
Hình 1. 4: Stream Socket ...............................................................................................10
Hình 1. 5: Datagram Socket ..........................................................................................11
Hình 1. 6: S¡ đồ ho¿t đáng cÿa WebSockets ................................................................12
Hình 1. 7: So sánh thßi gian chèn dữ liệu cÿa MongoDB với SQL ..............................18
Hình 1. 8: Trang chÿ NodeJS ........................................................................................20
Hình 1. 9: Chọn file cài đặt ...........................................................................................20
Hình 1. 10:Chọn file cài đặt ..........................................................................................21
Hình 2. 1: Minh họa kiễn trúc c¡ sá dữ liệu thßi gian thực ..........................................26
Hình 3. 1: Biểu đồ Use Case tổng quát .........................................................................39
Hình 3. 3: Biểu đồ Use Case đăng nhập ........................................................................40
Hình 3. 4: Biểu đồ Use Case quản lý xe ........................................................................41
Hình 3. 5: Biểu đồ Use case quản lý mooc xe ...............................................................43
Hình 3. 6: Biểu đồ Use case quản lý tuyến đ°ßng ........................................................44
Hình 3. 7: Biểu đồ Use case quản lý tuyến đ°ßng ........................................................45
Hình 3. 8: Biểu đồ Use case quản lý điều khiển xe .......................................................46
Hình 3. 9: Biểu đồ tuần tự chāc năng đăng nhập ..........................................................47
Hình 3. 10: Biểu đồ tuần tự chāc năng thêm lái xe: ......................................................48
Hình 3. 11: Biểu đồ tuần tự chāc năng sửa lái xe .........................................................48
Hình 3. 12: Biểu đồ tuần tự chāc năng xóa lái xe .........................................................49
Hình 3. 13: Biểu đồ tuần tự chāc năng thêm tuyến đ°ßng ...........................................50

Hình 3. 14: Biểu đồ tuần tự chāc năng sửa tuyến đ°ßng ..............................................50
Hình 3. 15: Biểu đồ tuần tự chāc năng xóa tuyến đ°ßng ..............................................51
Hình 3. 16: Biểu đồ tuần tự chāc năng thêm đầu xe .....................................................51
Hình 3. 17: Biểu đồ tuần tự chāc năng sửa đầu xe ........................................................52
Hình 3. 18: Biểu đồ tuần tự chāc năng xóa đầu xe .......................................................53
Hình 3. 19: Biểu đồ tuần tự chāc năng thêm mooc xe ..................................................53
Hình 3. 20: Biểu đồ tuần tự chāc năng sửa mooc xe.....................................................54
Hình 3. 21: Biểu đồ tuần tự chāc năng xóa mooc xe ....................................................55
Hình 3. 22: Biểu đồ tuần tự chāc năng thêm lệnh điều xe ............................................55
Hình 3. 23: Biểu đồ tuần tự chāc năng sửa lệnh điều xe ...............................................56
Hình 3. 24: Biểu đồ tuần tự chāc năng xóa lệnh điều xe ..............................................57
Hình 3. 25: Biểu đồ tuần tự chāc năng thêm điều khiển xe ..........................................57
Hình 3. 26: Biểu đồ tuần tự chāc năng sửa điều khiển xe .............................................58
Hình 3. 27: Biểu đồ tuần tự chāc năng xóa điều khiển xe ............................................59
Hình 3. 28: Biểu đồ c¡ sá dữ liệu ..................................................................................60
Hình 3. 29: Giao diện danh sách đầu xe ........................................................................62
Hình 3. 30: Giao điện danh sách mooc xe .....................................................................62
Hình 3. 31: Giao diện danh sách lái xe ..........................................................................63
Hình 3. 32: Giao diện dánh sách tuyến đ°ßng ..............................................................63

Downloaded by tran quang ()


lOMoARcPSD|9242611

DANH SÁCH CÁC BÀNG
Bảng 1. 1 : Bảng thuác tính cÿa WebSocket .................................................................13
Bảng 1. 2: Bảng các sự kiện WebSocket .......................................................................14
Bảng 1. 3: Bảng ph°¡ng thāc cÿa WebSocket ..............................................................15
Bảng 1. 4: Bảng câu lệnh c¡ bản trên MongoDB..........................................................17

Bảng 2. 1: So sánh thành phần MongoDB với Firebase ...............................................31
Bảng 3. 1: Bảng use case đăng nhập .............................................................................37
Bảng 3. 2: Bảng use case quản lý đầu xe ......................................................................37
Bảng 3. 3: Bảng use case cÿa quản lý mooc xe .............................................................37
Bảng 3. 4: Bảng use case cÿa quản lý tuyến đ°ßng .....................................................37
Bảng 3. 5: Bảng use case quản lý lệnh điều xe .............................................................38
Bảng 3. 6: Bảng use case quản lý lái xe .......................................................................38
Bảng 3. 7: Bảng use case quản lý điều khiển xe ...........................................................38
Bảng 3. 8: Bảng đặc tả use case đăng nhập ...................................................................40
Bảng 3. 9: Bảng đặc tả use case quản lý lái xe ..............................................................41
Bảng 3. 10: Biểu đồ Use Case quản lý đầu xe ..............................................................42
Bảng 3. 11: Bảng đặc tả use case quản lý đầu xe ..........................................................42
Bảng 3. 12: Bảng đặc tả use case Quản lý mooc xe ......................................................43
Bảng 3. 13: Bảng đặc tả use case quản lý tuyến đ°ßng ................................................44
Bảng 3. 14: Bảng đặc tả use case Lệnh điều xe ............................................................45
Bảng 3. 15: Bảng đặc tả use case lệnh điều khiển xe ....................................................46
Bảng 3. 16: Bảng dữ liệu lái xe .....................................................................................60
Bảng 3. 17: Bảng dữ liệu đầu xe ...................................................................................60
Bảng 3. 18: Bảng dữ liệu tuyến đ°ßng ..........................................................................61
Bảng 3. 19: Bảng dữ liệu lệnh điều xe .........................................................................61
Bảng 3. 20: Bảng dữ liệu điều khiển xe ........................................................................61

Downloaded by tran quang ()


lOMoARcPSD|9242611

GIàI THIàU
Hiện nay, tốc đá khoa học phát triển rất nhanh, đặc biệt trong lĩnh vực Công
nghệ Thông tin. Các yêu cầu cÿa các hệ thống phần mềm cần phát triển nhanh, chất

l°ÿng tốt, chi phí giá thành giảm, v.v. Lựa chọn hệ quản trị c¡ sá dữ liệu là mát
trong những yếu tố dẫn đến thành công cÿa dự án. Tuy nhiên mßi lo¿i c¡ sá dữ liệu
l¿i có °u nh°ÿc điểm khác nhau, tuy vào bài toán để chọn c¡ sá dữ liệu phù hÿp.
Để đáp āng yêu tố nhanh, và tāc thßi trong hệ thống phần mềm, ng°ßi ta sẽ chọn
giải pháp sử dāng c¡ sá dữ liệu thßi gian thực. Nh°ng lo¿i c¡ sá dữ liệu này có chi
phí vận hành lớn, trong khi đó nhiều dự án chỉ có nguồn kinh phí h¿n hẹp.
Dựa trên những hệ quản trị c¡ sá dữ liệu hiện t¿i, MongoDB là mát trong
những hệ quản trị c¡ sá dữ liệu m¿nh, mã nguồn má, t°¡ng thích với nhiều hệ điểu
hành nh° Windows, Ubuntu, CentOS, v.v. Kết hÿp với sự nâng cấp cÿa engine
JavaScript phiên bản v8, và platform NodeJS do Google phát triển đã t¿o ra b°ớc
đát phá cho phép t¿o ra nhiều cách cải tiến hiệu năng hệ thống phần mềm. Sự cải
thiện tốc đá xử lý và truyển tải dữ liệu nhß sự nâng cấp lên thành phiên bản
HTTP/2.0 năm 2015 làm cho việc phát triển phần mềm trên nền Web ngày càng
hiệu quả.
Trên c¡ sá các công nghệ phát triển và h°ớng sử dāng hệ quản trị c¡ sá dữ
liệu MongoDB có nhiều °u điểm. Em đã chọn đề tài MongoDB cho bài toỏn xõy dng hỏ qun trò c sồ d liỏu thãi gian thčc.= với
mong muốn tìm hiểu thêm cơng nghệ mới để áp dāng cho t°¡ng lai nghề nghiệp.
Khóa luận có các phần chính đ°ÿc trình bày theo trình tự sau:
Giái thiáu
Ch°¢ng 1: Kiến thức nền tảng, chương này tổng hợp các kiến thức cơ bản
làm cơ sở lý luận cho các chương tiếp theo.
Ch°¢ng 2: Kết hợp NodeJS với MongoDB, trình bày các yếu tố kỹ thuật kết
hợp giữa NodeJS với MongoDB để xử lý dữ liệu có tính phản hồi
nhanh.
Ch°¢ng 3: Thử nghiệm hệ thống, trình bày phần áp dụng các kiến thức ở các
chương trên thử nghiệm với bài toán quản lý vận tải đơn giản.
K¿t luÁn

1


Downloaded by tran quang ()


lOMoARcPSD|9242611

CH¯¡NG 1: KI¾N THĄC NÀN TÀNG
Ch°¡ng này trình bày các kiến thāc nền tàng, tổng hÿp các kiến thāc c¡ bản làm c¡ sá
lý luận cho các ch°¡ng tiếp theo cũng nh° là các ph°¡ng pháp tiếp cận để giải quyết
đề tài.
1.1.

Đặt vÃn đÁ
Các hệ thống phần mềm hiện nay đòi hỏi ch¿y trên đa nền tảng, hiệu quả,

t°¡ng tác thân thiện với ng°ßi dùng. Phần mềm phát triển trên nền Web là mát
trong những lo¿i āng dāng đáp āng đ°ÿc các yêu cầu khắt khe đó. Tuy nhiên, các
yếu tố quan trọng anh h°ớng đến hiệu năng cÿa các āng dāng Web là việc trao đổi
dữ liệu dựa trên Internet và cā thể là trên giao thāc HTTP và xử lý dữ liệu trong
các hệ quản trị c¡ sá dữ liệu. Do khoa học phát triển, những h¿n chế kể trên đã
đ°ÿc khắc phāc. Giao thāc HTTP đã đ°ÿc nâng cấp thành HTTP 2.0 truyền hai
chiều (bidirection), các hệ quản trị c¡ sá dữ liệu h°ớng đến xử lý dữ liệu theo thßi
gian thực, đặc biệt là sự ra đßi cảu hệ quản trị c¡ sá dữ liệu NoSQL (Not only
SQL) đã cải thiện tốc đá xử lý dữ liệu đáng kể. Trong đó điển hình là hệ quản trị c¡
sá dữ liệu MongoDB. MongoDB là mát hệ quản trị c¡ sá dữ liệu h°ớng tài liệu.
Nghĩa là dữ liệu không chỉ chāa trong các bảng nh° c¡ sá dữ liệu quan hệ mà đ°ÿc
l°u trữ á d¿ng JSON. Điều này giúp cho việc truy cập và xử lý nhanh h¡n rất nhiều
so với các hệ quản trị c¡ sá dữ liệu quan hệ. Trong ch°¡ng này, khóa luận trình
bày kiến thāc nền tảng liên quan để làm c¡ sá cho các nái dung tiếp theo
1.2.


C¢ så dċ liáu h°áng tài liáu
C¡ sá dữ liệu h°ớng tài liệu (Document Oriented Database) là c¡ sá dữ liệu

l°u trữ dữ liệu mát cách tự do không theo mát l°ÿc đồ nhất định. Mßi bản ghi
khơng cần phải có cấu trúc cố định, các bản ghi khách nhau có thể có nhiều cát
khách nhau. Lo¿i dữ liệu trong mßi cát bản ghi cũng có thể khác nhau. Mát cát có
thể có nhiều h¡n mát mảng và các bản ghi có thể có cấu trúc lồng nhau. Dữ liệu
đ°ÿc đóng gói thành từng tài liệu, tài liệu có thể l°u d°ới d¿ng JSON, XML, v.v.
Ví dā:
{

<_id=: ObjectId("5fe87df4ccac7508fc2c52a4")

}
<contact>
2

Downloaded by tran quang ()


lOMoARcPSD|9242611

<firstname>Bob</firstname>
<lastname>Smith</lastname>
(123) 555-0178</phone>
(890) 555-0133</phone>
<address>

<type>Home</type>
<street1>123 Back St.</street1>
<city>Boys</city>
<state>AR</state>
<zip>32225</zip>
<country>US</country>
</address>
</contact>

Khi phát sinh việc chèn dữ liệu, tāc là thêm mát tr°ßng mới thì ta chỉ cần bổ
sung mát tr°ßng vào đối t°ÿng JSON/XML là đ°ÿc chā nó khơng cố định nh° số
cát trong bảng cÿa c¡ sá dữ liệu quan hệ. Mát số hệ quản trị c¡ sá dữ liệu h°ớng
tài liệu nh° MongoDB, CouchDB, Elasticsearch, v.v.
1.3. Giao thąc HTTP
1.3.1 Giái thiáu HTTP
Giao thāc HTTP là mát trong các giao thāc chuẩn sử dāng để trao đổi dữ liệu
trên Internet, giao thāc này đ°ÿc dùng để trao đổi thông tin giữa bên cung cấp dịch
vā (Web server) và bên sử dāng dịch vā (Web client) trong mơ hình Client/Server.
Giao thāc HTTP là mát giao thāc thuác tầng āng dāng, nằm trên cặp giao thāc
tầng giao vận & tầng m¿ng là TCP/IP.
1.3.2. Lßch sĉ phát triển
 Giao thức HTTP và chuẩn HTML được Tim Berners-Lee đề xuất vào năm
năm 1989 tại CERN và được các tổ chức IETF và World Wide Web
Consortium (W3C) công nhận và đã công bố ra hàng loạt các phiên bản
RFC (Request for Comments).
 Phiên bản đầu tiên của HTTP là HTTP v0.9 được đưa ra năm 1991.
 Vào giữa thập niên 90, David Ragger đã tăng tính bảo mật, mở rộng các
thẻ meta-rich decription và thêm các phương thức khác cung với các
trường header nhằm mục đích biểu diễn được đa dạng các loại dữ liệu.
 Giao thức HTTP từ lúc công bố đến nay đã trải qua nhiều phiên bản 1.x

(1.0, 1.1, 1.2,1.3), đến ngày nay là phiên bản 2.x.
3

Downloaded by tran quang ()


lOMoARcPSD|9242611

 HTTP/2 được công bố trong bản RFC 7540 vào tháng 7 năm 2015. [TL1]
1.3.3. Nguyên lý ho¿t đßng căa HTTP

Hình 1. 1: Nguyên lý hoạt động của HTTP

Header: Chāa các thơng tin về địa chỉ xuất phát cÿa gói, địa chỉ đích đến và các thơng
tin nh° lo¿i dữ liệu, dung l°ÿng dữ liệu.
Payload: Chāa các gói dữ liệu cần đ°ÿc truyền tải.
Footer: Chāa các thông tin dùng để phát hiện và chỉnh sửa lßi trong q trình truyền.
Các hệ thống sử dāng giao thāc HTTP ho¿t đáng theo nguyên lý Client –
Server. Theo nguyên lý này các thiết bị đóng vai trị làm máy khách (Client) sẽ gửi
u cầu đến máy chÿ (Server) và chß đÿi phản hồi thông tin từ máy chÿ. Giao thāc
HTTP là mát giao thāc phi tr¿ng thái (stateless protocol). Hay nói cách khác, u
cầu hiện t¿i (request) khơng biết những gì đã xảy ra trong yêu cầu tr°ớc đó. HTTP
cho phép t¿o các yêu cầu gửi và nhận các kiểu dữ liệu, do đó cho phép xây dựng hệ
thống đác lập với dữ liệu đ°ÿc truyển.
1.3.4. Uniform Resource Locator (URL)
Mát URL (Uniform Resource Locator) đ°ÿc sử dāng để xác định duy nhất mát
tài nguyên trên Web. Mát URL có cấu trúc nh° sau:
Protocol://hostname:port/path-and-file-name
Trong mát URL có 4 thành phần:
-


Protocol: giao thāc tầng āng dāng đ°ÿc sử dāng bái client và server

-

Hostname: tên DNS domain

-

Port: Cổng TCP để server lắng nghe request từ client

-

Path-and-file-name: Tên và vị trí cÿa tài nguyên yêu cầu

4

Downloaded by tran quang ()


lOMoARcPSD|9242611

1.3.5. Giao thąc TCP/IP

Hình 1. 2: Kiến trúc giao thức TCP/IP so với OSI

Các giao thāc đ°ÿc phân chia thành các tầng, Trong đó TCP/IP có 4 tầng
mßi tầng l¿i sử dāng các giao thāc á tầng d°ới để đ¿t đc māc đích cÿa mình.
 Layer 1: Network Access Layer
Network Access Layer: Quy °ớc về cách thāc dữ liệu đ°ÿc gửi qua m¿ng

bái các thiết bị phần cāng trực tiếp giao tiếp với mơi tr°ßng m¿ng, chẳng h¿n nh°
cáp đồng trāc, cáp quang hay dây đồng xoắn đôi. Các giao thāc bao gồm trong
Network Access Layer là Ethernet, Token Ring, FDDI, X.25, Frame Relay&
 Layer 2: Internet Layer
Internet Layer: Đóng gói dữ liệu vào các gói chúng l¿i d°ới d¿ng các gói tin
thơng giao thāc Internet Protocol, chāa địa chỉ nguồn và đích (địa chỉ logic hoặc
địa chỉ IP) đ°ÿc sử dāng để chuyển tiếp các gói tin giữa các máy chÿ và qua các
m¿ng.
Māc đích cÿa Transport Layer là cho phép các thiết bị trên máy chÿ nguồn và
đích đến trao đổi dữ liệu. Transport Layer sẽ xác định māc đá service và tr¿ng thái
cÿa kết nối đ°ÿc sử dāng khi vận chuyển dữ liệu.
 Layer 3: Transport Layer
Māc đích cÿa Transport Layer là cho phép các thiết bị trên máy chÿ nguồn
và đích đến trao đổi dữ liệu với nhau. Service và tr¿ng thái kết nối đ°ÿc sử dāng
khi vận chuyển sẽ đ°ÿc Transport Layer xác định māc đá nào
Khi dùng trình duyệt truy cập Web b¿n sẽ th°ßng gặp các thơng báo lßi khác
nhau nh° sau:
-

Lßi 404 hay Http 404 tāc là lßi khơng tồn t¿i địa chỉ b¿n đang truy cập
Lßi 401: lßi này b¿n truy cập vào n¡i yêu cầu xác thực, nh°ng không
v°ÿt qua đ°ÿc sẽ có lßi này.
5

Downloaded by tran quang ()


lOMoARcPSD|9242611

-


Lßi 500: lßi này th°ßng do Web server mà b¿n truy cập bị lßi nên khơng
thể truy cập vào đ°ÿc.
Ngồi ra Http 200 tāc là b¿n truy cập thành công.

1.4. Giao thąc HTTP 2.0
1.4.1. Giái thiáu HTTP 2.0
HTTP/2 là cuác cách m¿ng giao thāc truyền siêu văn bản (Hypertext Transfer
Protocol) (HTTP) mới nhất tính đến thßi điểm này. HTTP là giao thāc m¿ng đ°ÿc
sử dāng để yêu cầu và nhận page cùng dữ liệu trên mơi tr°ßng World Wide Web.
Cơng nghệ mới này đang dần thay thế chuẩn HTTP/1.1 đã đ°ÿc sử dāng ráng rãi
trong h¡n hai thập kỷ gần đây
1.4.2. Ngun lí ho¿t đßng
HTTP/1.1 đã ra đßi gần 20 năm và với các āng dāng web (web application)
nh° hiện nay, giao thāc này đang trá nên l¿c hậu. HTTP/2.0 ra đßi với rất nhiều
những nâng cấp.
Ghép kênh (Multiplexed)
HTTP có mát vấn đề gọi là head-of-line blocking, chỉ có phép đ°ÿc thực
hiện với mßi kết nối. HTTP/1.1 đã cố gắng giải quyết vấn đề này bằng các luồng
song song (pipelining), nh°ng khơng thể giải quyết triệt để (ví dā mát truy vấn mà
bị lßi khơng nhận đ°ÿc phản hồi sẽ làm gián đo¿n toàn bá các truy vấn tiếp theo).
H¡n nữa, c¡ chế luồng song song (pipelining) cũng rất phāc t¿p trong vận
hành bái vì cần phải xử lý các truy vấn thật cẩn thận mới đảm bảo đ°ÿc phản hồi
t°¡ng āng với truy vấn. Client buác phải sử dāng mát cách chuẩn đoán để xác định
cần gửi truy vấn nào vào kết nối nào. Vì thơng th°ßng, mát trang web cần tới 10
(có thể h¡n) các kết nối, nên hiệu suất có thể bị ảnh h°áng nghiêm trọng khi có
những truy vấn lßi.
Multiplexing giải quyết vấn đề này bằng cách cho phép nhiều truy vấn và
phản hồi cùng mát lúc. Về phía client, chỉ cần mát kết nối đến máy chÿ là có thể tải
tồn bá dữ liệu cần thiết.

Chính c¡ chế gửi và nhận dữ liệu cÿa HTTP/2.0 giúp nó dễ dàng triển khai
multiplexing. Theo đó, HTTP/2.0 cho phép client và server chia nhỏ dữ liệu thành
các frame hồn tồn đác lập với nhau. Chúng có thể đ°ÿc gửi và nhận song song,
xen kẽ nhau và ghép nối l¿i thành những thơng điệp hồn chỉnh t¿i đích đến. Điều
này giúp việc gửi và nhận dữ liệu cực kỳ hiệu quả mà không hề gặp phải head-ofline blocking nh° HTTP/1.1 vì các frame hồn tồn đác lập với nhau.
6

Downloaded by tran quang ()


lOMoARcPSD|9242611

HTTP/2.0 sĉ dāng dċ liáu nhß phân
Dữ liệu nhị phân rõ ràng là dữ liệu dễ xử lý nhất đối với máy tính. HTTP/1.1
sử dāng dữ liệu d¿ng văn bản (Nó sẽ đ°ÿc mã hố bái máy tính, và tiếp tāc đ°ÿc
mã hoá á những tầng d°ới). Dữ liệu nhị phân cho phép chúng ta phân tích nó dễ
dàng h¡n, nó dễ đ°ÿc nén h¡n và quan trong nhất là nó khơng d° thừa. Dữ liệu
dang văn bản cÿa HTTP/1.1 th°ßng xun có những thā khơng cần thiết nh° dấu
cách, các dấu xuống dịng&
Cũng vì vậy với HTTP/2.0, chúng ta có mát ph°¡ng thāc duy nhất để phân
tích dữ liệu, trong khi HTTP/1.1 có tới 4 cách khác nhau. HTTP/1.1 sử dāng văn
bản nên mát gói tin cÿa nó chāa rất nhiều thông tin và bắt buác phải sử dāng dấu
xuống dịng để ngăn cách. HTTP/2.0 thì hồn tồn khác, mọi giao tiếp cÿa client và
máy chÿ đều đ°ÿc chia thành các thông điệp và đ¡n vị truyền tin (frame), tất cả
chúng đều là dữ liệu binary. Có nhiều lo¿i frame khác nhau
nh° HEADER, DATA, SETTINGS&
Bằng việc sử dāng dữ liệu nhị phân, chúng ta có mát số khái niệm sau trong
giao tiếp HTTP/2.0
 Stream: Mát dòng dữ liệu hai chiều trong mát kết nối, trong 1 stream
có thể có nhiều thơng điệp (message)

 Message (thơng điệp): Mát chi các frame (đ¡n vị truyền tin) có liên
quan đến nhau để hoàn thành mát truy vấn hoặc phản hồi.
 Frame (Đ¡n vị truyền tin): Đây là đ¡n vị nhỏ nhất trong giao tiếp
HTTP/2.0, nh° đã nói á trên, có nhiều lo¿i frame khác nhau để hoàn
thiện mát message.
Mọi kết nối HTTP/2.0 đều thực hiện qua TCP, trên đó giao tiếp đ°ÿc thực
hiện hai chiều nhß vào stream. Mßi stream thì đều có định danh và đá °u tiên nhß
đó nó có thể truyền tải các thông điệp giữa client và server mát cách chính xác.
Mßi mát thơng điệp là mát gói tin HTTP hồn chỉnh (ví dā là truy vấn hoặc phản
hồi từ máy chÿ), thơng điệp sẽ có nhiều đ¡n vị truyền tin (frame). Ví dā frame
header chāa các HTTP header, frame data chāa dữ liệu chính cần truyền tải. Đ¡n vị
truyền tin truyền tải các thông điệp khác nhau và các stream khác nhau có thể đ°ÿc
truyền tải xen kẽ nhau và sẽ đ°ÿc ghép nối khi chúng đến đích nhß vào định danh
cÿa chúng đ°ÿc gắn với các thơng điệp và stream. Chính nhß c¡ chế truyền tải dữ
liệu nhị phân này mà HTTP/2.0 cho phép chúng ta gửi và nhận nhiều thông tin h¡n
trong cùng mát kết nối.
7

Downloaded by tran quang ()


lOMoARcPSD|9242611

HTTP/2.0 có c¢ ch¿ server push
Khi trình duyệt truy vấn mát trang web, máy chÿ sẽ trả về HTML và sau đó
trình duyệt phải phân tích HTML nay và nếu cần thì tiếp tāc truy vấn để tải về JS,
CSS, v.v...
Server push cho phép máy chÿ khơng cần chß truy vấn từ trình duyệt và tự
quyết định những gì là quan trọng (th°ßng dựa vào cache) và push ln cho trình
duyệt tr°ớc.

Vậy t¿i sao l¿i cần server push? Nh° đã nói á trên, mát trang web có trung
bình 80 assets, vậy việc giảm thiểu đá trễ khi phải phân tích rồi gửi yêu cầu truy
vấn những thā này sẽ giảm rất nhiều thßi gian tải trang. Server hiểu rất rõ về những
thā client cần và nó push ln cho client, vậy là khỏi mất cơng phải chß.
HTTP/2.0 thực hiện push mát cách tự đáng nên nó mang l¿i nhiều lÿi ích h¡n.
Ví dā có thể dùng cache á phía client, chuyển trang không cần tải l¿i dữ liệu này,
các assets khác nhau có thể multiplexing làm chúng đ°ÿc tải nhanh h¡n. Tuy

nhiên, tính năng này nếu bị l¿m dāng, nó sẽ phản tác dāng khiến hiệu suất giảm
đi. Làm thế nào để sử dāng mát cách đúng đắn thì cũng là mát vấn đề khá khó.
HTTP/2.0 nén các header
Mßi mát kết nốt HTTP đều phải có header. HTTP là mát giao thāc phi tr¿ng
thái. Vì vậy, mọi kết nối đều là mát cặp gửi - nhận truy vấn. Mßi kết nối đều phải
gửi kèm các thông tin liên quan đến kết nối đó (kể cả nó giống hệt các kết nối
khác) trong header.
Khi đ°ÿc tiêu chuẩn hoá vào năm 2005, có 116 header khác nhau. Phần lớn
chúng là những yêu cầu bắt buác phải gửi trong truy vấn cho các trang web (mà rất
nhiều thā là thông tin bị lặp), vì vậy, HTTP/2.0 sử dāng HPACK để nén các
header.
HTTP/1.1 gửi các d°ới d¿ng text (văn bản) cho mßi truy vấn hay phản hồi.
Và nhiều trong số chúng là giống nhau khi chúng ta truy cập mát trang web. C¡
chế nén header cÿa HTTP/2.0 cho phép chúng ta giảm bớt khá nhiều thơng tin d°
thừa nhß ph°¡ng thāc sau:
-

Sử dāng Huffman code để mã hố các header, nhß đó mà giảm đ°ÿc
kích th°ớc gói tin.

-


u cầu client và server chia sẽ mát bảng chỉ māc các header đã đ°ÿc
gửi và nhận từ tr°ớc, nhß đó mà những header lặp l¿i sẽ đ°ÿc bỏ qua.
8

Downloaded by tran quang ()


lOMoARcPSD|9242611

Huffman code cho phép các giá trị đ°ÿc nén tr°ớc khi gửi đi, và bảng chỉ
māc các header đã đ°ÿc gửi từ tr°ớc cho phép chúng ta tránh những dữ liệu d°
thừa bằng cách chỉ cần gửi định danh cÿa các header này và cả client và server có
thể lấy ra giá trị cÿa chúng đã đ°ÿc l°u từ tr°ớc đó.
Mßi truy vấn cần trung bình 1400 byte cho header và mát trang web có trung
bình 80 assets, mßi assets cần mát truy vấn riêng biệt. Tổng cáng phải mất đến
1MB cho riêng header để tải trang. Vì vậy rõ ràng nén đ°ÿc l°ÿng dữ liệu này sẽ
có ích rất lớn.
Lúc đầu, HTTP/2.0 sử dāng gzip để nén, tuy nhiên, ph°¡ng thāc này có mát
lß hổng Compression Ratio Info-leak Made Easy (CRIME) nên HTTP/2.0
chuyển sang dùng ph°¡ng thāc nén khác an toàn h¡n.
1.5. WebSocket
1.5.1. Giái thiáu Socket
Socket là mát điểm cuối (end-point) cÿa liên kết giao tiếp hai chiều (two-way
communication) giữa hai ch°¡ng trình ch¿y trên m¿ng. Nghĩa là mát socket đ°ÿc
sử dāng để cho phép 1 tiến trình nói chuyện với 1 tiến trình khác.
Các lớp Socket đ°ÿc sử dāng để tiến hành kết nối giữa client và server. Nó
đ°ÿc ràng buác với mát cổng port (thể hiện là mát con số cā thể) để các tầng TCP
(TCP Layer) có thể xác định āng dāng mà dữ liệu sẽ đ°ÿc gửi tới
1.5.2. Ngun lí ho¿t đßng căa Socket


Hình 1. 3: Sơ đồ hoạt động của Socket trong việc truyền nhận dữ liệu

Socket giúp lập trình viên kết nối các āng dāng để truyền và nhận dữ liệu
trong mơi tr°ßng có kết nối Internet bằng cách sử dāng ph°¡ng thāc TCP/IP và
UDP.
9

Downloaded by tran quang ()


lOMoARcPSD|9242611

Khi cần trao đổi dữ liệu cho nhau thì 2 āng dāng cần phải biết thông tin IP và
port bao nhiêu cÿa āng dāng kia. Có rất nhiều d¿ng socket khác nhau phā thuác
vào sự khác biệt giữa cách truyền dữ liệu (protocol). D¿ng phổ biến nhất là TCP và
UDP.
2 āng dāng cần truyền thông tin phải đáp āng điều kiện sau thì socket mới có
thể ho¿t đáng:
-

Āng dāng có thể nằm cùng trên mát máy hoặc 2 máy khác nhau

-

Trong tr°ßng hÿp 2 āng dāng cùng nằm trên mát máy, số hiệu cổng
không đ°ÿc trùng nhau.

1.5.3. Phân lo¿i Socket
Stream Socket
Dựa trên giao thāc TCP (Tranmission Control Protocol) stream socket thiết

lập giao tiếp 2 chiều theo mơ hình client và server. Đ°ÿc gọi là socket h°ớng kết
nối.

Hình 1. 4: Stream Socket

Giao thāc này đảm bảo dữ liệu đ°ÿc truyền đến n¡i nhận mát cách đáng tin
cậy, đúng tuần tự nhß vào c¡ chế quản lý luồng l°u thông trên m¿ng và c¡ chế
chống tắc nghẽn

10

Downloaded by tran quang ()


lOMoARcPSD|9242611

Đặc điểm tóm gán:
-

Có mát đ°ßng kết nối (địa chỉ IP) giữa 2 tiến trình.

-

Mát trong hai tiến trình kia phải đÿi tiến trình này u cầu kết nối.

-

Mơ hình client /sever thì sever lắng nghe và chấp nhận từ client.

-


Mßi thơng điệp gửi phải có xác nhận trả về.

-

Các gói tin chuyển đi tuần tự.

Datagram Socket
Dựa trên giao thāc UDP (User Datagram Protocol) việc truyền dữ liệu không
yêu cầu có sự thiết lập kết nối giữa 2 tiến trình. Tāc là nó cung cấp ph°¡ng thāc phi
kết nối cho việc gửi và nhận gói tin. Gọi là socket khơng h°ớng kết nối

Hình 1. 5: Datagram Socket

Do khơng u cầu thiết lập kết nối, khơng phải có những c¡ chế phāc t¿p.
Nên tốc đá giao thāc khá nhanh, thuận tiện cho các āng dāng truyền dữ liệu nhanh
nh° chat, game online&
Đặc điểm:
-

Hai tiến trình liên l¿c với nhau khơng kết nối trực tiếp

-

Thông điệp gửi đi phải kèm theo thông điệp ng°ßi nhận

-

Thơng điệp có thể gửi nhiều lần


-

Ng°ßi gửi khơng chắc chắn thơng điệp đến tay ng°ßi nhận.

-

Thơng điệp gửi sau có thể đến tr°ớc và ng°ÿc l¿i.
11

Downloaded by tran quang ()


×