Các yêu cầu của một hàng đợi thông điệp

Một phần của tài liệu Ứng dụng mô hình hàng đợi thông điệp trong kiến trúc khách - chủ (Trang 32)

2.6.1 Yêu cầu chức năng

2.6.1.1 Mô hình thông điệp

Đối với yêu cầu cho một kiến trúc thông điệp, một hàng đợi thông điệp cần phải có nhưng khả năng cơ bản sau:

Trước hết, hàng đợi thông điệp phải có khả năng lưu trữ và truyền thông điệp với nhiều tiến trình cùng ghi thông điệp cho một tiến trình xử lý. Hơn nữa, nó phải có khả năng phân tán quá trình truyền thông điệp với nhiều tiến trình gửi và nhiều tiến trình nhận. Đồng thời, hàng đợi thông điệp có chức năng lưu trữ thông điệp vào hàng đợi khi tiến trình chủ chưa kịp xử lý dữ liệu. Một yêu cầu nữa đối với một hàng đợi thông điệp là khả năng hỗ trợ quá trình truyền tệp tin.

2.6.1.2 Lưu trữ và truyền thông điệp

Lưu trữ và truyền là một hệ thống giao tiếp mà thông điệp được tiếp nhận, lưu trữ và truyền đi bằng một hàng đợi. Khi một chương trình chuẩn bị thông điệp và

chuyển tới một ứng dụng khác, nó sẽ đặt thông điệp vào hàng đợi. Thông điệp đó sẽ được hàng đợi nhận và chuyển tới ứng dụng đích.

Các đặc tính của một mô hình lưu trữ và truyền thông điệp bao gồm:

 Thông điệp được gán địa chỉ để truyền tới một ứng dụng cụ thể.

 Thông điệp không bị xóa đi, cho tới khi nó được truyền đầy đủ, nguyên vẹn tới ứng dụng đích.

 Thông điệp chỉ được truyền đến ứng dụng đích một lần, không lặp lại việc truyền trừ khi có lỗi trong quá trình truyền tin.

 Thông điệp được truyền đi có thứ tự.

 Việc truyền tin có đồng bộ hóa hay không được quyết định bởi người gửi. Nếu người gửi muốn truyền tin có đồng bộ hóa, người gửi sẽ thông báo cho hệ thống hàng đợi thông điệp để đợi cho đến khi nhận được thông điệp phản hồi.

 Thông điệp cũng có thể không thể truyền được đến ứng dụng đích. Trong trường hợp đó, thông điệp sẽ được chuyển vào một hàng đợi đặc biệt của hệ thống hàng đợi thông điệp hoặc sẽ được truyền ngược lại cho ứng dụng gửi thông điệp.

 Thông điệp có thể bị hoãn lại. Khi đó, kích cỡ của hàng đợi sẽ tăng lên và tùy thuộc vào từng trường hợp cụ thể mà hệ thống có thể cảnh báo khi kích cỡ đến một mức độ nào đó.

Với các ứng dụng thông thường, chúng ta có thể thiết lập thời gian mong muốn (chẳng hạn vài giây) để hoàn tất quá trình truyền thông điệp. Nếu chúng ta không thiết lập thành phần này, hệ thống sẽ thực thi quá trình truyền thông điệp mà không bị rằng buộc bởi yếu tố thời gian.

2.6.1.3Định tuyến theo nội dung thông điệp

Với phương pháp định tuyến theo nội dung thông điệp, ứng dụng nào sẽ nhận được thông điệp không phụ thuộc vào ứng dụng gửi mà phụ thuộc vào chính nội dung thông điệp đó. Hệ thông sẽ tạo ra một tập các quy tắc, từ đó tính toán xem thông điệp sẽ được gửi tới ứng dụng nào.

Việc tính toán cho quá trình định tuyến sẽ mất một thời gian nhất định, vì vậy mà phương pháp này thường chỉ được áp dụng với một số hệ thống phức tạp và thông điệp có kích thước nhỏ.

