Giải pháp này được hình thành từ ý tưởng được nêu ra ở trên nhằm đáp ứng được yêu cầu bài toán có sử dụng Agent:
Đối với các yêu cầu tính toán, các tính toán được đóng gói thành các Agent, mỗi Agent thực hiện các công việc tính toán nhất định.
Các yêu cầu khi được gửi đến sẽ được phân loại thành có yêu cầu chuyển Agent hay không yêu cầu Agent. Xét với trường hợp nếu yêu cầu là yêu cầu trả về Agent: Khi Client gửi yêu cầu, nó sẽ gửi qua Proxy, ở đây Proxy sẽ kiếm tra có các Agent tương ứng thực hiện các yêu cầu đó không, nếu có nó, Agent ở Proxy sẽ thực hiện tính toán và trả kết quả về cho Client. Nếu ở Proxy không có Agent thực hiện tính toán được yêu cầu, yêu cầu này sẽ tiếp tục được gửi lên Server bởi Proxy, Server tìm kiếm trong các Agent mà nó đang chứa, nếu tìm thấy nó sẽ trả kết quả về cho Client ngoài ra còn sao
chép thành một Agent và gửi trả cho Proxy lưu trữ để thực hiện các tính toán yêu cầu sau này. Với các yêu cầu từ Client không phải là các yêu cầu về Agent, Server sẽ thực hiện các tính toán và gửi trả về cho Client.
Một điểm cần nói thêm đó là, đối với các tính toán có sử dụng và bị thay đổi theo sự thay đổi của cơ sở dữ liệu. Sẽ có 1 Agent ở phía Server phụ trách việc cập nhật thay đổi cơ sở dữ liệu với các Agent tính toán còn lại, và ở phía Proxy cơ sở dữ liệu cũng được sao chép, lưu trữ dưới dạng Cache bởi các Agent liên quan.
3.4 Phân tích mô hình 3.4.1 Mô hình chung
Như đã trình bày ở trên về giái pháp được đưa ra để giải quyết bài toán xây dựng mô hình Proxy động dựa trên Agent. Mô hình của các yêu cầu:
Hình 3.2. Mô hình giải pháp Proxy động
Trên đây là mô hình yêu cầu chung từ Client, Proxy lắng nghe và phân loại yêu cầu có chuyển Agent hay các yêu cầu xử lý không Agent. Trên Proxy và Server đều có các vùng chứa và môi trường JADE để các Agent có thể di chuyển, trao đổi thông tin, thực thi các tính toán khi di chuyển.
Hình 3.3. Mô hình giải pháp Proxy động chi tiết
3.4.2 Mô hình Client
Thành phần chính của client là Web server hoặc application server, đại điện cho người dùng gửi các yêu cầu tính toán.
3.4.3 Mô hình Server
Các thành phần chính của Server trong mô hình được xây dựng là:
• Agent: Các agent trên Server bao gồm các agent được sử dụng để thực hiện các tính toán, cập nhật cơ sở dữ liệu, liên lạc với nhau. Cổng giao tiếp Agent JadeGateway được dùng xem như cổng giao tiếp giữa các agent ở Proxy và Server.
• Dữ liệu: hệ cơ sở dữ liệu hoặc file; dữ liệu sẽ được truy vấn trả về cho các yêu cầu từ client.
Hình 3.4. Mô hình giao tiếp Server
• Giao tiếp với Client/Proxy: phần này làm nhiệm vụ lắng nghe và tạo kết nối với Client hoặc Proxy. Khi có yêu cầu gửi đến, phần này sẽ gửi cho phần phân tích phân loại các yêu cầu và duy trì kết nối để đợi kết quả.
• Phần xử lý: đây là phần xử lý các yêu cầu gửi đến, nơi đây sẽ phân loại các yêu cầu gửi tới, xác định yêu cầu gửi đến là yêu cầu về agent hay là yêu cầu thông thường. Nếu là yêu cầu thông thường nó sẽ truy vấn cơ sở dữ liệu và trả về thông tin cho bộ phận giao tiếp để trả về cho Client.
• Agent Container: Nếu yêu cầu được phân tích là yêu cầu Agent, thường thì các yêu cầu được gửi sang bởi một agent và giao tiếp với Agent Container, Agent Container sẽ tìm kiếm Agent phù hợp và trả về Agent cho Proxy cùng các dữ liệu liên quan để Proxy trả kết quả cho Client.
• Cơ sở dữ liệu: sẽ được truy vấn trực tiếp bởi các truy vấn thông thường hay bị các agent tương tác.
3.4.4 Mô hình Proxy
• Agent: Agent được tạo ra từ jadeGateway, giao tiếp với quản lý Agent của Server, khi yêu cầu tới Server của Proxy về các agent thực hiện tính toán cho Client chưa có sẵn và các agent tính toán được Server gửi tới.
• Dữ liệu: hệ cơ sở dữ liệu được lưu dưới dạng Cache, cập nhật từ cơ sở dữ liệu của Server.
Mô tả giao tiếp giữa các thành phần của Proxy
Hình 3.5. Mô hình giao tiếp Proxy
• Giao tiếp với Client/Server: Proxy khởi động sẽ mở một socket chờ yêu cầu từ Client đồng thời thiết lập môi trường JADE để có thể thực thi các agent. Yêu cầu được gửi đến từ Client sẽ được xử lý để xác định xem đó có phải là yêu cầu thực thi agent hay không, kết nối được duy trì cho đến khi có kết quả trả về.
• Xử lý yêu cầu: nếu yêu cầu được gửi đến là yêu cầu thông thường, Proxy Proxy có thể xử lý bằng cách trả về kết quả được truy vấn từ Cache Proxy, hoặc gửi các yêu cầu lên Server để chờ Server xử lý.
Nếu yêu cầu gửi đến là yêu cầu Agent, bộ xử lý này sẽ tìm kiếm trong Agent container xem có agent phù hợp không để đưa ra kết quả, truy vấn
Nếu yêu cầu là yêu cầu Agent, mà không có agent trong Agent container phù hợp thì sẽ có một yêu cầu gửi lên Server yêu cầu Agent phù hợp, kết quả được xử lý trả về qua Proxy và được gửi đến Client.
Kết nối sẽ được duy trì cho đến khi có kết quả trả về Client.
• Agent container: chứa các agent tại Proxy, thực hiện việc tìm kiếm và trả về các agent theo yêu cầu, sau đó trả kết quả xử lý cho Client. Bên cạnh đó Agent container quản lý các agent, nếu sau một thời gian nhất định Agent không được sử dụng, nó sẽ bị xóa ra vùng chứa này.
3.5 Tổng kết
Mục đích của chương này là giới thiệu cách phân tích một mô hình giảm tải mạng dựa trên Proxy động với các kiến thức về Agent. Phần phân tích đi sâu vào giới thiệu mô hình, cách thức giao tiếp, các kiến thức về Agent được lựa chọn phù hợp với bài toán. Trong chương 4, em xin giới thiệu về cách xây dựng mô hình giảm tải mạng cho Server bằng cách sử dụng Proxy động dựa trên Agent cho bài toán tìm kiếm truy vấn trên danh sách sinh viên từ Server dựa trên mô hình quản lý đào tạo của các trường đại học.
Chương 4.THỰC NGHIỆM
Để chứng minh tính khả thi của mô hình đề xuất trong chương 3, chúng tôi đã xây dựng thực nghiệm cho việc phân tải cho Server sử dụng Proxy động dựa trên Agent.
4.1 Mô tả chương trình
Chương trình thực nghiệm được xây dựng thiết kế dựa trên chương trình quản lý đào tạo đại học, đây là một hệ thống rất phức tạp với một cơ sở dữ liệu rất lớn và phức tạp. Hệ thống này có và sẽ phải thực hiện hàng trăm chức năng với một cơ sở dữ liệu rất phức tạp liên quan đến dữ liệu của Khoa, bộ môn, chương trình đào tạo, ngành đào tạo, hệ đào tạo, bậc đào tạo, giảng viên, phân công giảng dạy, thời khóa biểu học, thời khóa biểu thi, trang thiết bị giảng dạy, giảng đường, phòng thí nghiệm phục vụ đào tạo, lớp môn học, sinh viên, điểm thi, quản lý khen thưởng, nghiên cứu khoa học sinh viên, vấn đề xét tốt nghiệp...Cùng với hàng trăm chức năng đó sẽ là một cơ sở dữ liệu khổng lồ với các bảng và mối quan hệ phức tạp. Cơ sở dữ liệu của hệ thống được lưu dưới dạng các thông tin gốc của nó, ví dụ như điểm một môn học sẽ được lưu dưới dạng điểm thành phần và trọng số của nó. Hệ thống càng phức tạp hơn khi dữ liệu được lưu trữ là cơ sở dữ liệu của rất nhiều năm. Hãy thử hình dung các công việc của Server khi có yêu cầu xem điểm trung bình. Trước tiên hệ thống phải tính điểm trung bình tích lũy dựa theo việc tra cứu các điểm thành phần, từ đó tính điểm tống hợp của môn. Căn cứ vào mã môn, hệ thống phải tìm ra số tín chỉ của các môn có điểm từ D trở lên, rồi mới tính trung bình theo trọng số là số tín chỉ. Vì thế, nếu mỗi sinh viên muốn xem điểm trung bình khi trực tiếp truy cập vào hệ thống thì tải của hệ thống sẽ là rất lớn.
Việc để cán bộ và sinh viên truy cập trực tiếp vào cơ sở dữ liệu sẽ có 2 vấn đề cần phải giải quyết:
• Tải hệ thống lớn :Hệ thống tải số lượng lớn người dùng và số lượng truy cập lên cơ sở dữ liệu rất lớn.
• An toàn dữ liệu: việc truy cập lên dữ liêu gốc sẽ xảy ra các nguy cơ mất an ninh với dữ liệu: dữ liệu bị mất mát, thay đổi ...
Trong khi đó số lượng truy cập thường xuyên chỉ trên một phần cơ sở dữ liệu. Giải pháp giảm tải cho Server với việc sử dụng Proxy (một hoặc nhiều) dựa trên khái niệm Agent, Mobile Agent là một giải pháp khá hữu ích với việc đóng gói các tính toán giống nhau thường xuyên truy cập lên một phần cơ sở dữ liệu đào tạo. Với các tính toán
giống nhau, chúng ta sẽ đóng gói chúng thành các Agent với các chức năng cần thực hiện, các agent này sẽ được gửi xuống Proxy khi có yêu cầu. Với các yêu cầu tiếp theo, Agent đã chứa sẵn ở Proxy sẽ thực hiện các tính toán đó, đồng thời nó cũng cập nhật lại cơ sở dữ liệu khi có sự thay đổi của cơ sở dữ liệu gốc. Ví dụ với việc truy vấn tính điểm trung bình, chúng ta sẽ xây dựng một agent có chức năng tính toán điểm trung bình của sinh viên dựa vào dữ liệu có sẵn ở cơ sở dữ liệu. Agent này sẽ được gửi tới proxy khi được yêu cầu, trả về kết quả đồng thời cập nhật tự động điểm khi điểm trên cơ sở dữ liệu có sự thay đổi, cơ sở dữ liệu được cập nhật này sẽ được lưu ở Proxy dưới dạng Cache. Với cách làm như vậy, các vấn đề nêu trên sẽ được giải quyết:
• Giảm tải cho Server, các tính toán thường xuyên sẽ được đóng gói và lưu ở Proxy, kết quả sẽ được trả về khi có các yêu cầu từ Client. Với phần cài đặt là các tính toán dựa trên điểm sinh viên, các khía cạnh khác cũng xây dựng, phân tích Agent theo cơ chế tương tự.
• Dữ liệu được tăng tính an toàn do sinh viên không truy cập, tính toán trực tiếp lên dữ liệu gốc ở Server mà các dữ liệu thường xuyên được lưu, cập nhật tại Proxy.
4.2 Thiết kế ứng dụng
Mô hình sẽ được thiết kế với luồng các hành động của các thành phần Client, Proxy, Server.
Hình 4.1. Sơ đồ khối chương trình tìm kiếm thông tin
Khi Client gửi yêu cầu về việc tìm kiếm điểm trên danh sách sinh viên, yêu cầu đó sẽ được gửi tới Proxy, ở đây Proxy đã khởi động, mở sẵn một socket chờ các yêu cầu từ Client gửi và nền tảng JADE đã được khởi động để làm môi trường thực thi các agent. Khi yêu cầu được gửi đến, Proxy sẽ phân tích yêu cầu, kiểm tra xem đó có phải là yêu cầu về agent hay không. Nếu yêu cầu từ Client là yêu cầu về agent, Proxy sẽ kiểm tra xem đã có agent thực hiện truy vấn của Client yêu cầu chứa sẵn trong Proxy hay không, nếu có Proxy sẽ thực hiện truy vấn thông tin đó và trả về kết quả cho Client. Nếu Proxy không chứa sẵn các agent, nó sẽ gửi yêu cầu lên Server, nơi chứa các agent trong môi trường JADE và cùng với cơ sở dữ liệu thông tin sinh viên. Khi Server tìm thấy agent mà Proxy yêu cầu, nó sẽ sao chép agent (clone agent) và gửi trả về cho Proxy agent sao chép đó cùng cơ sở dữ liệu liên quan. Tại Proxy, agent được gửi từ Server sẽ thực hiện
được lưu trữ tạm thời và cập nhật bởi các agent. Agent thực hiện nhiệm vụ cập nhật cơ sở dữ liệu ở Server sẽ cập nhật thông tin ở cơ sở dữ liệu sau khi có sự thay đổi, agent này sẽ giao tiếp với các agent ở Server để xác nhận sự thay đổi thông tin đó, đồng thời các agent ở Server cũng sẽ liên lạc với các agent ở Proxy để cập nhật sự thay đổi của cơ sở dữ liệu, các agent ở Proxy sẽ cập nhật sự thay đổi dữ liệu này với cơ sở dữ liệu ở dạng lưu Cache trên Proxy. Đây chính là điểm nổi bật làm giảm tải sự truy cập trực tiếp lên cơ dữ liệu ở Server từ các yêu cầu, đồng thời làm phẩn tải mạng. Nếu yêu cầu gửi từ Client không phải là yêu cầu agent, thì yêu cầu này sẽ được gửi lên Server và thực hiện truy vấn trả kết quả về cho Client.
4.3 Cài đặt và thực nghiệm
Trên cơ sở phân tích thiết kế, chúng tôi đã thực hiện cài đặt chương trình tìm kiếm thông tin trên danh sách sinh viên dựa trên chương trình quản lý đào tạo đại học. Một máy làm Server, một máy làm Proxy, và một số máy tính được sử dụng được xem như các Client kết nối với Proxy để chạy thử chương trình.
4.3.1 Cài đặt
• Server: tạo một Server với chức năng nhận yêu cầu, xử lý thông tin và gửi yêu trả lời. Server được chọn là một webServer được xây dựng bởi ngôn ngữ Java kết hợp việc thực thi các agent ở Server trên nền tảng JADE. Tất cả những hành động này được thực hiện và trao đổi với Proxy thông qua GatewayAgent. Cài đặt hệ cơ sở dữ liệu MySQL cho thông tin danh sách sinh viên.
• Proxy: thực hiện cài đặt 1 proxy sử dụng java và phát triển trên nền tảng JADE để lưu trữ và thực thi các agent. Proxy được cài đặt khi khởi động sẽ khởi động cùng nền tảng JADE và đợi các yêu cầu từ Client.
4.3.2 Thực nghiệm
Kết quả thực nghiệm thu được sau khi cài đặt thành công mô hình gồm 1 máy Server, 1 máy Proxy và sử dụng một số máy tính làm Client như sau:
• Cấu hình máy Server: Core 2 dual 2.66GHz, RAM 2G, hệ điều hành Window XP.
• Cấu hình máy Proxy: Core 2 dual 2.2GHz, RAM 2G, hệ điều hành Window XP.
• Các Client sử dụng trình duyệt Mozila Firefox 3.6 Bảng số liệu thực nghiệm
Số lượng Client
Số yêu cầu đến Proxy (Dung lượng Bytes)
Số yêu cầu đến Server (Dung lượng Bytes)
Ghi chú 1 5 (2589 B) 4 (1987 B) 1 7 (3767 B) 6 (3070 B) 3 21 (11301 B) 16 (8515 B) 5 35 (18853 B) 26 (13865 B) 5 45 (24313 B) 26 (13865 B) 5 65 (35200 B) 41 (21005 B) 5 65 (73453 B) 42 (21525 B) 5 135 (73453 B) 26 (13865 B)
Chương 5.KẾT LUẬN
Qua thời gian nghiên cứu về công nghệ Agent, đặc biệt là trong quá trình thực hiện khóa luận tốt nghiệp, em đã nắm rõ được cách phân tích, xây dựng mô hình mạng phân tán dựa trên công nghệ Agent và áp dụng vào mô hình này vào bài toán thực tế: xây dựng mô hình giảm tải mạng cho Server nhờ Proxy động dựa trên công nghệ Agent. Những kết quả chính mà khóa luận đã đạt được có thể tổng kết như sau:
• Tìm hiểu chung về công nghệ Agent, một hướng phát triển kiến trúc phần mềm mới và hữu ích; những ứng dụng của Agent, Mobile Agent với với các hệ thống phân tán, mở, phức tạp phát được phát triển cùng với sự lớn mạnh của Internet ngày này.
• Phân tích, thiết kế mô hình phân tải mạng cho Server nhờ Proxy động dựa trên công nghệ Agent.
• Áp dụng mô hình này vào bài toán giảm tải mạng cho mô hình tìm kiếm thông tin trên danh sách sinh viên của các trường đại học trong bài toán quản lý đào tạo đại học.
Bên cạnh những kết quả đạt được, còn có những vấn đề mà tại thời điểm hiện tại mà khóa luận vẫn chưa đạt được là chưa đưa được Jade Ontology để mô tả các mối