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

(Luận văn thạc sĩ) ứng dụng mô hình hàng đợi thông điệp trong kiến trúc khách chủ

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 (1.42 MB, 62 trang )

ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƢỜNG ĐẠI HỌC CÔNG NGHỆ
-----------o0o-----------

NGUYỄN QUANG DŨNG

ỨNG DỤNG MƠ HÌNH HÀNG ĐỢI THƠNG ĐIỆP
TRONG KIẾN TRÚC KHÁCH – CHỦ

LUẬN VĂN THẠC SĨ

Hà Nội 05 – 2011

i


ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƢỜNG ĐẠI HỌC CÔNG NGHỆ
-----------o0o-----------

NGUYỄN QUANG DŨNG

ỨNG DỤNG MƠ HÌNH HÀNG ĐỢI THƠNG ĐIỆP
TRONG KIẾN TRÚC KHÁCH – CHỦ

Ngành: Công nghệ thông tin
Chuyên ngành: Công nghệ phần mềm
Mã ngành: 60.48.10
LUẬN VĂN THẠC SĨ
CÁN BỘ HƢỚNG DẪN KHOA HỌC
PGS.TS ĐỖ TRUNG TUẤN



Hà Nội 06 – 2011

ii


LỜI CAM ĐOAN

Tôi xin cam đoan luận văn: “ỨNG DỤNG MƠ HÌNH HÀNG ĐỢI THƠNG
ĐIỆP TRONG KIẾN TRÚC KHÁCH – CHỦ” là kết quả nghiên cứu của riêng tôi,
không sao chép của riêng ai. Các số liệu và bảng biểu là hồn tồn chính xác và nội
dung luận văn có tham khảo và sử dụng các tài liệu, thông tin đuợc đăng tải trên các
tác phẩm, tạp chí và các trang web theo danh mục tài liệu của luận văn.

Hà nội ngày 28 tháng 06 năm 2011
Tác giả luận văn

Nguyễn Quang Dũng

iii


LỜI CÁM ƠN

Trước tiên tôi xin chân thành cảm ơn PGS.TS Đỗ Trung Tuấn, người thầy đã
hướng dẫn tận tình, chỉ bảo thẳng thắn và đã động viên tôi rất nhiều để tơi hồn
thành bản luận văn này.
Tơi xin chân thành cảm ơn các thầy, cô giáo của Trường Đại học Công nghệ
đặc biệt là các thầy, cô giáo trong bộ môn Công nghệ phần mềm đã giảng dạy, động
viên và tạo điều kiện thuận lợi cho tôi trong quá trình học tập và làm luận văn.

Tơi xin chân thành cám ơn lãnh đạo, các bạn đồng nghiệp tại Phòng Phát
triển công nghệ, Công ty Đầu tư và phát triển cơng nghệ VTC Intecom đã giúp đỡ
tơi trong q trình học tập và làm luận văn.
Sau cùng, tôi xin đuợc gửi lời cám ơn sâu sắc đến gia đình, người thân, bạn
bè - những người đã động viên, giúp đỡ tôi cả trong học tập và cuộc sống.

Hà nội ngày 28 tháng 06 năm 2011
Tác giả luận văn

Nguyễn Quang Dũng

iv


Mục lục
Mục lục ........................................................................................................................ i
Bảng ký hiệu các chữ viết tắt ..................................................................................... iii
Danh mục các bảng .................................................................................................... iv
Danh mục hình vẽ ....................................................................................................... v
Danh mục hình vẽ ....................................................................................................... v
Mở đầu ........................................................................................................................ 1
Lý do chọn đề tài ..................................................................................................... 1
Tóm tắt cơ đọng các luận điểm cơ bản của luận văn .............................................. 1
Nội dung của luận văn ............................................................................................ 1
Chương 1. Tổng quan về kiến trúc khách – chủ và hàng đợi thông điệp ................... 3
1.1 Kiến trúc khách – chủ ....................................................................................... 3
1.1.1 Mô hình khách – chủ.................................................................................. 3
1.1.2 Máy khách .................................................................................................. 5
1.1.3 Máy chủ...................................................................................................... 5
1.1.4 Đồng bộ – Không đồng bộ ......................................................................... 6

1.2 Hàng đợi thông điệp .......................................................................................... 7
1.2.1 Thông điệp ................................................................................................. 7
1.2.2 Hàng đợi thông điệp ................................................................................... 7
1.2.3 Hạn chế ...................................................................................................... 8
1.3 Kết luận ............................................................................................................. 8
Chương 2. Hàng đợi thông điệp trong kiến trúc khách – chủ ................................... 10
2.1 Kiến trúc hàng đợi thông điệp ......................................................................... 10
2.1.1 Ứng dụng khách ....................................................................................... 10
2.1.2 Ứng dụng chủ ........................................................................................... 11
2.1.3 Thành phần định tuyến............................................................................. 11
2.2 Lý do sử dụng hàng đợi thông điệp ................................................................ 12
2.1.1 Các chương trình có thể chạy ở các thời điểm khác nhau ....................... 13
2.1.2 Không rằng buộc về cấu trúc chương trình.............................................. 13
2.1.3 Các chương trình được tách riêng biệt khỏi sự phức tạp của mạng ........ 16
2.1.4 Chương trình có thể được sắp xếp, lên lịch để sử dụng tài nguyên một
cách tốt nhất ...................................................................................................... 17
2.1.5 Sự phối hợp giữa các tài nguyên .............................................................. 17
2.1.6 Dễ dàng di chuyển và sử dụng lại mã chương trình ................................ 19
2.1.7 Khi nào sử dụng hàng đợi thông điệp ...................................................... 19
2.1.8 Lợi ích của hàng đợi thông điệp so với cơ sở dữ liệu .............................. 20
2.3 Vịng đời của một thơng điệp .......................................................................... 20
2.4 Quá trình kết nối ............................................................................................. 21
2.5 Các thuộc tính của một hàng đợi thơng điệp .................................................. 22
2.5.1 Tên ........................................................................................................... 22
2.5.2 Tính duy nhất ........................................................................................... 22

