1. Trang chủ
  2. » Công Nghệ Thông Tin

CÔNG NGHỆ GRID COMPUTING VÀ ỨNG DỤNG THỬ NGHIỆM TRONG BÀI TOÁN QUẢN TRỊ MẠNG - 10 ppt

23 437 0
Tài liệu đã được kiểm tra trùng lặp

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

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Công Nghệ Grid Computing Và Ứng Dụng Thử Nghiệm Trong Bài Toán Quản Trị Mạng - 10 ppt
Trường học University of Information Technology
Chuyên ngành Grid Computing
Thể loại Bài thuyết trình
Năm xuất bản 2025
Thành phố Ho Chi Minh City
Định dạng
Số trang 23
Dung lượng 663,67 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Kỹ thuật cài đặt Operation Provider Như đã giới thiệu, GT3 hỗ trợ 2 cách cài đặt interface trong ngôn ngữ lập trình, cách thứ nhất là kỹ thuật sử dụng tính kế thừa, ở đây lớp MathImpl k

Trang 1

Ở đây định nghĩa các kiểu của các thành phần add và addResponse

Trên đây vừa trình bày sơ nét về cấu trúc cơ bản của file GWSDL, có thể thêm các kiểu mới, mở rộng bằng cách tham khảo các không gian tên đã được định nghĩa sẵn

Service

C.1 Kỹ thuật cài đặt Operation Provider

Như đã giới thiệu, GT3 hỗ trợ 2 cách cài đặt interface trong ngôn ngữ lập trình, cách thứ nhất là kỹ thuật sử dụng tính kế thừa, ở đây lớp MathImpl kế thừa từ lớp GridServiceImpl, do GridServiceImpl có tất cả các chức năng cơ bản nên MathImpl chỉ cần cài đặt tất cả các phương thức của Math portType là đủ Như trên hình 0-1, lớp MathImpl chứa tất cả các hàm cài đặt cho các phương thức của portType (Lưu

ý, ở đây có nhiều hàm hơn) Tuy nhiên, cài đặt tất cả các phương thức của portType chỉ trong một lớp có thể gây ra nhiều bất tiện đặc biệt là đối với các portType lớn,

có nhiều phương thức Và kỹ thuật này, đối với Java, lớp MathImpl không thể kế thừa từ một lớp nào nữa, điều này hạn chế việc tái sử dụng mã

Trang 2

Hình 8-1 Lớp triển khai interface của Grid service bằng kỹ thuật kế thừa.

GT3 đưa một hướng tiếp cận mới để giải quyết khuyết điểm của kỹ thuật sử dụng tính kế thừa, đó là kỹ thuật uỷ quyền Hướng tiếp cận này cho phép phân tán các nhóm phương thức vào các lớp khác nhau, các lớp này được gọi là Operation Provider Như trên hình 0-2, có thể chia lớp MathImpl thành 3 lớp, ứng với từng nhóm phương thức

Hình 8-2 Cài đặt intrface củaGrid service bằng kỹ thuật Operation Provider

Lưu ý là 3 lớp này không thừa kế từ lớp nào hết, chúng chỉ cài đặt một interface tên là Operation Provider Lúc này các chức năng của lớp GridServiceImpl không được kế thừa từ đây mà được yêu cầu Grid service container cung cấp thông qua bản đặc tả triển khai Khi tiến hành cài đặt theo cách tiếp cận này, có một số thay đổi nhỏ so với kỹ thuật sử dụng tính kế thừa, như trình bày dưới đây

Lớp cung cấp hoạt động (Operation Provider) ở đây gọi là MathProvider cũng giống như các lớp của MathImpl trước đây, chỉ khác là ở đây cài đặt thêm interface OperationProvider, file :

$GRIDSER_DEMO/org/globus/progtutorial/services/core/providers/impl /MathProvider.java

Trang 3

//Luu y o day cai dat OperationProvider

public class MathProvider implements OperationProvider

