Thiết kế và hiện thực mô hình xử lý song song

Một phần của tài liệu Nghiên cứu phát triển các kỹ thuật xây dựng và khai thác thông tin web có ngữ nghĩa (Trang 120 - 124)

Với các chức năng đã trình bày của VN-KIM, mục tiêu thiết kế hệ thống máy chủ cho nó là nhằm:

1. Đảm bảo các ứng dụng Web có ngữ nghĩa phục vụ nhiều người dùng đồng thời.

2. Tạo ra kết quả trong thời gian trung bình thấp.

3. Tính sẵn sàng cao.

Chúng tôi đặt tên cho module xử lý song song trong VN-KIM là SWG, với các nút tính toán là các máy chủ mạnh, phân ra làm nhiều nhóm (Cluster), mỗi nhóm sẽ thực thi một loại quá trình chuyên biệt như là quá trình xử lý truy vấn cơ sở tri thức, quá trình chú thích các trang Web tiếng Việt, hoặc quá trình xử lý truy hồi tài liệu đã được chú thích, ...

Các hệ thống nhóm Unix/Linux là sự ghép nối của nhiều máy tính trạm và máy chủ lại với nhau thông qua mạng truyền tốc độ cao cỡ Gbits/sec ([85]). Trong đó mỗi nút (máy tính trạm hoặc máy chủ) chạy hệ điều hành Unix/Linux và các dịch vụ cần thiết khác như Network File System, … Hiện nay, các hệ thống nhóm dùng Unix/Linux này mang lại hiệu quả đầu tư cao hơn so với các máy tính cỡ lớn (Mainframe).

Hình 6.1.1 mô tả tổng quan kiến trúc của hệ thống SWG. Kiến trúc phần mềm của SWG được thiết kế theo mô hình hướng dịch vụ (Service-Oriented Architecture – SOA).

Lý do chọn kiến trúc phần mềm hướng dịch vụ là vì nó tiết kiệm được thời gian tích hợp và phát triển các module độc lập đồng thời. Hơn nữa trong công nghiệp, kiến trúc hướng dịch vụ được sử dụng rộng rãi trên các ứng dụng phân bố, như IBM Service-Oriented Architecture. Chúng tôi đã thử nghiệm thành công mô hình hướng dịch vụ này cho tính toán lưới (Grid Computing) ([44], [103]), bằng việc xây dựng các dịch vụ lưới (Grid Service) chạy trên môi trường Globus Toolkit phiên bản 3.2 để giải bài toán tìm kiếm tri thức theo ngữ nghĩa.

Hình 6.1.1 Kiến trúc của hệ thống máy chủ xử lý song song SWG cho VN-KIM

Về mặt phần mềm, SWG có bốn loại dịch vụ cài đặt ở máy chủ tiền trạm (Front-End) là:

1. Dịch vụ VOIService:

Cung cấp thông tin về các chương trình đang hoạt động trên các nhóm máy chủ xử lý yêu cầu của SWG cho các giải thuật cân bằng tải. Để tăng tính tái sử dụng, dịch vụ này có thể triển khai tại các máy tính toán trong nhóm để lấy các thông tin hệ thống như tải rảnh của CPU, số Mbyte trống trên bộ nhớ RAM, …

Client Client Client Client

VOAService VOKBService VOLService

Annotation IS Sesame IS Lucence IS

SS 1 SS 2 SS 3

AS 1 AS 2 LS 1 LS 2

VOIService

2. Dịch vụ VOAService:

Chịu trách nhiệm nhận yêu cầu chú thích ngữ nghĩa cho các trang web tiếng Việt, rồi tìm một chương trình chú thích đang hoạt động trên nhóm máy chủ chú thích trong hệ thống SWG. Sau đó chuyển yêu cầu chú thích này đến chương trình đó, rồi chờ nhận kết quả để chuyển tiếp về phía khách hàng (Client) đã yêu cầu chú giải.

3. Dịch vụ VOKBService:

Chịu trách nhiệm nhận yêu cầu truy vấn cơ sở tri thức từ phía khách hàng, rồi tìm kiếm một hệ quản trị cơ sở tri thức như Sesame đang hoạt động trên nhóm máy chủ quản trị cơ sở tri thức trong hệ thống SWG. Sau đó chuyển yêu cầu truy vấn này đến hệ quản trị cơ sở tri thức đó, rồi chờ nhận kết quả để chuyển tiếp về phía khách hàng đã yêu cầu truy xuất cơ sở tri thức.