Trong mô hình này, ứng dụng chủ sẽ không gửi thông tin tới một ứng dụng cụ thể nào mà nó sẽ gửi thông điệp như một dạng thông báo. Nhiều ứng dụng khác nhau có thể nhận được thông báo này.

Các đặc tính của mô hình thông báo là: Việc định tuyến sẽ dựa theo tên. Các ứng dụng đọc thông báo sẽ yêu cầu lấy thông điệp dựa vào tên. Thông thường, một thông báo sẽ chỉ tồn tại trong một thời gian nhất định. Sau thời gian đó, nó sẽ bị hủy. Việc truyền thông điệp là không đồng bộ và tiến trình chủ sẽ không biết là đã tới được tiến trình đọc hay chưa?

Mô hình hàng đợi thông điệp này có thể mang lại nhiều ưu điểm rõ ràng cho một số hệ thống đặc biệt, ví dụ hệ thống thông báo giá chứng khoán, giá cả thị trường.

2.6.2 Yêu cầu khác

2.6.2.1 Hiệu suất

Trong bất kỳ một hệ thống giao tiếp khách – chủ nào, khả năng quá tải của hệ thống là một trong những thách thức lớn nhất. Ở đây, khả năng xử lý và tốc độ truyền thông điệp cũng như độ lớn của hàng đợi để có thể lưu trữ được nhiều thông điệp là những yếu tố chính ảnh hưởng tới hiệu suất của hệ thống.

2.6.2.2 Tính tin cậy

Trong một hệ thống bất kỳ, tính tin cậy và hiệu suất là các yếu tố ảnh hưởng trực tiếp tới nhau. Vì vậy, chúng ta cần xem xét tới việc cân bằng các yếu tố khác nhau để đạt được sự kết hợp tốt nhất. Khi chúng ta muốn thiết kế một hệ thống hàng đợi thông điệp với độ tin cậy cao, tốc độ của hệ thống sẽ bị giảm xuống. Và ngược lại, việc nâng cao tốc độ sẽ ảnh hưởng tới độ tin cậy của hệ thống. Ở đây, độ tin cậy có thể được xem xét ở một số đặc tính sau:

 Loại bộ nhớ được sử dụng: RAM hay thiết bị lưu trữ. Nếu chúng ta muốn thông điệp vẫn còn tồn tại sau khi hệ thống bị khởi động lại, chúng ta buộc phải sử dụng thiết bị lưu trữ ổ đĩa để lưu thông điệp

 Mức độ lặp của thông tin: không có, hoặc có một, hai hay nhiều lần lặp. Nếu chúng ta muốn thông tin vẫn còn tồn tại sau khi hệ thống bị lỗi (như hỏng ổ đĩa), chúng ta phải lưu thêm thông tin để đề phòng trường hợp hệ thống bị mất dữ liệu bởi các lý do khác nhau.

 Lưu trữ thêm ở các khoảng cách khác nhau (khoảng cách về mặt vật lý): Việc này được tính đến để ngăn ngừa khả năng gặp các sự cố ở mức vật lý, ví dụ như thiết bị lưu trữ bị cháy nổ hay bị ngập. Nếu chúng ta có thêm các thiết bị lưu trữ ở chỗ khác sẽ giảm thiểu được tác động bất lợi từ những sự cố này.

 Mức độ kết dính của thông tin: Mức độ kết dính của thông tin bao gồm các trường hợp: không, một phần hay hoàn toàn. Nếu chúng ta muốn thông tin được lưu trữ một cách an toàn, chúng ta phải xử lý thông tin ở mức độ kết dính cao hơn.

2.6.2.2 Chi phí