i


2.5.3 Tính duy trì............................................................................................... 22

2.5.4 Tự động xóa ............................................................................................. 22
2.5.5 Một số thuộc tính khác ............................................................................. 23
2.6 Các yêu cầu của một hàng đợi thông điệp ...................................................... 23
2.6.1 Yêu cầu chức năng ................................................................................... 23
2.6.2 Yêu cầu khác ............................................................................................ 25
2.7 Một số hệ thống hàng đợi thông điệp phổ biến .............................................. 27
2.7.1 CORBA .................................................................................................... 27
2.7.2 IBM WebSphere MQ ............................................................................... 28
2.7.3 Microsoft Message Queueing .................................................................. 29
2.8 Kết luận ........................................................................................................... 29
Chương 3. Thiết kế hàng đợi thơng điệp .................................................................. 30
3.1 Mơ hình hàng đợi ............................................................................................ 31
3.1.1 Hàng đợi vào trước ra trước ..................................................................... 31
3.1.2 Hàng đợi có ưu tiên .................................................................................. 31
3.2 Mơ hình luồng thời gian .................................................................................. 31
3.3 Hiệu năng của hệ thống ................................................................................... 33
3.3.1 Một số định nghĩa .................................................................................... 33
3.4 Thông lượng hệ thống ..................................................................................... 34
3.4.1 Mơ hình giao tiếp đồng bộ ....................................................................... 34
3.4.2 Mơ hình hàng đợi thơng điệp vào trước ra trước ..................................... 34
3.4.3 Mơ hình hàng đợi thơng điệp có độ ưu tiên ............................................. 36
Chương 4. Thử nghiệm về áp dụng hàng đợi thông điệp để phân tải trong ứng dụng
kiến trúc khách – chủ ................................................................................................ 39
4.1 Bài toán thử nghiệm ........................................................................................ 39
4.1.1 Mơ tả bài tốn .......................................................................................... 39
4.1.2 Lý do sử dụng hàng đợi thông điệp ......................................................... 42
4.2 Lựa chọn hàng đợi thông điệp cho hệ thống ................................................... 44
4.2.1 Hệ thống lưu thông điệp tạm thời ............................................................ 44
4.2.2 Hệ thống lưu thông điệp bền vững .......................................................... 45
4.3 Cài đặt và tích hợp thử hệ thống ..................................................................... 46

4.3.1 Thành phần GameClient .......................................................................... 47
4.3.2 Thành phần GameGuard .......................................................................... 48
4.4 Kết quả thử nghiệm ......................................................................................... 48
4.4.1 Kết quả thử nghiệm truyền dữ liệu .......................................................... 48
4.4.2 Kết quả khi tích hợp với hệ thống ............................................................ 49
Chương 5. Kết luận ................................................................................................... 52
5.1 Đánh giá kết quả ............................................................................................. 52
5.2 Kết luận ........................................................................................................... 52
Tài liệu tham khảo..................................................................................................... 53

ii


Bảng ký hiệu các chữ viết tắt
Tên viế t tắ t

Tiế ng Viêṭ

Tiế ng Anh

XML

Ngôn ngữ đánh dấu mở rộng

eXtensible Markup Language

AJAX

JavaScript và XML không
đồng bộ


Asynchronous JavaScript and
XML

SSL

Bảo mật tầng socket

Secure Socket Layer

MSMQ

Tên một hệ thống hàng đợi
thông điệp của Microsoft

MicroSoft Message Queue

SAFMQ

Tên một hệ thống hàng đợi
thông điệp

Store And Forward Message
Queue

Guard

Bảo vệ

GameGuard


Hệ thống bảo vệ trò chơi

iii


Danh mục các bảng
Bảng 1: Tham số thời gian hệ thống ......................................................................... 34
Bảng 2: Kết quả truyền dữ liệu ................................................................................. 49

iv


Danh mục hình vẽ
Hình 1: Kiến trúc hàng đợi thơng điệp ..................................................................... 10
Hình 2: Sự thực thi của các chương trình trong hệ thống ......................................... 13
Hình 3: Quan hệ một - nhiều..................................................................................... 14
Hình 4: Quan hệ nhiều – một .................................................................................... 15
Hình 5: Mối quan hệ độc lập của các chương trình .................................................. 16
Hình 6: Quan hệ giữa các chương trình .................................................................... 16
Hình 7: Thay đổi chương trình.................................................................................. 18
Hình 8: Hàng đợi thơng điệp ..................................................................................... 30
Hình 9: Mơ hình luồng thời gian của hệ thống giao tiếp thơng thường ................... 31
Hình 10: Thời gian xử lý không đồng bộ lớn hơn thời gian phục vụ của hàng đợi . 32
Hình 11: Thời gian xử lý không đồng bộ nhỏ hơn thời gian phục vụ của hàng đợi . 33
Hình 12: Chương trình Guard trong hệ thống trị chơi trực tuyến ............................ 40
Hình 13: Tổng quan hệ thống Guard ........................................................................ 42
Hình 14: Mơ hình cài đặt hệ thống GameGuard với GameClient tại VTC .............. 47
Hình 15: Hệ thống chạy ổn định khi tích hợp với Audition ..................................... 50
Hình 16: Thơng tin tài khoản người chơi sử dụng công cụ lừa dối .......................... 51

Hình 17: Thơng tin các cơng cụ lừa dối được sử dụng ............................................. 51

v