4. Dịch vụ VOLService:

Chịu trách nhiệm nhận và trả lời yêu cầu truy xuất các tài liệu được lưu trữ trong một hệ quản trị tài liệu đã được chú thích ngữ nghĩa như Lucene từ phía khách hàng. Chức năng và cách hiện thực dịch vụ này tương tự như của dịch vụ VOKBService.

Dịch vụ VOIService

Để đáp ứng các yêu cầu đặt ra, VOIService sẽ lưu trữ các địa chỉ của từng loại quá trình tính toán trong bộ nhớ theo bảng băm. Như vậy là có ba bảng băm lưu danh sách địa chỉ của các quá trình chú thích ngữ nghĩa, truy hồi tri thức và truy hồi tài liệu. Dịch vụ này sẽ lắng nghe ở cổng 10000, dùng giao thức UDP để truyền và nhận thông tin. Lý do chọn giao thức UDP là vì nó giúp gửi/nhận dữ liệu nhanh hơn giao thức TCP. Nếu cần thay đổi cổng lắng nghe (mặc định là cổng 10000), thì chỉ cần hủy quá trình VOIService hiện tại và chạy lại với tham số cổng mới. Đó là tính uyển chuyển của dịch vụ này.

VOIService hỗ trợ tính đa luồng bằng kỹ thuật Java Multithread, và số lượng các đối tượng được tạo ra từ tham số dòng lệnh trong quá trình chạy có thể thay đổi được.

Hiện tại VOIService được chạy với ba luồng đồng thời. Đây là số luồng tối ưu được chọn

cho hệ thống các máy chủ vật lý hiện có của VN-KIM, sau khi kiểm tra nhiều lần trong các cuộc thử nghiệm nhằm tìm ra một giá trị tốt nhất.

VOIService còn được thiết kế theo dạng mô hình phân cấp, theo đó ở mỗi nơi tính toán có cài đặt dịch vụ này sẽ gửi các thông số hệ thống (như tình trạng hoạt động của CPU, bộ nhớ RAM, Swap còn trống, …) về trung tâm cũng là một dịch vụ VOIService.

Mô hình này hiện nay được dùng nhiều trong các dự án về tính toán lưới có sử dụng môi trường Globus Toolkit ([44]).

public class InformationService extends Thread { public void run() { ……… }

/**

* Tìm và trả về một dịch vụ chú thích ngữ nghĩa tốt nhất */

protected String findAnnotationService() { … } /**

* Tìm và trả về một dịch vụ truy hồi tri thức tốt nhất */

protected String findKBService() { … } private synchronized int incASIndex() { … } private synchronized int incLSIndex() { … } /***

* Tìm và trả về một dịch vụ truy hồi tài liệu tốt nhất */

protected synchronized String findLucenceService() { /**

* Tác vụ này trả về thông số hệ thống gồm:

* CPU ussage, bộ nhớ (RAM, SWAP...)...

* bằng cách thực hiện lệnh shell là /usr/sbin/vmstat và lấy ra các * giá trị cần thiết. Sau đó truyền về một dịch vụ đóng vai trò * quản lý các dịch vụ này.

*/

protected void getHostSysInfo(DatagramPacket packet) { … } }

Hình 6.1.2 Đoạn mã bằng Java khai báo một lớp trong VOIService

Việc lập trình cho dịch vụ VOIService được thực hiện bằng thư viện Java Socket (gói java.net.*). Hiện nay để triển khai, toàn bộ các lớp cần thiết cho dịch vụ VOIService đã được đóng gói trong tập tin vois.jar. Hình 6.1.2 trình bày đoạn mã bằng Java để khai báo một lớp quan trọng của dịch vụ VOIService.

Hình 6.1.3 mô tả mô hình hoạt động tổng quát của các dịch vụ VOIService, VOAService, VOKBService và VOLService trên máy chủ tiền trạm và các nhóm máy chủ xử lý. Trong VN-KIM, có ba nhóm máy chủ xử lý yêu cầu là A-Server, S-Server, và L-Server, lần lượt đảm trách việc xử lý các yêu cầu chú thích ngữ nghĩa, truy hồi tri thức trên Sesame, và truy hồi tài liệu trên Lucene.

Hình 6.1.3 Mô hình hoạt động của các dịch vụ và nhóm máy chủ của VN-KIM

Một phần của tài liệu Nghiên cứu phát triển các kỹ thuật xây dựng và khai thác thông tin web có ngữ nghĩa (Trang 120 - 124)

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

(208 trang)