Đối với một hệ thống sử dụng hàng đợi như một giải pháp cho việc giao tiếp khách – chủ, chi phí cho thành phần giao tiếp sẽ được tính toán như một tác nhân quan trọng. Vì vậy, việc sử dụng hệ thống hàng đợi thông điệp với chi phí thấp là rất quan trọng. Chi phí cho giải pháp ở đây bao gồm: Chi phí để nghiên cứu và sử dụng hàng đợi thông điệp cho hệ thống, chi phí bản quyền (nếu có), chi phí để mua hỗ trợ từ nhà cung cấp (nếu có), chi phí cho quá trình triển khai (như số lượng máy chủ, …) hoặc chi phí để nâng cấp, bảo trì

2.6.2.3 Tính mềm dẻo

Các hệ thống hàng đợi thông điệp cần được thiết kế mang tính mềm dẻo cao, tức là nó có thể sử dụng được với nhiều loại hệ thống với những mục đích khác nhau. Hơn nữa, trong một hệ thống sử dụng giải pháp này, nếu yêu cầu nghiệp vụ thay đổi thì hệ thống cần dễ dàng thay đổi theo yêu cầu

Hệ thống hàng đợi thông điệp cũng nên được thiết kế để có thể chạy trên nhiều nền tảng hệ điều hành khác nhau như Windows hay Linux. Đồng thời cũng nên hỗ trợ nhiều giao diện lập trình cho nhiều ngôn ngữ lập trình khác nhau.

2.6.2.4 Tính đơn giản

Rõ ràng tạo ra một hệ thống đơn giản và dễ sử dụng sẽ tốn nhiều thời gian, công sức và chi phí phát triển hơn. Tuy nhiên, đây là một yếu tố quan trọng nhất của một hệ thống hàng đợi thông điệp. Việc người dùng quyết định sử dụng hàng đợi thông điệp nào phụ thuộc nhiều vào việc nó có dễ sử dụng cho mục đích của họ hay không.

Việc sử dụng một hệ thống hàng đợi thông điệp phức tạp ngoài việc tạo ra chi phí phát triển cao mà còn dẫn tới nhiều vấn đề phát sinh trong quá trình phát triển và triển khai, nâng cấp hệ thống.

2.6.2.5 Tính phổ dụng

Khi một giải pháp là đơn giản để sử dụng và chi phí thấp, nó sẽ thu hút nhiều người sừ dụng hơn. Và nhờ đó, nó sẽ có nhiều nguồn lực hơn, thu hút được nhiều đóng góp hơn để phát triển, do đó sẽ giúp cho giải pháp đó là đơn giản và dễ sử dụng hơn nữa. Một ví dụ cho tính chất phổ biến này là hệ điều hành. Mặc dù sự phức tạp bên trong của hệ điều hành là rất lớn do có quá nhiều yêu cầu khác nhau và các yêu cầu này ngày càng tăng, tuy nhiên, đối với người sử dụng, nó lại càng trở nên đơn giản và dễ sử dụng hơn nữa.

Ở đây, một yêu cầu đối với nhà cung cấp là phải tạo ra một hệ thống hàng đợi thông điệp mà mọi người đều có thể sử dụng. Hệ thống đó phải có giao diện người dùng đơn giản, dễ hiểu, dễ sử dụng, tương thích với nhiều hệ điều hành khác nhau và nhiều ngôn ngữ lập trình khác nhau.

2.7 Một số hệ thống hàng đợi thông điệp phổ biến

Trong phần này, chúng ta sẽ tìm hiểu một số hệ thống hàng đợi thông điệp phổ biến hiện nay

2.7.1 CORBA

CORBA là tên viết tắt của Common Object Request Brocker Architecture. Đây là một hệ thống hàng đợi thông điệp nổi tiếng và được sử dụng rộng rãi, hỗ trợ các ngôn ngữ lập trình C++ và Java. Những ưu điểm của CORBA là:

2.7.1.1 Tính trong suốt của ứng dụng chủ

Khi lập trình cho ứng dụng khách, chúng ta không cần quan tâm tới ứng dụng chủ. Chúng ta sẽ không cần quan tâm xem chương trình chủ tồn tại ở đâu hay chương trình chủ có chạy khi chương trình khách đang chạy hay không?