Mở đầu
Lý do chọn đề tài
Ngày nay, kiến trúc khách – chủ là một kiến trúc phổ biến, được áp dụng nhiều
trong các hệ thống phần mềm. Với các hệ thống sử dụng kiến trúc này, việc giao
tiếp giữa chương trình khách và chương trình chủ là một thành phần quan trọng,
chiếm nhiều thời gian và công sức phát triển. Việc lựa chọn sử dụng một phương
thức cho phù hợp với yêu cầu của từng hệ thống có thể mang lại nhiều lợi ích, tiết
kiệm chi phí phát triển cũng như chi phí triển khai và nâng cấp.
Đề tài này nghiên cứu việc áp dụng mơ hình hàng đợi thơng điệp vào kiến trúc
khách – chủ, tìm hiểu xem áp dụng hàng đợi thông điệp vào hệ thống nào sẽ mang
lại độ tin cậy cũng như hiệu quả cao hơn các cách giao tiếp thơng thường.

Tóm tắt cơ đọng các luận điểm cơ bản của luận văn
Trong quyển luận văn này, tác giả xin tóm tắt lại một số luận điểm cơ bản và
đóng góp của tác giả như sau:
 Khảo sát và nghiên cứu các cách truyền thông điệp trong kiến trúc
khách – chủ
 Đánh giá hiệu suất của hệ thống khi sử dụng hàng đợi thông điệp là
phương thức giao tiếp khách – chủ
 Ứng dụng thực thế: Ứng dụng hàng đợi thông điệp vào một hệ thống
cụ thể - Hệ thống phần mềm bảo vệ trò chơi trực tuyến trên nền
Windows chống lại các hacker. Hàng đợi thông điệp sẽ được sử dụng
làm giải pháp cho việc giao tiếp giữa khách – chủ của hệ thống. Từ đó
đưa ra kết quả và các đánh giá cho hệ thống


Nội dung của luận văn
Luận văn sẽ nghiên cứu về hàng đợi thông điệp trong kiến trúc khách – chủ
gồm 5 chương:
Chƣơng 1: Tổng quan về kiến trúc khách – chủ và hàng đợi thơng điệp
Chương 1 trình bày các kiến thức chung nhấ t về kiế n trúc khách – chủ và các
khái niệm về hàng đợi thông điệp.

1


Chƣơng 2: Hàng đợi thông điệp trong kiến trúc khách – chủ
Chương 2 tìm hiểu chi tiết về hàng đợi thông điệp, các lý do tại sao việc áp
dụng mô hình hàng đợi thơng điệp trong kiến trúc khách chủ mang lại những lợi ích
nhất định. Đồng thời, chương này cũng tìm hiểu và đánh giá về một số loại hệ thống
cụ thể nên áp dụng hàng đợi thông điệp làm cơ chế giao tiếp khách – chủ.
Chƣơng 3: Thiết kế hàng đợi thơng điệp
Chương 3 tìm hiểu về các thành phần của một hệ thống hàng đợi thông điệp.
Trong chương này, chúng ta cũng đưa ra một số đánh giá, nhận xét về hiệu suất của
hệ thống khi sử dụng hàng đợi thông điệp so với khi không sử dụng hàng đợi thông
điệp, cũng như việc lựa chọn loại hàng đợi thơng điệp nào sẽ có những lợi ích và chi
phí cụ thể.
Chƣơng 4: Thử nghiệm về áp dụng hàng đợi thông điệp để phân tải
trong ứng dụng kiến trúc khách – chủ
Chương 4 trình bày về thử nghiệm việc áp dụng mơ hình hàng đợi thơng điệp
để phân tải trong kiến trúc khách – chủ. Trong chương này, mơ hình hàng đợi thơng
điệp sẽ được đưa vào một hệ thống phần mềm cụ thể, trong đó hàng đợi thơng điệp
đóng vai trị giao tiếp khách – chủ trong hệ thống để chuyển tải các thông tin cần
thiết lên máy chủ
Chƣơng 5: Kết luận
Chương 5 đưa ra một số đánh giá về kết quả thử nghiệm và kết luận


2


Chƣơng 1. Tổng quan về kiến trúc khách – chủ và hàng
đợi thông điệp
1.1 Kiến trúc khách – chủ
Thuật ngữ ứng dụng chủ được dùng cho những chương trình thi hành như một
dịch vụ trên toàn mạng. Các máy chủ này chấp nhận tất cả các yêu cầu hợp lệ đến từ
mọi nơi trên mạng, sau đó nó thi hành dịch vụ và trả kết quả về máy yêu cầu. Một
chương trình được coi là khách khi nó gửi các u cầu tới máy có chương trình chủ
và chờ đợi câu trả lời từ chương trình chủ. Chương trình chủ và khách nói chuyện
với nhau bằng các thơng điệp thơng qua một cổng truyền thơng liên tác. Để một
chương trình chủ và một chương trình khách có thể giao tiếp được với nhau thì giữa
chúng phải có một chuẩn để nói chuyện, chuẩn này được gọi là giao thức. Nếu một
chương trình khách nào đó muốn u cầu lấy thơng tin từ chương trình thì nó phải
tn theo giao thức mà chương trình chủ đó đưa ra. Bản thân chúng ta khi cần xây
dựng một mơ hình khách – chủ cụ thể thì ta cũng có thể tự tạo ra một giao thức
riêng nhưng thường chúng ta chỉ làm được điều này ở tầng ứng dụng của mạng. Với
sự phát triển mạng như hiện này thì có rất nhiều giao thức chuẩn trên mạng ra đời
nhằm đáp ứng nhu cầu phát triển này. Các giao thức chuẩn (ở tầng mạng và vận
chuyển) được sử dụng rộng rãi nhất hiện nay như: giao thức TCP/IP, giao thức SNA
của IBM, OSI, ISDN, X.25 hoặc giao thức LAN-to-LAN NetBIOS. Một máy tính
chứa chương trình chủ được coi là một máy chủ hay máy phục vụ và máy chứa
chương trình khách được coi là máy khách. Mơ hình mạng trên đó có các máy chủ
và máy khách giao tiếp với nhau theo một hoặc nhiều dịch vụ được gọi là mơ hình
khách – chủ. Thực tế thì mơ hình khách – chủ là sự mở rộng tự nhiên và tiện lợi cho
việc truyền thông liên tiến trình trên các máy tính cá nhân. Mơ hình này cho phép
xây dựng các chương trình khách – chủ một cách dễ dàng và sử dụng chúng để liên
tác với nhau để đạt hiệu quả hơn.


