Một số yêu cầu về tính tiện dụng cơ bản của một giải pháp công nghệ thông tin bao gồm : ¾ Tính tuỳ biến : Cho phép người dùng khả năng tuỳ biến giao diện và các thành phần của nó để tối
Trang 1các yêu cầu cần thiết về môi trường thực thi của ứng dụng để tìm các host thích hợp Các nhà phát triển cũng nên quan tâm đến các yếu tố như về môi trường thực thi, tính khả chuyển của ngôn ngữ lập trình, hệ điều hành, … để tăng số lượng các host mà ứng dụng có thể thực thi
4.2.10 Định dạng fi e
Các thông tin về định dạng file rất hữu ích khi kết quả của ứng dụng chạy trên một host được truy xuất bởi ứng dụng chạy trên một host khác Các host có thể chạy các nền tảng phần mềm khác nhau, do đó nên sử dụng định dạng XML để trao đổi
dữ liệu
4.2.11 Việc cài đặt hệ thống
Một giải pháp Grid cần đưa ra một cách thức cài đặt dễ dàng, tự động cho những người không chuyên về kỹ thuật với các khả năng chỉnh sửa các kịch bản (script), biên dịch lại phần mềm, … Quá trình cài đặt nên được thiết kế giống nhau bất chấp khả năng phải cài đặt trên các tài nguyên đa dạng hỗn tạp về hệ điều hành hoặc cấu hình
4.2.12 Vấn đề thông tin Grid
Trạng thái của Grid phải luôn được cung cấp để theo dõi, kiểm soát các hoạt động của Grid Việc này có thể bao gồm các chỉ số cho biết tải hiện hành, mức độ
sử dụng tài nguyên, số lượng công việc đang chạy, số lượng công việc trong hàng đợi, trạng thái các host, số tài nguyên hiện còn, các tài nguyên đã được giữ chỗ, có thể thông báo các nút cổ chai, các điểm xảy ra vấn đề, …
4.2.13 Tính tiện dụng
Mặc dù phần lớn các giải pháp Grid đều tập trung vào cơ sở hạ tầng và các middleware, nhưng cũng rất hữu ích khi quan tâm đến khía cạnh sử dụng của giải pháp trong khi thiết kế
+ Các yêu cầu truyền thống về tính tiện lợi
Trang 2Các yêu cầu này tập trung vào các tiêu chí giúp người dùng sử dụng hệ thống
dễ dàng, thuận tiện hơn Các tiêu chí này bao gồm các hoạt động giao tiếp người dùng, hiển thị, các hoạt động khác cho phép người dùng làm việc hiệu quả, thoả mãn với hệ thống
Một số yêu cầu về tính tiện dụng cơ bản của một giải pháp công nghệ thông tin bao gồm :
¾ Tính tuỳ biến : Cho phép người dùng khả năng tuỳ biến giao diện và
các thành phần của nó để tối ưu việc sử dụng dựa theo dạng công việc, sở thích cá nhân, kinh nghiệm sử dụng, ngôn ngữ,…
¾ Tính hiệu quả : Đơn giản hóa các thao tác của từng tác vụ, tạo điều
kiện cho người dùng hoàn thành tác vụ càng nhanh càng tốt
+ Các yêu cầu về tính tiện dụng của một giải pháp Grid
Một giải pháp Grid phải đạt được các yêu cầu về tính tiện dụng cho nhiều loại người dùng khác nhau như :
¾ Người dùng cuối : Đăng nhập vào Grid, gọi thực thi ứng dụng, truy
vấn các trạng thái, và xem kết quả trả về
¾ Chủ/người dùng của các máy tính tham gia Grid
¾ Các nhà quản trị hệ thống
4.3 Thiết kế tổng quan
Sau khi xem xét, đặc tả các yêu cầu cần thiết của một ứng dụng Grid, cần thiết phải phân tích, xây dựng một mô hình tổng quan hệ thống nhằm xác định các thành phần cơ bản của hệ thống Khi đã chọn việc xây dựng hệ thống với Globus Toolkit, thiết kế nên tận dụng triệt để các chức năng đã được cung cấp sẵn của bộ toolkit Nhà phát triển chỉ cần xây dựng các chức năng của ứng dụng trên các chức năng có sẵn của Globus
Phần này trình bày các vấn đề cơ bản trong thiết kế ứng dụng với GT3 theo mô hình OGSA Như đã biết, GT3 cũng cung cấp các chức năng để xây dựng ứng dụng không theo chuẩn OGSA, việc xây dựng ứng dụng với các chức năng này cũng có thể tham khảo các thông tin trình bày trong phần này và các phần sau đó
Trang 3Để xây dựng ứng dụng, trước hết cần xác định hết tất cả các service của hệ thống, bao gồm các service cần cung cấp ra bên ngoài, các service hỗ trợ hoạt động của hệ thống Cần xác định hết các phương thức (tham số và kiểu trả về), dữ liệu của service (SDE), các cơ chế thông báo, chu kỳ sống của service cũng như các kịch bản trao đổi, sử dụng giữa các service Khi đã có mô hình các service và cách thức liên lạc giữa chúng, cần kiểm tra, chỉnh sửa để mô hình đáp ứng được các yêu cầu chức năng, phi chức năng của ứng dụng
Sau khi hoàn thành mô hình tổng quan, việc tiếp theo là thiết kế chi tiết hoạt động của các service
4.4 Một số vấn đề cần quan tâm trong thiết kế chi tiết và viết mã
Việc thiết kế, viết mã cho ứng dụng Grid cũng tương tự như cho các ứng dụng truyền thống Phần này trình bày một số vấn đề cần quan tâm khi thiết kế chi tiết hoạt động, viết mã của một ứng dụng Grid Dưới đây là một số khái niệm được dùng trong phần này:
¾ Ứng dụng Grid (Grid Application) : Là một tập các công việc để giải quyết
các vấn đề cụ thể hoặc để đạt đến một kết quả mong đợi bằng các sử dụng hạ tầng Grid
¾ Công việc (Job): Là một đơn vị cơ sở trong ứng dụng Grid, thường được
yêu cầu thực thi trên một node của Grid, có các tập dữ liệu đầu vào và đầu ra cùng với các yêu cầu về môi trường thực thi để hoàn thành nhiệm vụ của nó Một công việc có thể chạy một hay nhiều tiến trình trên một host
¾ Trình sản xuất/tiêu thụ dữ liệu (Data Producer/Consumer) : Các công
việc tạo ra dữ liệu kết quả được gọi là trình sản xuất dữ liệu, và các công việc nhận vào dữ liệu được gọi là trình tiêu thụ dữ liệu
Trang 44.4.1 Kiến trúc ứng dụng
Phần này sẽ xem xét các luồng công việc trong một ứng dụng Grid Một ứng dụng Grid có thể có rất nhiều công việc Các ứng dụng truyền thống được thực thi trong một môi trường với các tài nguyên đã biết trước, ở đây chúng ta sẽ xem xét việc một ứng dụng chạy trong một môi trường nơi mà các tài nguyên được cấp phát động theo nhu cầu Nếu muốn sử dụng đồng loạt các tài nguyên Grid, chúng ta cần xem xét việc xử lý dữ liệu có thể được thực hiện song song hay không, hay phải thực hiện tuần tự và một công việc có cần phải chờ lấy dữ liệu từ một công việc khác hay không Kết quả là chúng ta sẽ có một mạng các tiến trình trong ứng dụng Khi thiết kế cần xem xét các luồng công việc mà chọn giải pháp thiết kế tối ưu
Ở đây chúng ta cần phân biệt hai khái niệm : luồng ứng dụng (application flow)
và luồng công việc (job flow) Luồng ứng dụng là trình tự thực thi các công việc tạo nên ứng dụng, trình tự thực thi các xử lý trong nội bộ công việc được gọi là luồng công việc Có 3 kiểu luồng ứng dụng cơ bản : Song song, tuần tự và mạng
+ Luồng song song (parallel flow)
Nếu một ứng dụng có nhiều công việc có thể được thực thi song song, một Grid rất thích hợp để thực thi ứng dụng hiệu quả trên các node dành riêng, đặc biệt trong trường hợp không có (hoặc có rất ít) việc trao đổi dữ liệu của các công việc
Từ một công việc khởi đầu, các công việc sẽ đồng loạt được gửi đi và yêu cầu thực thi trên các node được chọn trước hoặc được cấp phát động trong Grid Mỗi công việc có thể nhận các dữ liệu dành riêng cho mình, thực hiện tính toán một cách độc lập rồi gửi kết quả về Các kết quả được tập hợp bởi một công việc khác hay lưu trữ vào cơ sở dữ liệu Các dịch vụ của Grid như broker hay trình lập lịch, có thể được
sử dụng để gửi thực thi mỗi công việc vào thời điểm và địa điểm tốt nhất trong Grid Hình 4-1 mô tả luồng ứng dụng song song :
Trang 5Hình 4-1 Luồng ứng dụng song song.
Với một vấn đề hay một ứng dụng, rất hữu ích khi tách nó ra thành các đơn
vị độc lập nhỏ hơn Để tận dụng được ích lợi của việc thực thi song song, khi thiết
kế, nên phân tích các nhiệm vụ trong ứng dụng xem chúng có thể tách thành các đơn vị cơ sở có thể chạy như các công việc được không Các trường hợp như có thể tách nhỏ tập dữ liệu của một công việc và việc xử lý tập con này không phụ thuộc
và tập con khác hoặc khi có một công việc không cần kết quả từ công việc khác cũng thuộc dạng luồng song song
+ Luồng tuần tự (Serial flow)
Trái ngược với luồng ứng dụng song song Trong trường hợp này, như trên hình 4-2, chỉ có một dãy các công việc, mỗi công việc phải chờ công việc trước đó kết thúc và sử dụng kết quả từ công việc trước
Trang 6dụng một tài nguyên đặc biệt nào đó, nó có thể được cung cấp tài nguyên đặc biệt
đó trong khi các công việc khác có thể được thực thi trên các tài nguyên bình thường có chi phí thấp
Khả năng thực thi các công việc trên nhiều tài nguyên khác nhau cũng làm tăng tính sẵn sàng và độ tin cậy của ứng dụng Bên cạnh đó, cũng làm tăng khả năng chịu đựng của ứng dụng thông qua việc có thể sử dụng các tài nguyên cần thiết theo nhu cầu
+ Luồng mạng (Networked Flow)
Trong nhiều trường hợp, mọi thứ phức tạp hơn rất nhiều Các công việc cụ thể có thể thực thi song song nhưng cũng vẫn có sự phụ thuộc giữa chúng, như thấy trên hình 4-3 Các kỹ thuật sau có thể áp dụng để giải quyết vấn đề
Hình 4-3 Luồng ứng dụng mạng.
1 Loose coupling (Giảm bớt sự phụ thuộc)
Kỹ thuật này cần có thêm một dịch vụ quản lý luồng ứng dụng để đồng
bộ các công việc, sẽ làm giảm việc trao đổi liên tiến trình và làm giảm quá tải trên Grid
Với những ứng dụng dạng này, cần phân tích kỹ để xác định cách tốt nhất
để tách ứng dụng thành các công việc nhỏ hơn nhằm tăng tính song song Ở đây cũng cần phải đưa vào Grid các dịch vụ mới như broker hay trình lập lịch Có thể phải tốn thêm chi phí bước đầu, nhưng khi mọi thứ đã ổn định, ứng dụng có thể được hưởng lợi lớn từ một môi trường tính toán ảo mềm dẻo và tối ưu
2 Jobs and sub-jobs (Công việc và các công việc con)
Trang 7Một hướng tiếp cận khác để làm đơn giản việc quản lý các công việc trong một ứng dụng là sử dụng mô hình phân cấp các công việc Một công việc
có thể sử dụng các dịch vụ của Grid để thực thi các công việc con của mình Với dạng này, ứng dụng nên được phân hoạch và thiết kế sao cho các công việc cấp cao có các khả năng tìm kiếm tài nguyên và thực thi các công việc con của mình một cách tối ưu nhất Sẽ có rất nhiều lợi ích đối với các ứng dụng lớn, phức tạp khi phân lập và chuyển quyền điều khiển, quản trị các nhiệm vụ cụ thể cho các thành phần độc lập
4.4.2 Xem xét sử dụng ngôn ngữ lập trình
Khi một ứng dụng được phát triển, câu hỏi nên sử dụng ngôn ngữ lập trình nào được đặt ra Trong môi trường Grid, cần thực hiện thêm một số cân nhắc Các công việc dành cho tính toán toán hiệu năng cao (high-performance computing) thường được viết bằng ngôn ngữ C hoặc Fortran Thời gian thực thi của các công việc này không đóng vai trò quan trọng trong ứng dụng, nhưng toàn bộ nội dung và các nhiệm vụ quan trọng thường được viết bằng các ngôn ngữ khác như Java hay các ngôn ngữ kịch bản như Perl
Trong Grid, có thể lựa chọn các ngôn ngữ khác nhau để xây dựng các phần của ứng dụng, dựa trên các yêu cầu của từng công việc và tính sẵn sàng của tài nguyên Một số tiêu chí chủ yếu cần quan tâm :
+ Các thư viện/module thực thi
Trang 8Dựa theo ngôn ngữ và cách liên kết chương trình, có thể có các yêu cầu về sự tồn tại các thư viện liên kết động hay các module khác trong thời gian thực thi công việc Do đó cần đảm bảo các thư viện, module cần thiết phải nằm trên tài nguyên đích
+ Giao diện giao tiếp với hạ tầng Grid
Nếu công việc cần giao tiếp với hạ tầng Grid, như Globus Toolkit, việc lựa chọn ngôn ngữ phụ thuộc vào ngôn ngữ được hạ tầng Grid hỗ trợ Lúc đầu GT chỉ
hỗ trợ ngôn ngữ C, nhưng hiện nay thông qua dự án CoG Kit, đã có các hàm API hỗ trợ các ngôn ngữ khác như Java, Perl, …
4.4.3 Vấn đề phụ thuộc của công việc vào môi trường hệ thống
Một ứng dụng Grid có thể không cần môi trường thực thi đa dạng hỗn tạp, tuy nhiên cần xem xét một số vấn đề để có thể triển khai tốt nhất hệ thống Với mỗi công việc, các yếu tố môi trường sau đây có thể ảnh hưởng đến hoạt động Khi phát triển một ứng dụng, cần xem xét các yếu tố này để thiết kế càng độc lập càng tốt với các yếu tố này
¾ Yếu tố quan trọng nhất là phiên bản hệ điều hành, các thiết lập tham số cần thiết để thực thi công việc, việc phụ thuộc vào các dịch vụ hệ thống hay các chương trình phụ trợ khác như registry Cần xem xét liệu ứng dụng Grid có khả năng chạy các công việc của nó trên bất kỳ node nào với các hệ điều hành khác nhau hay bị giới hạn trên một hệ điều hành nhất định
¾ Kích thước bộ nhớ chính cần thiết cho công việc có thể giới hạn số lượng các node có khả năng thi nó Kích thước bộ nhớ có sẵn không những phụ thuộc vào kích thước vật lý của nó trên node, mà còn phụ thuộc vào kích thước mà hệ điều hành cho phép trong thời gian thực thi
¾ Các thư viện liên kết động (DLL) được liên kết với công việc cần phải có sẵn trên node hoặc có thể được di chuyển đến và cài đặt trên node trước khi công việc được thực thi
Trang 9¾ Các cấu hình trình biên dịch trên các node có thể rất khác nhau ví
dụ các hệ thống khác nhau có thể sử dụng định dạng số khác nhau như thứ tự các bit, số byte dùng để biểu diễn số nguyên và số thực khác nhau trên các hệ thống có thể khiến công việc không thể thực thi được
¾ Cần phải có môi trường thực thi sẵn sàng để thực thi công việc Ví
dụ, việc triển khai phiên bản JDK cần thiết cần phải được lên kế hoạch và thực hiện
¾ Các công việc có thể cần các thiết bị phần cứng để thực thi nhiệm
vụ của mình Ví dụ, các yêu cầu về thiết bị lưu trữ, đo đạc và các thiết bị đầu cuối khác cần phải được xem xét khi xây dựng ứng dụng và lên kế hoạch cho hạ tầng Grid
¾ … Khi phát triển ứng dụng, các yếu tố trên cần phải được xem xét để tránh quá nhiều các giới hạn khi thực thi công việc Có một lượng lớn các giới hạn cũng có nghĩa là số lượng các node mà công việc có thể thực thi trên đó ít đi Do đó cần phải loại bỏ các giới hạn trên càng nhiều càng tốt để công việc có thể chạy trên môi trường càng tổng quát càng tốt
4.4.4 Đồ hình công việc
Cần phải có các thiết kế về kiến trúc để giải quyết vấn đề về đồ hình công việc
và dữ liệu Khi xem xét, một số yếu tố chính sau đây cần phải được chú ý:
¾ Các công việc có thể hoặc phải chạy ở đâu ?
¾ Làm sao để có thể phân tán và triển khai chúng thông qua hệ thống mạng ?
¾ Làm sao đóng gói chúng với các dữ liệu cần thiết ?
¾ Nơi nào trong mạng lưu trữ mã thực thi của công việc ?
¾ Làm sao để xác định được node thích hợp để có thể thực thi các công việc cụ thể?
¾ Vị trí của của dữ liệu và các điều kiện truy xuất cho công việc
¾ Kích thước dữ liệu được công việc xử lý
¾ Các giao diện cần thiết để tương tác với các thiết bị
Trang 10¾ Các liên lạc liên tiến trình cần thiết để công việc có thể hoàn thành nhiệm vụ của mình
¾ Tính sẵn sàng và các giá trị hiệu năng của mỗi node trong thời gian thực thi
¾ Kích thức mã thực thi của công việc và khả năng di chuyển chúng trong hệ thống
¾ …
Khi phát triển ứng dụng Grid, có thể không cần biết hết tất cả các thông tin về
đồ hình Grid, tuy nhiên, đặc biệt là trong trường hợp một IntraGrid cần phải được xây dựng để hỗ trợ một nhóm các ứng dụng đặc biệt, các thông tin này có thể rất cần thiết Nhờ đó, có thể kiến trúc ứng dụng và hạ tầng Grid để tối ưu hoá môi trường thực thi bằng các xem xét đến vị trí các tài nguyên, dữ liệu, và tập các node
mà ứng dụng có thể thực thi
4.5 Triển khai cài đặt các Grid Service
Sau khi có bản thiết kế chi tiết các hoạt động và liên lạc của các service trong hệ thống, đến bước viết mã thực thi, ở đây trình bày việc viết mã cho các Grid Service Phần này trình bày các bước cần thiết để viết một OGSI-service cùng với các kỹ thuật cài đặt cụ thể với GT3
Việc phát triển, phân phối một Grid service với GT3 tuân theo 5 bước sau (lưu
ý, các bước này cùng với các công cụ liên quan có thể thay đổi trong các phiên bản sau của GT):
1 Định nghĩa service interface (sử dung ngôn ngữ đặc tả GWSDL)
2 Viết mã thực thi cho service (sử dụng ngôn ngữ lập trình Java)
3 Định nghĩa các tham số triển khai service (sử dụng ngôn ngữ đặc tả WSDD)
4 Biên dịch và phát sinh các file GAR (sử dụng công cụ Ant)
5 Triển khai service (sử dụng công cụ Ant)
Các phần dưới đây sẽ trình bày chi tiết các bước và các kỹ thuật cài đặt các cơ chế của Grid service Để cụ thể và dễ hiểu hơn, việc trình bày sử dụng lại ví dụ MathService được nhóm phát triển Globus đưa ra, có thể tìm thấy trong website :
Trang 11http://www.casa-sotomayor.net Ở đây chúng ta cần xây dựng một Grid service cho phép người thực hiện các chức năng cộng, trừ đơn giản, có tên là MathService
4.5.1 Các bước xây dựng và triển khai Grid Service
Bước 1 : Định nghĩa service interface
Ở đây chúng ta đã xác định các chức năng cần có của MathService (là cung cấp khả năng cộng và trừ 2 số) Chúng ta cần định nghĩa một interface cho MathService, interface này sẽ chứa các phương thức cần thiết cung cấp cho người dùng Lưu ý service interface còn được gọi là portType Việc định nghĩa interface ở đây sử dụng ngôn ngữ đặc tả GWSDL, một phiên bản mở rộng của WSDL cho Grid service Có 2 cách để định nghĩa interface cho MathService :
public void add(int a);
public void subtract(int a);
public int getValue();
}
Tuy nhiên, khi phát sinh bằng cách này sẽ không tận dụng hết tất cả các sức mạnh của GWSDL Do đó nên tự viết các đặc tả interface cho service bằng GWSDL Chi tiết về cách viết một tài liệu GWSDL xin tham khảo thêm trong phụ lục B – Định dạng file GWSDL Lưu ý, ở đây các hàm add() và substract() chỉ có một tham số, chúng ta muốn thực hiện cộng dồn các số và chỉ gửi kết quả đến người dùng khi cần thiết, qua hàm getValue() Ví dụ này muốn cho thấy Grid service là một thực thể có trạng thái (stateful), nó tự lưu trữ các kết quả qua một biến cục bộ
và chỉ xuất ra khi cần thiết, đây là một tính chất mới mà một Web service truyền thống không có được