2.7.1.2 Tính trong suốt về ngôn ngữ lập trình

Các chương trình khách và chủ có thể được viết bằng các ngôn ngữ khác nhau. Ví dụ chương trình khách có thể được viết bằng ngôn ngữ lập trình C++ trong khi ứng dụng chủ được viết bằng ngôn ngữ Java

Các chương trình khách và chủ có thể chạy trên các hệ điều hành khác nhau. Ví dụ chương trình khách có thể được thực thi trên nền tảng hệ điều hành Microsoft Windows nhưng chương trình chủ có thể được thực thi trên hệ điều hành Unix

2.7.2 IBM WebSphere MQ

IBM WebSphere MQ là công nghệ hàng đợi hệ thống được phát triển bởi IBM và được giới thiệu lần đầu vào năm 1992 với tên gọi ban đầu là MQSeries. Hệ thống này hỗ trợ chương trình chạy trên rất nhiều hệ điều hành khác nhau như z/OS (một hệ điều hành được phát triển bởi IBM dùng cho các máy tính lớn), UNIX (AIX, HP- UX, Solaris), HP NonStop, OpenVMS, Linux và Microsoft Windows. Một số ưu điểm của hệ thống này là:

2.7.2.1 Việc truyền tin được đảm bảo

WebSphere MQ có thể giảm thiểu nguy cơ bị mất dữ liệu khi ứng dụng, dịch vụ web hay mạng xảy ra lỗi. Nó giúp cho việc đảm bảo dữ liệu không bị lặp lại và được truyền đi nguyên vẹn như một khối thông tin. Nhờ vậy các ứng dụng khách có thể yên tâm để xử lý các nghiệp vụ khác mà không lo việc truyền tin có thể bị mất mát.

2.7.2.2 Bảo mật thông tin

WebSphere MQ hỗ trợ SSL cho việc xác thực thông tin, kiểm tra tính toàn vẹn của thông điệp và mã hóa thông tin được truyền đi qua mạng

2.7.2.3 Không có rằng buộc về thời gian xử lý

WebSphere MQ cho phép ứng dụng gửi thông tin tới một thành phần khác của hệ thống mà không phải đợi cho đến khi thông tin được truyền tới đích. Ứng dụng gửi thông tin coi như tin tưởng rằng thông tin sẽ được truyền chính xác tới ứng dụng đích.

Quá trình truyền tin không đồng bộ hóa này sẽ cho phép chúng ta giảm được sự kết dính trong hệ thống. Khi một thành phần trong hệ thống bị lỗi hoặc không thể thực thi kịp (ví dụ mạng bị nghẽn hay mạng chậm) thì thông tin vẫn được lưu lại an toàn và được xử lý ngay khi hệ thống trở lại bình thường

2.7.2.4 Dễ dàng tích hợp các thành phần của hệ thống

WebSphere MQ cho phép các thành phần của hệ thống có thể dễ dàng tích hợp với nhau do việc giao tiếp là tương đối độc lập và không bị ảnh hưởng nhiều tới nhau

2.7.3 Microsoft Message Queueing

Microsoft Message Queueing (MSMQ) là công nghệ được phát triển bởi Microsoft và chỉ chạy trên nền hệ điều hành Microsoft Windows. Thông điệp có thể được truyền đi theo cả hai cách là đồng bộ hóa hoặc không đồng bộ hóa. Một số ưu điểm nổi bật của MSMQ là :

2.7.3.1 Không bị ảnh hưởng bởi đường truyền

Khi mạng bị sự cố hay lỗi, chương trình gửi thông điệp vẫn không bị lỗi. Quá trình gửi thông điệp sẽ được tiếp tục sau khi mạng sẵn sàng trở lại

2.7.3.2Thông điệp có độ ưu tiên