1.1.1 Mơ hình khách – chủ
Mơ hình khách – chủ là mơ hình tổng qt nhất, trên thực tế thì một máy chủ
có thể được nối tới nhiều máy chủ khác nhằm làm việc hiệu quả và nhanh hơn. Khi
nhận được một yêu cầu từ chương trình khách, chương trình chủ này có thể gửi tiếp
3


yêu cầu vừa nhận được cho chương trình chủ khác ví dụ như cơ sở dữ liệu vì bản
thân nó không thể xử lý yêu cầu này được. Máy chủ có thể thi hành các nhiệm vụ
đơn giản hoặc phức tạp. Ví dụ như một máy chủ trả lời thời gian hiện tại trong ngày,
khi một máy khách yêu cầu lấy thơng tin về thời gian nó sẽ phải gửi một yêu cầu
theo một tiêu chuẩn do ứng dụng chủ định ra, nếu yêu cầu được chấp nhận thì ứng
dụng chủ sẽ trả về thông tin mà ứng dụng khách yêu cầu. Có rất nhiều các dịch vụ
chủ trên mạng nhưng nó đều hoạt động theo nguyên lý là nhận các u cầu từ
chương trình khách sau đó xử lý và trả kết quả cho chương trình khách u cầu.
Thơng thường chương trình chủ và khách được thi hành trên hai máy khác nhau.
Cho dù lúc nào chương trình chủ cũng ở trạng thái sẵn sàng chờ nhận yêu cầu từ
chương trình khách nhưng trên thực tế một tiến trình liên tác qua lại giữa khách và
chủ lại bắt đầu ở phía máy khách, khi mà ứng dụng khách gửi tín hiệu u cầu tới
ứng dụng chủ. Các chương trình chủ thường đều thi hành ở mức ứng dụng (tầng ứng
dụng của mạng). Sự thuận lợi của phương pháp này là nó có thể làm việc trên bất cứ
một mạng máy tính nào có hỗ trợ giao thức truyền thơng chuẩn cụ thể ở đây là giao
thức TCP/IP. Với các giao thức chuẩn này cũng giúp cho các nhà sản xuất có thể
tích hợp nhiều sản phẩm khác nhau của họ lên mạng mà khơng gặp phải khó khăn
gì. Với các chuẩn này thì các chương trình chủ cho một dịch vụ nào đấy có thể thi
hành trên một hệ thống chia sẻ thời gian với nhiều chương trình và dịch vụ khác
hoặc nó có thể chạy trên chính một máy tính các nhân bình thường. Có thể có nhiều
chương trình chủ cùng làm một dịch vụ, chúng có thể nằm trên nhiều máy tính hoặc
một máy tính. Với mơ hình trên chúng ta nhận thấy rằng mơ hình khách – chủ chỉ

mang đặc điểm của phần mềm không liên quan gì đến phần cứng mặc dù trên thực
tế yêu cầu cho một máy chủ là cao hơn nhiều so với máy khách. Lý do là bởi vì máy
chủ phải quản lý rất nhiều các yêu cầu từ các máy khách khác nhau trên mạng.

1.1.1.1 Ưu và nhược điểm chính
Có thể nói rằng với mơ hình khách – chủ thì mọi thứ dường như đều nằm trên
bàn của người sử dụng, nó có thể truy cập dữ liệu từ xa (bao gồm các cơng việc như
gửi và nhận tệp, tìm kiếm thông tin, ...) với nhiều dịch vụ đa dạng mà mơ hình cũ
khơng thể làm được. Mơ hình khách – chủ cung cấp một nền tảng lý tưởng cho phép
tích hợp các kỹ thuật hiện đại như mơ hình thiết kế hướng đối tượng, hệ chuyên gia,
hệ thông tin địa lý ... Một trong những vấn đề nảy sinh trong mơ hình này đó là tính

4


an tồn và bảo mật thơng tin trên mạng, do phải đảm bảo an toàn trong việc trao đổi
dữ liệu giữa hai máy ở hai khu vực khác nhau.

1.1.2 Máy khách
Trong mơ hình khách – chủ, người ta cịn định nghĩa cụ thể cho một máy
khách là một máy trạm mà chỉ được sử dụng bởi một người dùng với để muốn thể
hiện tính độc lập cho nó. Máy khách có thể sử dụng các hệ điều hành bình thường
như Windows, DOS, Linux, OS/2... Bản thân mỗi một ứng dụng chủ cũng đã được
tích hợp nhiều chức năng trên hệ điều hành mà nó chạy, nhưng khi được nối vào
một mạng LAN, WAN theo mơ hình khách – chủ thì nó cịn có thể sử dụng thêm
các chức năng do hệ điều hành mạng cung cấp với nhiều dịch vụ khác nhau (cụ thể
là các dịch vụ do các chương trình chủ trên mạng này cung cấp), ví dụ như nó có thể
yêu cầu lấy dữ liệu từ một máy chủ hay gửi dữ liệu lên máy chủ đó. Thực tế trong
các ứng dụng của mơ hình khách – chủ, các chức năng hoạt động chính là sự kết
hợp giữa khách và chủ với sự chia sẻ tài nguyên, dữ liệu trên cả hai máy.