{

// Cac thuoc tinh cua Operation provider

//Khai bao namespace

private static final String namespace =

"http://www.globus.org/namespaces/2004/02/progtutorial/MathService";

//Khai bao ten cac phuong thuc duoc cung cap, tuong ung voi file GWSDL

private static final QName[] operations =

new QName[]

{ new QName(namespace, "add"),

new QName(namespace, "subtract"),

new QName(namespace, "getValue") };

private GridServiceBase base;

// Cac phuong thuc cua Operation Provider

public void initialize(GridServiceBase base) throws GridServiceException { this.base = base;

private int value = 0;

public void add(int a) throws RemoteException

<! Yeu cau Grid service container goi chuc nang cua

GridServiceImpl nhu la chuc nang co ban cua MathService ->

<parameter name="baseClassName"

value="org.globus.ogsa.impl.ogsi.GridServiceImpl"/>

Trang 4

<parameter name="operationProviders"

value="org.globus.progtutorial.services.core.providers.impl.Math Provider"/>

C.2 Thêm thành phần dữ l ệu (Service Data Element (SDE)

Như đã biết, mỗi Grid service đều có các SDE của riêng mình, phần này sẽ xem xét kỹ thuật thêm SDE cho một service Ở đây chúng ta thêm một SDE có tên là MathData chứa các thông tin như giá trị hiện tại (value), phép toán thực hiện cuối cùng (lastOp), số phép toán đã thực hiện (numOp), MathData chỉ có một và chỉ một giá trị (cardinality = 1 1) được mô tả trên hình 0-3:

Hình 8-3 Ví dụ về SDE của MathService

+ Đặc tả SDE

Việc định nghĩa một SDE cho một service thông qua file đặc tả GWSDL, tuy nhiên MathData là một kiểu phức tạp nên mặc dù có thể đặc tả kiểu này trong file GWSDL, chúng ta có thể đặc tả trong một file khác File :

$GRIDSER_DEMO/schema/progtutorial/MathService_sd/MathSDE.xsd

<complexType name="MathDataType">

<sequence>

<element name="value" type="int"/>

<element name="lastOp" type="string"/>

<element name="numOps" type="int"/>

</sequence>

</complexType>

Trang 5

Bây giờ, chúng ta sẽ đặc tả lại inteface của service bằng cách tạo một file GWSDL mới, file này có nội dung và cấu trúc gần giống với file GWSDL cũ, một

số phần thay đổi được trình bày ở đây File :

+ Khai báo SDE trong đặc tả interface

<gwsdl:portType name="MathPortType" extends="ogsi:GridService">

Ở đây khai báo lớp không thay đổi:

public class MathImpl extends GridServiceImpl implements MathPortType

Lớp cài đặt này có thêm 2 thuộc tính private mới :

private ServiceData mathDataSDE; //La SDE

private MathDataType mathDataValue; //Chua gia tri cua SDE

Trang 6

Việc tạo lập các SDE nằm trong hàm postCreate, ở đây chúng ta có thể để các giá trị khởi tạo cho SDE

public void postCreate(GridContext context) throws

GridServiceException

{

// Goi ham postCreate lop co so

super.postCreate(context);

//Duoi day la cac buoc tao mot SDE va dua vao Service Data Set

// Tao Service Data Element

mathDataSDE = this.getServiceDataSet().create("MathData");

// Tao mot doi tuong MathDataType va khoi tao cac gia tri

mathDataValue = new MathDataType();

Các hàm add(), substract() có thêm các lệnh mới để cập nhật lại SDE:

public void add(int a) throws RemoteException

{

//Cac ham setLastOp(),setValue(),setNumOps(), getNumOps() duoc tu

//dong phat sinh tu file dac ta MathSDE.xsd

mathDataValue.setLastOp("Addition");

incrementOps();

mathDataValue.setValue(mathDataValue.getValue() + a);

}

// Ham nay cap nhat MathData SDE tang so phep toan len 1

private void incrementOps()

<parameter name="className"

value="org.globus.progtutorial.stubs.MathService_sd.MathPortType

"/>

Trang 7

<parameter name="schemaPath"

value="schema/progtutorial/MathService_sd/Math_service.wsdl"/>

+ Client truy xuất SDE

//Khai bao import giong nhu tren

// Lay tham so dong lenh

URL GSH = new java.net.URL(args[0]);

int a = Integer.parseInt(args[1]);

// Lay GSR cua Math PortType

MathServiceGridLocator mathServiceLocator = new

System.out.println("Previous operation: " + mathData.getLastOp());

System.out.println("# of operations: " + mathData.getNumOps());

// Goi phuong thuc cua service

C.3 Cài đặt cơ chế Notification

Như đã biết, cơ chế Notification cho phép client biết được những gì đang xảy ra

ở một Grid service instance Cơ chế Notification liên quan mật thiết đến các SDE của service Trong GT3, cơ chế Notification hoạt động theo sơ đồ sau với các bước:

Trang 8

Hình 8-4 Sơ đồ hoạt động của cơ chế Notification trong GT3.

1 addListener : Các client yêu cầu service thông báo cho mình khi có sự

thay đổi của SDE xác định trong lời gọi

2 notifyChange : Khi có sự thay đổi, MathService sẽ yêu cầu SDE tương

ứng gửi thông báo cho các client đã yêu cầu

3 deliverNotification : SDE thông báo cho client Ở đây các giá trị của SDE

được gửi về cho client, do đó client không cần thực hiện thêm bất cứ truy vấn nào nữa

Có thể thấy đây là cơ chế “push” notification, GT3 chỉ hỗ trợ duy nhất dạng này Dưới đây, chúng ta sẽ xem xét chi tiết kỹ thuật cài đặt notification này trong GT3 với MathService

+ Khai báo sử dụng Notification trong portType

Thêm cơ chế Notification ảnh hưởng đến interface do chúng ta cần cung cấp một số phương thức mới ra bên ngoài Tất nhiên, chúng ta không cần cài đặt các phương thức này mà chỉ cần khai báo sử dụng lại portType NotificationSource có sẵn, portType này chứa đầy đủ các phương thức liên quan đến cơ chế Notification

Do đó file GWSDL ở trên chỉ cần sửa lại như sau: File :

$GRIDSER_DEMO/schema/progtutorial/MathService_sd_notif/Math.gwsdl

<! Khai bao su dung lai portType NotificationSource >

gwsdl:portType name="MathPortType" extends="ogsi:GridService

public void add(int a) throws RemoteException

{

Trang 9

Mã nguồn client như sau, file :

$GRIDSER_DEMO/org/globus/progtutorial/clients/MathService_sd_notif /ClientListener.java

//Cac khai bao import

public class ClientListener

extends ServicePropertiesImpl implements NotificationSinkCallback

{

public static void main(String[] args)

{

// Lay tham so dong lenh

HandleType GSH = new HandleType(args[0]);

ClientListener clientListener = new ClientListener(GSH);

Trang 10

}

//Khi co thay doi trong SDE,ham nay se duoc Grid service goi, se xuat ra man

// hinh cac gia tri cua SDE

public void deliverNotification(ExtensibilityType any) throws

// Xuat ra man hinh

System.out.println("Current value: " + mathData.getValue());

System.out.println("Previous operation: " + mathData.getLastOp());

System.out.println("# of operations: " + mathData.getNumOps());

C.7 Cài đặt kỹ thuật tạo service động (Transient service)

Làm cho một service có khả năng được tạo lập một cách động (chuyển service thành transient service) là một trong những việc dễ dàng nhất trong GT3, chúng ta không cần thay đổi portType cũng như cài đặt của nó Mọi thứ cần làm là sửa lại file đặc tả cài đặt

value="org.globus.progtutorial.stubs.MathService.MathPortType"/> <parameter name="schemaPath"

value="schema/progtutorial/MathService/Math_service.wsdl"/>

<!—Cac tham so chung >

<parameter name="allowedMethods" value="*"/>

<parameter name="persistent" value="true"/>

<parameter name="handlerClass"

value="org.globus.ogsa.handlers.RPCURIProvider"/>

Trang 11

</service>

</deployment>

Dưới đây là file WSDD đã sửa đổi theo mô hình tạo service động với một factory Lưu ý, chúng ta sẽ khai báo một service factory tĩnh (persistent service) để chịu trách nhiệm tạo ra các MathService instance động (transient service) File :

deploy.wsdd

<parameter name="name" value="MathService Factory"/>

<parameter name="instance-name" value="MathService Instance"/>

<!—Cac tham so chung >

<parameter name="allowedMethods" value="*"/>

<parameter name="persistent" value="true"/>

Trang 12

+ Sau đó chúng ta thêm các tham số mới vào “khối tham số chung”, để ý lúc này, schemaPath, baseClassName, và className tham khảo đến mã thực thi của Factory (cung cấp bởi GT3), không phải bất cứ mã thực thi nào do chúng ta tạo ra

+ Có thể thấy, việc thêm khả năng tạo lập động cho bất kỳ service nào, đơn giản chỉ gồm 2 bước, thêm các tiền tố “instance-” và sửa lại “khối tham số chung”

+ Đối với client

Có thể sử dụng lại các client cũ Ở đây, chúng ta viết một client để demo khả năng tạo lập, sử dụng và huỷ một service instance thông qua Factory

File :

$GRIDSER_DEMO/org/globus/progtutorial/clients/MathService/FactoryC lient.java

// Lay tham so dong lenh

URL GSH = new java.net.URL(args[0]);

int a = Integer.parseInt(args[1]);

// Lay GSR cua MathService Factory

OGSIServiceGridLocator gridLocator = new OGSIServiceGridLocator();

Factory factory = gridLocator.getFactoryPort(GSH);

GridServiceFactory mathFactory = new GridServiceFactory(factory);

// Tao mot MathService instance moi va lay GSR cua no

LocatorType locator = mathFactory.createService();

MathServiceGridLocator mathLocator = new MathServiceGridLocator(); MathPortType math = mathLocator.getMathServicePort(locator);

// Goi phuong thuc Add()

math.add(a);

System.out.println("Added " + a);

int value = math.getValue();

System.out.println("Current value: " + value);

// Huy service instance sau khi su dung

Trang 13

}

}

}

C.5 Kỹ thuật Logging (Ghi vết

Logging là một kỹ thuật quan trọng trong phát triển và bảo trì phần mềm, cho phép theo dõi các sự kiện đặc biệt của hệ thống, các sự kiện ghi nhận có thể được kết xuất ra màn hình GT3 cung cấp khả năng logging theo mô hình Apache Jakarta Commons Logging (http://jakarta.apache.org/commons/logging/) Mô hình này đưa

ra 6 cấp độ thông tin logging, gồm Debug, Trace, Info, Warn, Error, Fatal Việc quyết định thông tin nào ở mức độ nào là tuỳ thuộc vào người lập trình ứng dụng

Ở đây chúng ta sẽ thêm tính năng logging vào MathService, sử dụng lại ví dụ đầu tiên Khi thêm tính năng logging, chúng ta không cần sửa lại portType, chỉ cần thêm các lệnh cần thiết vào mã cài đặt portType

+ Cài đặt

File:

$GRIDSER_DEMO/org/globus/progtutorial/services/core/logging/impl/M athImpl.java

// Tao logger cho class nay

static Log logger = LogFactory.getLog(MathImpl.class.getName());

+ Xem các kết xuất log

Để xem kết xuất log của MathService, thêm dòng sau vào cuối file:

$GLOBUS_LOCATION/ogsilogging.properties(Đây là file cấu hình Log của GT3)

Trang 14

#Cho biet can xuat cac log o cap do Info ra man hinh console, co the sua #lai cac cap do khac, va ghi ra file

+ Kỹ thuật Callback method.

Một cách đơn giản để quản lý chu trình sống bằng callback method (tương tự các hàm sự kiện khi lập trình với MS Windows) Các phương thức callback được gọi trong một số thời điểm xác định trong chu trình sống của service GT3 hỗ trợ các hàm callback sau:

preCreate Khi quá trình tạo lập Grid Service bắt đầu, lúc này tất cả cấu hình

chưa được nạp

postCreate Khi service đã được tạo ra và cấu hình service đã được tạo lập

activate Tất cả Grid service đều mặc định ở trạng thái “không kích

hoạt”(deactivated), hàm này được gọi khi service được kích hoạt deactivate Khi service trở về trạng thái “không kích hoạt”

preDestroy Ngay trước khi service bị huỷ

Bảng 8-2 Các hàm callback trong GT3

File :

$GRIDSER_DEMO/org/globus/progtutorial/services/core/lifecycle/impl /MathImpl.java

//

import org.globus.ogsa.GridServiceCallback;

//

public class MathImpl extends GridServiceImpl

implements MathPortType, GridServiceCallback

Trang 15

+ Kỹ thuật Lifecycle Monitor

Kỹ thuật Callback Method khá tốt, tuy nhiên nó khó có thể sử dụng lại Giả

sử chúng ta có 2 hàm preCreate() và postCreate() và muốn sử dụng lại trong tất cả các Grid Service, với kỹ thuật Callback Method, chỉ có cách đưa nó vào một lớp cha, rồi cho tất cả các lớp Grid Service khác thừa kế từ nó Tất nhiên đây có sự hạn chế như đã giới thiệu trong phần Operation Provider

GT3 đưa ra giải pháp mới là Lifecycle Monitor Một lifecycle monitor là một lớp triển khai interface ServiceLifeCycleMonitor, một interface với các hàm callback được gọi tại các thời điểm quan trọng trong thời gian sống của Grid service Chúng ta không cần kế thừa hay tham thảo interface này trực tiếp từ mã nguồn Chúng ta chỉ cần thêm một dòng vào bản đặc tả triển khai yêu cầu lớp lifecycle monitor phải được gọi khi có sự kiện đặc biệt xảy ra Do đó, chúng ta có thể dùng cùng một lifecycle monitor cho nhiều Grid service khác nhau

Dưới đây là một lớp lifecycle monitor đơn giản, file :

$GRIDSER_DEMO/org/globus/progtutorial/services/core/lifecycle/impl /MathLifecycleMonitor.java

// Tao logger cho lop

static Log logger = LogFactory.getLog(MathLifecycleMonitor.class.getName());

//Cac phuong thuc can callback

public void create(GridContext context) throws GridServiceException

{

logger.info("Instance is going to be created (create)");

}

Ngày đăng: 30/07/2014, 20:20

HÌNH ẢNH LIÊN QUAN

Hình  8-1 Lớp triển khai interface của Grid service bằng kỹ thuật kế thừa. - CÔNG NGHỆ GRID COMPUTING VÀ ỨNG DỤNG THỬ NGHIỆM TRONG BÀI TOÁN QUẢN TRỊ MẠNG - 10 ppt
nh 8-1 Lớp triển khai interface của Grid service bằng kỹ thuật kế thừa (Trang 2)
Hình  8-2 Cài đặt intrface củaGrid service bằng kỹ thuật Operation Provider - CÔNG NGHỆ GRID COMPUTING VÀ ỨNG DỤNG THỬ NGHIỆM TRONG BÀI TOÁN QUẢN TRỊ MẠNG - 10 ppt
nh 8-2 Cài đặt intrface củaGrid service bằng kỹ thuật Operation Provider (Trang 2)
Hình  8-4 Sơ đồ hoạt động của cơ chế Notification trong GT3. - CÔNG NGHỆ GRID COMPUTING VÀ ỨNG DỤNG THỬ NGHIỆM TRONG BÀI TOÁN QUẢN TRỊ MẠNG - 10 ppt
nh 8-4 Sơ đồ hoạt động của cơ chế Notification trong GT3 (Trang 8)
Bảng 0-3 tóm tắt các interface của một Grid Service được định nghĩa trong - CÔNG NGHỆ GRID COMPUTING VÀ ỨNG DỤNG THỬ NGHIỆM TRONG BÀI TOÁN QUẢN TRỊ MẠNG - 10 ppt
Bảng 0 3 tóm tắt các interface của một Grid Service được định nghĩa trong (Trang 16)
Hình vẽ sau mô tả chi tiết cấu trúc một  chứng chỉ điện tử: - CÔNG NGHỆ GRID COMPUTING VÀ ỨNG DỤNG THỬ NGHIỆM TRONG BÀI TOÁN QUẢN TRỊ MẠNG - 10 ppt
Hình v ẽ sau mô tả chi tiết cấu trúc một chứng chỉ điện tử: (Trang 19)
Bảng  8-3 Các interface của một OGSI Service - CÔNG NGHỆ GRID COMPUTING VÀ ỨNG DỤNG THỬ NGHIỆM TRONG BÀI TOÁN QUẢN TRỊ MẠNG - 10 ppt
ng 8-3 Các interface của một OGSI Service (Trang 19)

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w