Việc đưa độ ưu tiên vào các thông điệp cho phép chúng ta xử lý quá trình truyền tin linh hoạt hơn, những thông điệp quan trọng hơn và cần được xử lý nghiệp vụ trước có thể được ưu tiên truyền trước so với những thông điệp khác của hệ thống

2.7.3.3 Việc truyền tin được đảm bảo

Trong trường hợp cần thiết, thông điệp có thể được lưu xuống ổ cứng nhằm tăng cường độ tin cậy của hệ thống

2.7.3.4 Gắn kết thông tin

Sử dụng khả năng này của MSMQ, chúng ta có thể gắn kết nhiều thông điệp lại cho một lần truyền tin, nhờ đó đảm bảo các thông điệp được truyền có thứ tự, không bị trùng lặp và thông tin tới được chính xác ứng dụng nhận

2.7.3.5 Bảo mật

MSMQ hỗ trợ bảo mật thông điệp thông qua các cơ chế kiểm soát quyền truy cập, cơ chế kiểm tra, mã hóa và xác thực

2.8 Kết luận

Á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 ưu điểm rõ ràng về hiệu năng, chi phí và thời gian phát triển. Tuy vậy, việc xây dựng một hệ thống hàng đợi thông điệp tốt là một công việc rất khó khăn và phức tạp. Hiện nay có nhiều hệ thống hàng đợi thông điệp được thương mại hóa, tuy nhiên việc lựa chọn sử dụng các công nghệ này cũng cần được xem xét thận trọng, phụ thuộc vào đặc tính và yêu cầu cụ thể của từng hệ thống

Chƣơng 3. Thiết kế hàng đợi thông điệp

Chương này sẽ tìm hiểu về thiết kế của một hàng đợi thông điệp có độ ưu tiên và xem xét về hiệu suất của chúng.

Trong thiết kế này, nhằm phục vụ cho việc tìm hiểu kỹ hơn, chúng ta sẽ đưa ra hai giả thiết. Thứ nhất, hàng đợi thông điệp phục vụ nhiều ứng dụng khách. Thứ hai, chỉ có một tiến trình chủ tiếp nhận thông điệp. Hàng đợi có thể có thuộc tính là vào trước ra trước hoặc hàng đợi có độ ưu tiên

Hình 8: Hàng đợi thông điệp

Trong thiết kế này, hệ thống có hai thành phần chính:

 Thành phần nhận: Nhận thông điệp từ tiến trình khách, xử lý thông điệp và gửi nó tới đích cần gửi

 Thành phần gửi: Nhận thông điệp từ tiến trình chủ và gửi lại cho tiến trình khách

Có hai khả năng cho thành phần gửi là:

 Tiến trình gửi sẽ đợi cho đến khi nhận được phản hồi từ tiến trình chủ

 Hàng đợi thông điệp sẽ truyền một dữ liệu được định nghĩa trước tới tiến trình khách chứ không cần đợi phản hồi từ tiến trình chủ. Trong phần này, chúng ta giả thiết là hệ thống hàng đợi thông điệp sử dụng kịch bản này.

3.1 Mô hình hàng đợi

Có hai mô hình cài đặt cho một hàng đợi là vào trước ra trước và hàng đợi có ưu tiên

3.1.1 Hàng đợi vào trƣớc ra trƣớc

Mọi thông điệp được chuyển từ chương trình khách tới hàng đợi được xử lý tuần tự, dựa trên nguyên tắc và trước ra trước với mọi hàng đợi của hệ thống.

3.1.2 Hàng đợi có ƣu tiên

Mọi thông điệp sẽ được xử lý dựa trên tham số độ ưu tiên. Tiến trình khách sẽ thiết lập tham số này dựa trên hai phương thức:

Một phần của tài liệu Ứng dụng mô hình hàng đợi thông điệp trong kiến trúc khách - chủ (Trang 32)

Tải bản đầy đủ (PDF)

(62 trang)