Vai trị của chương trình khách
Trong mơ hình khách – chủ, chương trình khách được coi như là người sử
dụng các dịch vụ trên mạng do một hoặc nhiều máy chủ cung cấp và chương trình
chủ được coi như là người cung cấp dịch vụ để trả lời các yêu cầu của các chương
trình khách. Điều quan trọng là phải hiểu được vai trò hoạt động của nó trong một
mơ hình cụ thể, một máy khách trong mơ hình này lại có thể là máy chủ trong một
mơ hình khác. Ví dụ cụ thể như một máy trạm làm việc như một máy chủ bình
thường trong mạng LAN nhưng đồng thời nó có thể đóng vai trò như một máy in
chủ cung cấp dịch vụ in ấn từ xa cho nhiều ứng dụng khác (ứng dụng khách) sử
dụng. Chương trình khách được hiểu như là bề nổi của các dịch vụ trên mạng, nếu
có thơng tin vào hoặc ra thì chúng sẽ được hiển thị trên máy khách.

1.1.3 Máy chủ
Máy chủ còn được định nghĩa như là một máy tính nhiều người sử dụng. Vì
một máy chủ phải quản lý nhiều yêu cầu từ các chương trình khách trên mạng cho
nên nó hoạt động sẽ tốt hơn nếu hệ điều hành của nó là đa nhiệm với các tính năng
hoạt động độc lập song song với nhau như hệ điều hành UNIX, WINDOWS... Máy
chủ cung cấp và điều khiển các tiến trình truy cập vào tài nguyên của hệ thống. Các
5


ứng dụng chạy trên máy chủ phải được tách rời nhau để một lỗi của ứng dụng này
không làm hỏng ứng dụng khác. Tính đa nhiệm đảm bảo một tiến trình khơng sử
dụng tồn bộ tài ngun hệ thống. Chương trình chủ có vai trị như là một nhà cung
cấp dịch vụ cho các chương trình khách yêu cầu tới khi cần, các dịch vụ như cơ sở
dữ liệu, in ấn, truyền tệp, hệ thống... Các ứng dụng chủ cung cấp các dịch vụ mang
tính chức năng để hỗ trợ cho các hoạt động trên các máy khách có hiệu quả hơn. Sự
hỗ trợ của các dịch vụ này có thể là tồn bộ hoặc chỉ một phần thơng qua IPC.


1.1.4 Đồng bộ – Không đồng bộ
Rất nhiều giao thức giao tiếp đang được phổ biến hiện tại là các giao tiếp đồng
bộ hóa. Một ví dụ là giao thức HTTP – sử dụng trong World Wide Web và các dịch
vụ web, ở đó người dùng gửi một yêu cầu tới một trang web và chờ đợi cho đến khi
trang web phục vụ.
Tuy nhiên, trong nhiều trường hợp, việc đồng bộ hóa là khơng cần thiết. Một
ví dụ là AJAX, việc truyền dữ liệu (dữ liệu thuần hoặc XML) để cập nhật một phần
của trang web với nhiều thông tin có liên quan hơn. Các ứng dụng AJAX có thể gửi
yêu cầu tới các máy chủ để nhận về chỉ những dữ liệu cần thiết. Google sử dụng giải
pháp này trong ứng dụng Google Suggest của họ, một tính năng tìm kiếm cho phép
trình duyệt gửi dữ liệu đang được gõ bởi người dùng lên máy chủ Google và trả lại
một danh sách những truy vấn đầy đủ mà có thể phù hợp với từ khóa của người
dùng. Danh sách này được cập nhật khơng đồng bộ trong q trình gõ của người sử
dụng.
Một vài ví dụ khác của việc sử dụng giao tiếp không đồng bộ
 Một ứng dụng cần thơng báo tới một ứng dụng khác rằng có một sự
kiện xảy ra, nhưng không cần đợi phản hồi.
 Trong một hệ thống thông báo, một ứng dụng sẽ cơng bố thơng tin cho
rất nhiều máy khách có thể truy cập thơng báo đó.
Trong cả hai ví dụ trên, ứng dụng gửi thông tin đều không phải quan tâm xem
ứng dụng cần nhận thơng tin có nhận được thơng tin đó hay khơng hay ứng dụng đó
có hoạt động bình thường hay khơng? Trong thực tế, hệ thống có rất nhiều giao tiếp
giữa các tiến trình. Một số trong đó cần được giao tiếp đồng bộ hóa, một số khơng.
Vì vậy, chúng ta có thể xem xét để sử dụng hàng đợi thông điệp như một phần của

6


hệ thống (cho các giao tiếp không cần đồng bộ hóa) để tăng hiệu suất chung của hệ
thống.


1.2 Hàng đợi thông điệp
1.2.1 Thông điệp
Thông điệp là một thông tin được truyền từ một tiến trình này tới một tiến
trình khác. Việc truyền tin giữa các tiến trình có thể là một chiều (ví dụ, từ tiến trình
A tới tiến trình B) hoặc cũng có thể là hai chiều (thơng điệp từ tiến trình A được gửi
tới tiến trình B, tiến trình B trả lời lại tiến trình A). Tuy nhiên, việc truyền tin hai
chiều này cũng không là bắt buộc, nếu tiến trình A gửi thơng điệp nhưng khơng u
cầu phản hồi thì cũng khơng có thơng tin phản hồi từ tiến trình B.

1.2.2 Hàng đợi thơng điệp
Hàng đợi thơng điệp là một cơ chế cho phép tiến trình gửi và tiến trình nhận
trao đổi thơng điệp. Tiến trình gửi sẽ đặt thơng điệp vào hàng đợi, trong khi tiến
trình nhận lấy thông điệp từ hàng đợi để xử lý.
Một hệ thống hàng đợi thơng điệp có thể được xem là một phần của hệ phân
tán, khi mà các ứng dụng phân tán trao đổi thông tin qua hàng đợi. Hàng đợi thơng
điệp chứa thơng tin (cịn được gọi là thơng điệp) trên bộ nhớ hoặc ổ cứng, sau đó
điều phối chúng theo thứ tự tới một hoặc nhiều ứng dụng để xử lý. Một hàng đợi
thông điệp là một thực thể dùng để lưu trữ và điều phối thông tin, và vì vậy hiển
nhiên đó là một đối tượng.
Một hàng đợi thơng điệp có rất nhiều thuộc tính như: thông điệp trong hàng
đợi là riêng tư hay được chia sẻ, thơng điệp mang tính lâu dài hay tạm thời, các
thuộc tính về tên khách, tên chủ … Hàng đợi thông điệp cung cấp một giao thức
giao tiếp không đồng bộ, có nghĩa là người gửi và người nhận thơng điệp không cần
giao tiếp với hàng đợi tại cùng một thời điểm. Thông điệp đươc đặt vào một hàng
đợi và được lưu trữ cho tới khi nó được chuyển tới người nhận. Hầu hết các hàng
đợi thông điệp đều quy định giới hạn về kích cỡ của dữ liệu có thể được truyền đi
như một thông điệp đơn lẻ.

7



Trong thực tế, một số hàng đợi thông điệp được thiết kế chuyên biệt, phục vụ
cho một hệ thống cụ thể nào đó với chỉ chức năng truyền thơng điệp bên trong một
hệ điều hành hoặc một chương trình cụ thể nào đó. Tuy nhiên, hầu hết các hàng đợi
thơng điệp cho phép chuyển thông điệp giữa các hệ thống khác nhau, kết nối các
chương trình và các hệ điều hành khác nhau. Các hệ thống hàng đợi thông điệp
thường được thiết kế theo hướng mềm dẻo, để đảm bảo thông điệp không bị mất
ngay cả khi hệ thống mạng bị lỗi.
Có rất nhiều lựa chọn cho việc sử dụng hệ thống hàng đợi thông điệp như
Jboss Messaging, JORAM, Apache ActiveMQ, Sun Open Message Queue,
ApacheQpid hay HTTPSQS
Thông thường, các hệ thống hàng đợi thông điệp cho phép truyền thông điệp
giữa các hệ thống khác nhau, kết nối các ứng dụng và các hệ điều hành khác nhau.
Chúng cũng thường đảm bảo ràng thông điệp không bị mất mát ngay cả khi hệ
thống gặp lỗi.

1.2.3 Hạn chế
Điểm hạn chế lớn nhất của các hệ thống hàng đợi thơng điệp là nó yêu cầu rất
nhiều các thành phần khác nhau trong một hệ thống. Với bất kỳ hệ thống nào, việc
thêm vào một thành phần có thể dẫn tới việc giảm hiệu suất và tính tin cận, và có thể
là khó nâng cấp, bảo trì
Hơn nữa, việc có nhiều chương trình giao tiếp khơng đồng bộ, nếu nhiều
chương trình khách muốn đợi phản hồi từ máy chủ trước khi tiếp tục xử lý (ví dụ
trong các việc tính tốn thời gian thực) sẽ gây ra nhiều vấn đề. Bởi vì hàng đợi
thơng điệp vốn dĩ là khơng đồng bộ, nên thường nó khơng thích hợp trong các
trường hợp này
Thiếu chuẩn hóa: Việc thiếu một sự chuẩn hóa cho các hàng đợi thơng điệp có
thể gây ra nhiều vấn đề khác nhau. Mỗi nhà phát triển (IBM, Microsoft và nhiều nhà
phát triển khác) có một kiến trúc khác nhau, có giao diện (API) khác nhau và có

những cơng cụ quản lý khác nhau.

1.3 Kết luận
Như vậy, sử dụng hàng đợi thông điệp trong ứng dụng như là một thành phần
giao tiếp khách – chủ sẽ mang lại nhiều lợi ích. Trước hết, chúng ta có thể chia nhỏ

8


hệ thống thành nhiều chương trình nhỏ. Các chương trình này có thể giao tiếp với
nhau (thơng qua hàng đợi thông điệp) và cùng chia sẻ tài nguyên hệ thống. Nhờ đó,
chúng ta có thể dễ dàng quản lý các thành phần của hệ thống. Đồng thời, khi chương
trình cần nâng cấp, sửa chữa, việc nâp cấp cũng chỉ diễn ra ở một số chương trình
cục bộ mà khơng ảnh hưởng quá nhiều tới hệ thống. Sử dụng hàng đợi thơng điệp
giúp chúng ta có thể xây dựng nhanh các ứng dụng mới bằng cách sử dụng lại tài
nguyên cũ của hệ thống. Khi nghiệp vụ thay đổi, chỉ các thành phần chương trình
liên quan tới nghiệp vụ mới cần thay đổi. Chương trình sử dụng hàng đợi thơng điệp
khơng bị ảnh hưởng khi hàng đợi thông điệp thay đổi cách thức làm việc (vẫn sử
dụng các giao diện ứng dụng như cũ)
Một ưu điểm nữa của hàng đợi thông điệp là chương trình đón nhận thơng điệp
khơng cần phải chạy ở cùng một thời điểm với chương trình gửi ứng dụng. Trong
trường hợp đó, thơng điệp vẫn được lưu lại trên hàng đợi và chờ được xử lý. Hơn
nữa, việc sử dụng hàng đợi thơng điệp cịn giúp làm giảm thiểu thời gian và công
sức phát triển hệ thống đo thành phần giao tiếp đã sẵn sàng.

9


Chƣơng 2. Hàng đợi thông điệp trong kiến trúc khách –
chủ

2.1 Kiến trúc hàng đợi thông điệp
Hàng đợi thông điệp hoạt động dựa trên nguyên tắc truyền thông điệp và sử
dụng hàng đợi để lưu thơng điệp. Nó được tạo nên bởi ba thành phần chính như hình
1 sau:

Hình 1: Kiến trúc hàng đợi thông điệp

2.1.1 Ứng dụng khách
Thông thường, ứng dụng khách là một ứng dụng cần xử lý thơng tin ở một
máy tính khác hoặc cần lấy thơng tin trả lại từ máy tính khác. Sau khi gửi thơng điệp
đi, ứng dụng có thể tiếp tục thực thi các thao tác khác cho tới khi nhận được kết quả
truyền về

10


2.1.2 Ứng dụng chủ
Là một máy chủ tiếp nhận thông điệp và xử lý thông điệp theo yêu cầu nghiệp
vụ. Máy chủ này sẽ gửi trả kết quả tới thành phần định tuyến để nó được truyền lại
cho ứng dụng khách

2.1.3 Thành phần định tuyến
Là thành phần chính của một hệ thống hàng đợi thông điệp. Nhiệm vụ của
thành phần định tuyến là định tuyến thơng điệp. Nó tiếp nhận thông điệp được gửi
lên từ ứng dụng khách và định tuyến nó tới máy chủ mà thơng điệp cần được
chuyển tới. Trong phần này, chúng ta sẽ xem xét một số nhiệm vụ và thành phần
chính của bộ định tuyến trong một hệ thống hàng đợi thông điệp

2.1.3.1 Nhiệm vụ của thành phần định tuyến
Định tuyến thông điệp và truyền thơng điệp

Việc định tuyến thơng điệp có thể dựa vào các tham số khác nhau. Các tham số
này được thiết lập bởi ứng dụng khách. Đích đến của thơng điệp có thể được quyết
định dựa vào các tham số như định danh của ứng dụng gửi, kiểu thông điệp, nội
dung thông điệp hoặc loại ứng dụng.
Điều khiển luồng thông điệp
Người quản trị hàng đợi thơng điệp có thể đề ra một tập hợp các quy tắc để
điều khiển luồng các thơng điệp. Các quy tắc này có thể được sử dụng là một yếu tố
để ngăn quá tải hàng đợi
Lƣu trữ thông điệp
Thành phần định tuyến hỗ trợ việc lưu trữ thông điệp khi mà chúng không thể
chuyển tới máy đích. Khi mà máy chủ sẵn sàng, nó sẽ lấy thông điệp từ thành phần
định tuyến

2.1.3.2 Cấu tạo của thành phần định tuyến
Thành phần định tuyến chứa ba thành phần chính là:
Thành phần logic
Có nhiệm vụ định tuyến, lọc và truyền thơng điệp.
Hàng đợi phục vụ chƣơng trình khách
Thơng điệp truyền tới từ ứng dụng khách được lưu ở hàng đợi này
Hàng đợi phục vụ chƣơng trình chủ
11


Lưu trữ thông tin cho các nhà cung cấp dịch vụ (chương trình chủ). Thơng
thường, mỗi nhà cung cấp dịch vụ có một hàng đợi riêng. Tuy nhiên thành phần
định tuyến cũng có thể nhóm các thơng điệp có thể được thực thi bởi nhiều nhà cung
cấp dịch vụ trong một hàng đợi đơn để tiết kiệm tài nguyên
Giao tiếp giữa các ứng dụng khách và chủ là không đồng bộ. Chúng không cần
phải chạy tại cùng một thời điểm, hàng đợi thông điệp sẽ gửi thông điệp tới chúng
(ứng dụng khách hoặc chủ) khi mà chúng đã sẵn sàng. Hệ thống vì thế mà yêu cầu

nhiều tài nguyên, đặc biệt là tài nguyên bộ nhớ để lưu trữ các hàng đợi đã nhận
nhiều thông điệp nhưng chưa được xử lý.

2.2 Lý do sử dụng hàng đợi thông điệp
Hàng đợi thông điệp là lựa chọn phù hợp trong trường hợp chúng ta khó có thể
thiết lập một kết nối ổn định, sự kết nối giữa khách và chủ là không chặt chẽ. Nó
cũng rất thích hợp trong trường hợp chúng ta chỉ muốn chương trình từ máy khách
gửi dữ liệu tới máy chủ và kết thúc chương trình, khơng cần đợi tới khi máy chủ xử
lý xong dữ liệu đó. Sử dụng hàng đợi giúp cho dữ liệu không bị mất mát và không
mất thời gian chờ đợi của ứng dụng máy khách. Hiển nhiên là không phải ứng dụng
nào cũng thích hợp để sử dụng hàng đợi thơng điệp. Ví dụ các ứng dụng thời gian
thực khơng nên sử dụng giải pháp này. Tuy nhiên để lưu trữ và đón nhận dữ liệu từ
máy khách, việc sử dụng hàng đợi thơng điệp là thích hợp.
Từ định nghĩa về thơng điệp và hàng đợi, chúng ta có thể thấy được ba đặc
điểm chính khi sử dụng hàng đợi thơng điệp để truyền tin trong kiến trúc khách chủ
là:
 Các chương trình tương tác với nhau nhưng có thể chạy ở các thời điểm
khác nhau
 Không yêu cầu rằng buộc về cấu trúc chương trình
 Các chương trình trong hệ thống khơng phụ thuộc chặt chẽ vào tính ổn
định của đường truyền mạng
Sau đây, chúng ta sẽ lần lượt phân tích từng đặc tính

12


2.1.1 Các chƣơng trình có thể chạy ở các thời điểm khác nhau

Chưưng trình khách


Chưưng trình chư

Thơng
điưp

Hàng đưithơngđiưp

Hình 2: Sự thực thi của các chƣơng trình trong hệ thống

Các chương trình khơng giao tiếp trực tiếp mà thơng qua việc đặt các thơng
điệp vào hàng đợi. Vì vậy mà chúng khơng cần phải chạy ở cùng một thời điểm.
Chương trình đích có thể bận trong khi chương trình đích đang đưa thơng điệp vào
một hàng đợi thích hợp. Việc thơng điệp đã tới được chương trình đích hay chưa
khơng ảnh hưởng tới quá trình xử lý của chương trình gửi thơng điệp, và chương
trình đích cũng khơng cần thiết phải xử lý thơng điệp đó ngay lập tức, trong thực tế,
nó có thể được khởi động sau đó vài giờ hoặc thậm chí vài ngay sau khi chương
trình từ máy khách gửi thông điệp tới hàng đợi.

2.1.2 Không rằng buộc về cấu trúc chƣơng trình
Trong kiến trúc khách – chủ, mối quan hệ một – một giữa các chương trình (dữ
liệu từ một chương trình A được truyền tới chương trình B, và có thể được truyền
theo hướng ngược lại) là tương đối đơn giản. Tuy nhiên hàng đợi thông điệp cung
cấp một cơ chế để thiết kế các ứng dụng phức tạp hơn, với các mối quan hệ một –
nhiều hoặc nhiều – nhiều giữa các chương trình.

13


Chưưng trình B


Chưưng trình B

Chưưng trình A

Hàng đưithơngđiưp
Chưưng trình C

Hình 3: Quan hệ một - nhiều

Mối quan hệ một – nhiều giữa các chương trình. Trong ví dụ ở hình trên,
chương trình A có thể giao tiếp với nhiều chương trình (B, C hoặc D). Thơng tin
cũng có thể được thiết lập là hai chiều nếu cần thiết. Dữ liệu có thể dễ dàng truyền
từ một trong các chương trình B, C hoặc D về chương trình A.
Trong ví dụ này, các chương trình B, C hoặc D có thể là:
 Ba bản sao của một chương trình cùng được chạy độc lập với mục đích
cân bằng tải. Điều này có thể được cân nhắc khi chương trình A có thể
hồn tất cơng việc nhanh hơn một chương trình (B, C hoặc D) ở trên
máy chủ có thể thực hiện
 Ba chương trình khác nhau lấy dữ liệu từ một hàng đợi duy nhất. Như
vậy, các chương trình sử dụng chung nguồn dữ liệu, xử lý dữ liệu này
theo các cách khác nhau nhưng các chương trình lại có thể thực thi cùng
một lúc. Điều này giúp giảm tổng thời gian xử lý của hệ thống.

14


Chưưng trình B

Chưưng trình C


Chưưng trình E

Hàng đưithơngđiưp
Chưưng trình D

Hình 4: Quan hệ nhiều – một

Trong hình vẽ trên, các chương trình B, C, D có thể là các chương trình khách
kết nối tới một chương trình chủ (chương trình E). Tuy nhiên, bởi vì khơng có kết
nối trực tiếp giữa chương trình khách tới chương trình chủ nên chương trình chủ có
thể lấy thơng điệp từ hàng đợi một cách đơn giản thông qua cơ chế FIFO (vào trước
ra trước) hoặc thông qua độ ưu tiên của các thông điệp (được gán bởi các chương
trình khách). Nhờ vậy, nếu chương trình của máy chủ biết thơng điệp từ một chương
trình khác (chẳng hạn chương trình C) có độ ưu tiên cao hơn các chương trình khác,
nó sẽ quyết định đưa các thông điệp này tới đầu hàng đợi. Nếu khơng có hàng đợi
thơng điệp, các chương trình khách trong kiến trúc khách – chủ thông thường sẽ chỉ
được xử lý một cách tuần tự (tuy nhiên, không phải hàng đợi thông điệp nào cũng
hỗ trợ việc thiết lập độ ưu tiên cho mỗi thông điệp)
Mối quan hệ giữa các chương trình trong hệ thống cũng có thể là độc lập nhau
trong một hệ thống thống nhất. Ba mối quan hệ giữa các chương trình phổ biến là
quan hệ một – một, một – nhiều và nhiều – một có thể cùng được sử dụng trong
cùng một hệ thống, và mỗi mối quan hệ này cũng có thể là một chiều hoặc hai chiều
mà không phụ thuộc vào các mối quan hệ khác.

15


Chưưng trình B

Chưưng trình A


Chưưng trình C

Chưưng trình E

Chưưng trình F

Chưưng trình D

Hình 5: Mối quan hệ độc lập của các chƣơng trình

Bất kỳ mối quan hệ nào cũng có thể được áp dụng trong hệ thống. Điều này
cũng có nghĩa là giữa các chương trình khơng có rằng buộc.
Chưưng trình A

Chưưng trình B

Chưưng trình C

Chưưng trình D

Chưưng trình H

Chưưng trình E

Chưưng trình G

Chưưng trình K

Chưưng trình F


Chưưng trình J

Hình 6: Quan hệ giữa các chƣơng trình

Hơn nữa, các chương trình trong hình trên có thể được đặt ở bất kỳ chỗ nào
trong mạng, khơng phụ thuộc vào vị trí địa lý mà các chương trình được đặt. Hàng
đợi thơng điệp cho phép các chương trình giao tiếp sử dụng các công nghệ tương tự
nhau mà không cần quan tâm nhiều tới vị trí của các chương trình.

2.1.3 Các chƣơng trình đƣợc tách riêng biệt khỏi sự phức tạp của
mạng
Chương trình A giao tiếp với chương trình B bằng việc đặt một thơng điệp vào
hàng đợi của chương trình B. Chương trình B nhận thơng tin bằng cách lấy thơng
điệp trong hàng đợi Mọi công việc liên quan tới quá trình này như hàng đợi thơng
điệp, giao tiếp giữa chương trình và hàng đợi hay di chuyển thơng điệp trong mạng
đều được cung cấp bởi hàng đợi thông điệp. Các chương trình khơng giao tiếp trực
16


×