Mục lục
Lời cảm ơn . . . . i
Tóm tắt . . . . ii
Abstract . . . . iii
Mục lục . . . . iv
Danh mục hình vẽ . . . . vi
Chương 1 Đặt vấn đề . . . . 1
1.1. Thực trạng . . . . 1
1.2. Phạm vi nghiên cứu . . . 3
1.3. Sơ lược về cách tiếp cận . . . 3
1.4. Cấu trúc của khóa luận . . . 4
Chương 2 Agent phần mềm. . . 6
2.1. Tìm hiểu về Agent. . . . 6
2.1.1. Agent . . . . 6
2.1.1.1. Agent là gì . . . 6
2.1.1.2. Kiến trúc tổng thế . . . 7
2.1.2. FIPA (Foundation for Intelligent, Physical Agents) . . 8
2.1.2.1. Lịch sử phát triển . . . 8
2.1.2.2. Các khái niệm cốt lõi . . . 9
2.1.2.2.1. Truyền thông Agent (agent communication) . . 9
2.1.2.2.2. Quản lý Agent (Agent management) . . 9
2.2. Nền tảng JADE . . . . 10
2.2.1. Lịch sử phát triển. . . 10
2.2.2. Jade và mô hình các Agent . . . 11
2.2.3. Kiến trúc Jade. . . 11
2.2.4. Biên dịch và chạy nền tảng Jade . . . 13
2.2.5. Agent di động (Mobile Agent) . . . 16
Chương 3 Mô hình Proxy động . . . 19
3.1. Mô tả bài toán . . . . 19
3.2. Mô hình đề xuất . . . . 20
3.2.1. Ý tưởng . . . . 20
3.2.2. Giải pháp . . . . 21
3.2.2.1. Giải pháp cho Server . . . 21
3.2.2.2. Giải pháp cho Proxy . . . 21
3.2.3. Mô hình . . . . 22
3.2.3.1. Mô hình chung . . . 22
3.2.3.2. Mô hình của Server . . . 23
3.2.3.3. Mô hình của Proxy . . . 25
Chương 4 Thực nghiệm . . . 29
4.1. Phân tích thiết kế . . . . 29
4.1.1. Mô tả chương trình . . . 29
4.1.2. Yêu cầu kỹ thuật. . . 30
4.1.2.1. Yêu cầu kỹ thuật cho Server . . . 30
4.1.2.2. Yêu cầu kỹ thuật cho Proxy . . . 30
4.1.3. Các giai đoạn phát triển . . . 31
4.1.4. Thiết kế chương trình . . . 32
4.2. Cài đặt và thực nghiệm . . . 33
4.2.1. Cài đặt Server . . . 34
4.2.2. Cài đặt Proxy . . . . 34
4.2.3. Thực nghiệm . . . . 34
Chương 5 Kết luận . . . . 37
5.1. Kết quả thu được . . . . 37
5.2. Hướng phát triển tiếp theo . . . 38
Tài liệu tham khảo . . . . 40
50 trang |
Chia sẻ: maiphuongdc | Lượt xem: 1826 | Lượt tải: 2
Bạn đang xem trước 20 trang tài liệu Khóa luận Nghiên cứu mô hình phân tải server sử dụng proxy động, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ính toán nhằm vào việc phát triển của kiến trúc các Agent thông
minh, và những năm đầu đã tồn tại các kiểu thiết kế kiến trúc khác nhau, từ các kiến trúc
đơn giản về phản ứng hành động (reactive) điều khiển trong một mô hình kích thích – trả
lời, như là kiến trúc xếp gộp [3], cho đến các kiến trúc phức tạp hơn như là kiến trúc dựa
trên sự tin tưởng vào mục đích (BDI-belief desire intention) [7]. Kiến trúc phân lớp, tổng
hợp giữa hai kiểu kiến trúc trên, cố gắng bao gồm cả phản ứng hành động và cân nhắc để
trộn lẫn được điểm mạnh nhất của cả hai phương pháp trên. Như vậy, kiến trúc của Agent
có thể được chia thành bốn nhóm chính: Nền tảng Lôgic, phản ứng hành động (reactive),
BDI và kiến trúc phân lớp (layered achitectures).
Nghiên cứu mô hình phân tải Server sử dụng Proxy động
8
2.1.2. FIPA (Foundation for Intelligent, Physical Agents)
Phần này sẽ giới thiệu một cách tổng quát về lịch sử phát triển và nội dung chính
của các đặc tả FIPA. Tập hợp đầy đủ các đặc tả của FIPA có thể được tìm thấy trên trang
web chính thức của FIPA [17].
Jade là sự thi hành của các đặc tả FIPA vì thế nó phụ thuộc lớn vào các ý tưởng
được đưa ra trong các đặc tả và được mở rộng dựa trên chính các văn bản đi kèm. Tuy
nhiên các đặc tả FIPA không được thể hiện hoàn toàn ở trong Jade vì Jade có mở rộng
thêm ở một số khu vực so với các đặc tả.
2.1.2.1. Lịch sử phát triển
FIPA được thành lập năm 1996 như là một tổ chức phi lợi nhuận quốc tế với mục
tiêu phát triển tập hợp các chuẩn liên quan đến công nghệ phần mềm Agent. Các thành
viên ban đầu, tập hợp của các tổ thức nghiên cứu và công nghiệp, đưa ra một tập hợp các
quy chế hướng dẫn sản xuất cho một tập hợp các đặc tả chuẩn de jure [2] dành cho công
nghệ phần mềm Agent. Ở thời điểm này, các phần mềm Agent đã được biết đến rộng rãi
trong giới khoa học nhưng nhận được rất ít sự quan tâm của các tổ chức thương mại.
Những người đứng đầu đã đồng ý cho sản xuất các chuẩn có thể tạo ra một nền tảng cứng
của một kỹ thuật mới bằng cách sử dụng chéo một lượng lớn các ứng dụng.
Cốt lỗi của FIPA sẽ theo tập hợp các nguyên lý:
- Các Công nghệ Agent cho phép một mô hình mới để giải quyết các vấn đề cũ và
mới.
- Các công nghệ Agent sẽ tiến đến cấp độ trưởng thành lớn.
- Để sử dụng được, các công nghệ Agent cần phải có đặc tả.
- Đặc tả của công nghệ tiến hoá được đưa ra để hỗ cung cấp các kết quả thu được
bởi đặc tả fora.
- Đặc tả của cơ chế bên trong các Agent không phải mối quan tâm chính, mà là cơ
sở hạ tầng và ngôn ngữ yêu cầu cho khả năng phối hợp mở.
Nghiên cứu mô hình phân tải Server sử dụng Proxy động
9
2.1.2.2. Các khái niệm cốt lõi
Trong suốt quá trình phát triển của FIPA, rát nhiều các ý tưởng liên quan đến Agent
đã được đưa ra. Nhiều ý tưởng đã tiến tới việc thực hiện sau khi được đưa ra thành các
chuẩn, một vài ý tưởng vẫn đang được phát triển nhưng chưa hoàn thành, và có những cái
khác đã thật bại vì một hoặc nhiều lý do. Trong tất cả các ý tưởng đó, những phần quan
trọng nhất là truyền thông Agent, quản lý Agent và kiến trúc Agent. Phần này sẽ giới
thiệu về hai trong số ba phần quan trọng nhất đó.
2.1.2.2.1. Truyền thông Agent (agent communication)
Agent về cơ bản là hình thái của quá trình phân phối mã nguồn và do đó tuân theo
khái niệm cổ điển của mô hình phân phối tính toán theo hai phần: các thành phần và các
kết nối. Các thành phần là những khách hàng, những nhà sản xuất và những người điều
hành của các thông điệp truyền thông thông qua các kết nối. Phần thân của các chuẩn đầu
tiên như là ISO hay IETF lựa chọn một cách tiếp cận hướng mạng trong việc phát triển
các cụm các giao thức được phân lớp dựa phần lớn trên truyền thông máy tính chúng ta đã
biết – mô hình OSI và mô hình TCP/IP. Cả hai đều được tận dụng thông qua giao tiếp
giữa các phần mềm ứng dụng giao thức.
2.1.2.2.2. Quản lý Agent (Agent management)
Để bổ sung cho truyền thông, khía cạnh cơ bản thứ hai của các hệ thống Agent được
tạo ra bởi các đặc tả ban đầu của FIPA là quản lý Agent: một nền tảng chuẩn trong đó các
chuẩn FIPA cho Agent có thể tồn tại, tổ chức và quản lý. Nó thành lập cá mô hình lôgíc
tham chiếu cho việc khởi tạo, đăng ký, xác định vị trí, di trú và tổ chức các Agent. Mô
hình tham chiếu quản lý Agent bao gồm các thành phần được miêu tả như hình 2.1.
Nghiên cứu mô hình phân tải Server sử dụng Proxy động
10
Hình 2.1: Quản lý Agent
2.2. Nền tảng JADE
Phần này sẽ đưa ra cái nhìn tổng quan cơ bản về nền tảng JADE (Java Agent
Development framework) và các thành phần chính trong kiến trúc phân phối của nó.
2.2.1. Lịch sử phát triển
Phầm mềm phát triển đầu tiên, về sau sẽ trở thành nền tảng JADE, được bắt đầu bởi
Telecom Italia (được gọi tắt là CSELT) vào cuối năm 1998, được thúc đẩy bởi nhu cầu
cần kiểm chứng các đặc tả đầu tiên của FIPA.
JADE được trở thành mã nguồn mở trong năm 2000 và được phân phối bới Telecom
Italia dưới giấy phép LGPL ( Library Gnu Public Licence). Giấy phép này đảm bảo tất cả
các quyền cơ bản để thuận tiện cho việc sử dụng phần mềm bao gồm trong các sản phẩm
thương mại: quyền được sao chép phần mềm và phân phối bản sao chép, quyền được sử
dụng mã nguồn của phần mềm, và quyền thay đổi mã nguồn và cải tiến nó. Không giống
như giấy phép GPL, giấy phép LPGL không đưa bất kỳ sự hạn chế nào và phần mềm sử
dụng JADE, và nó cho phép các phần mềm độc quyền được trộn vẫn với phần mềm đăng
ký giấy phép LGPL. Mặt khác, giấy phép này yêu cầu mọi công việc bắt nguồn từ JADE,
Nghiên cứu mô hình phân tải Server sử dụng Proxy động
11
hoặc bất kỳ công việc nào dựa trên nó đều phải được đưa ra cộng đồng với cùng giấy
phép.
Website chính thức của JADE [16] cung cấp tất cả các phần mềm, tài liệu, mã nguồn
ví dụ và các thông tin về sử dụng JADE.
2.2.2. Jade và mô hình các Agent
JADE là một phần mềm nền tảng cung cấp các chức năng phần mềm lớp giữa cơ
bản, nó không phụ thuộc vào ứng dụng riêng biệt nào và làm đơn giản hoá việc phân phối
các ứng dụng khai thác phần mềm ảo hoá Agent [10]. Một trong những giá trị đầy ý nghĩa
của JADE là nó thực hiện trừu tượng hóa dựa trên sự hiểu biết về hướng đối tượng, Java,
cung cấp API đơn giản và thân thiện. Các lựa chọn thiết kế đơn giản về sau chịu ảnh
hưởng từ việc trừu tượng hoá Agent.
2.2.3. Kiến trúc Jade
Hình 2.2 miêu tả các nhân tố kiến trúc chính của nền tảng JADE. Một nền tảng
JADE bao gồm các vùng chứa Agent (container) có thể được phân phối qua mạng. Các
Agent sống trong các vùng chứa là các quá trình Java, nó cung cấp quá trình thực thi của
JADE và tất cả các dịch vụ cần thiết cho lưu trữ và thực thi Agent. Một vùng chứa đặc
biệt, được gọi là vùng chưa chính (Main-container), là nơi khởi động của nền tảng: nó là
vùng chưa đầu tiên được thực thi và tất cả các vùng chưa khác phải được liên kết đến
vùng chưa chính bằng cách đăng ký với nó. Biểu đồ UML trong hình 2.3 miêu tả mối
quan hệ giữa các thành phần kiến trúc chính của JADE.
Nghiên cứu mô hình phân tải Server sử dụng Proxy động
12
Hình 2.2: Mối quan hệ giữa các thành phần trong kiến trúc chính
Hình 2.3: UML mối quan hệ giữa các thành phần trong kiến trúc chính
Nghiên cứu mô hình phân tải Server sử dụng Proxy động
13
2.2.4. Biên dịch và chạy nền tảng Jade
Tất cả các phần mềm liên quan đến JADE đều có thể tải về từ trang web chính thức
của JADE. Các phần mềm liên quan đến JADE có thể chia thành hai loại: bản phân phối
chính và các bản phụ trợ. Các bản phụ trợ trong mỗi bản riêng biệt đều có chứa các đơn vị
(module) thực thi các phần mở rộng riêng biệt như các mã hoá cho ngôn ngữ. Trong nhiều
trường hợp, các bản này không được phát triển trực tiếp bởi đội ngũ phát triển của JADE
mà là các thành viên của cộng đồng nguồn mở, những người quyết định đưa các thành
quả nghiên cứu của mình lên cho cộng đồng cùng xem.
Bản phân phối chính bao gồm năm file đã được nén là:
- jadeBin.zip chứa một file jar là nền tảng JADE đã được biên dịch và sử dụng được
ngay
- jadeDoc.zip chứa các tài liệu bao gồm: Hướng dẫn cho người quản trị
(Administrator Guide), Hướng dẫn cho người lập trình (Programmer Guide). Các tài liệu
này cũng có thể tải về từ trang web chính thức của JADE
- jadeExamples.zip chứa các mã nguồn của rất nhiều ví dụ
- jadeSrc.zip chứa tất cả các mã nguồn của JADE
- jadeAll.zip chứa tất cả 4 file nói trên
Nếu tất cả các file trên được tải xuống và giải nén thì cấu trúc thư mục sẽ giống như
miêu tả ở hình 2.4.
Thư mục jade/lib chứa tất cả các file jar cần phải được khai báo vào java
CLASSPATH để chạy JADE.
Nghiên cứu mô hình phân tải Server sử dụng Proxy động
14
Hình 2.4: Cấu trúc thư mục JADE
Ví dụ, khi đã tải về ổ C trong hệ điều hành Windows, để chạy được JADE, trước hết
cần khai bao CLASSPATH cho java như sau:
prompt> set JADE_HOME=c:\jade
prompt> set CLASSPATH=%JADE_HOME%\lib\jade.jar;
%JADE_HOME%\lib\jadeTools.jar;
%JADE_HOME%\lib\http.jar;
%JADE_HOME%\lib\iiop.jar;
%JADE_HOME%\lib\commons-codec\commons-codec-
1.3.jar;%JADE_HOME%\classes
Sau đó có thể khởi động JADE với đồ hoạ bằng cách sử dụng lệnh:
prompt> java jade.Boot –gui
Sau khi khởi động thành công, màn hình dòng lệnh sẽ hiển thị thông báo giống như
hình 2.5 và đồ hoạ của JADE sẽ hiện ra giống như hình 2.6.
Nghiên cứu mô hình phân tải Server sử dụng Proxy động
15
Hình 2.5: Kết quả khi khời động thành công
Hình 2.6: Giao diện nền tảng JADE
Nghiên cứu mô hình phân tải Server sử dụng Proxy động
16
2.2.5. Agent di động (Mobile Agent)
Agent di động [9] là mô hình được xuất phát từ hai quy tắc khác nhau [4], đầu tiên
là trí thông tinh nhân tạo, thứ tạo ra khái niệm agent, thứ hai là hệ thống phân tán, thứ
định nghĩa khái niệm về dịch chuyển mã [6].
Dựa theo định nghĩa chuẩn, Agent di động là một một agent giống như tất cả các
agent không di động khác (tự quản, phản ứng hành động, thực hiện tiên phong, có tính xã
hội), nhưng thêm vào đó, nó có khả năng di chuyển; nó có khả năng di trú giữa các nền
tảng theo yêu cầu để thực hiện các công việc được giao.
Theo cách nhìn từ hệ thống phân tán, một Agent di dộng là một chương trình với
định danh duy nhất có thể dịch chuyển mã, dữ liệu và trạng thái giữa các máy được nối
mạng. Để thực hiện được điều đó, một Agent phải có khả năng dừng công việc của nó ở
bất kỳ thời điểm nào, và tiếp tục hoạt động khi đã cư trú ở nơi khác.
Chúng ta có thể đặt Agent di động trong mối quan hệ với các mô hình truyền thống
như sau:
- Client –Server: Mô hình phổ biến nhất, ở đó các dịch vụ được Server đưa ra và
được sử dụng bởi một hoặc nhiều Client.
- Thực thi từ xa: Một thành phần gửi mã đến thành phần khác để thực thi từ xa, kết
quả đưa ra hoặc từ quyết định của chính nó, hoặc một yêu cầu từ phía thành phần ở xa,
hoặc có thể như một phần của giao kèo trước đó. Sau khi thực thi, thành phần thực thi sẽ
gửi trả kết quả về cho thành phần gốc.
- Agent di động: Một thành phần gửi bản thân nó ( hoặc đối tượng khác nếu được
phép) đến một nơi lưu trữ ở xa để thực thi. Thành phần chuyển đi với mã, dữ liệu và có
thể cả trạng thái. Sự dịch chuyển có thể tương tự như trường hợp trước, nhưng thông
thường nhất kết quả từ thành phần đó ( ví dụ là Agent di động) quyết định cho bản thân
nó có nhu cầu di chuyển địa điểm xem kẽ.
Một Agent di động như miêu tả trong hình 2.7 gồm có 3 phần: mã, trạng thái và dữ
liệu. Mã là dạng của Agent sẽ được thực thi khi di trú đến một nền tảng. Trong trường
hợp đơn giản nhất thì nó là mã đơn. Trạng thái là môi trường thực thi dữ liệu của Agent,
bao gồm chương trình đếm và ngăn xếp thực thi. Phần này chỉ tìm thấy trong Agent sử
Nghiên cứu mô hình phân tải Server sử dụng Proxy động
17
dụng cư trú mạnh. Dữ liệu bao gồm các giá trị được sử dụng bởi Agent, như là tri thức,
các file xác định v.v.
Hình 2.7: Cấu trúc đơn giản của Agent di dộng
Có khá nhiều cuộc tranh luận về ưu điểm và nhược điểm của Agent di dộng, thường
thì nó được so sánh với các Agent không di động. Một số ưu điểm là:
- Không đồng bộ và xử lý không phụ thuộc: Một khi nó đã được di trú vào một nền
tảng mới, các Agent không cần phải liên hệ với chủ của nó để thông báo về công việc. Nó
có thể chỉ cần gửi lại kết quả. Việc này đặc biệt hữu dụng khi sử dụng với các thiết bị di
động với giới hạn về tài nguyên; một agent có thể di trú đến một máy khác để thực hiện
các công việc phức tạp và trả lại kết quả theo chu kỳ.
- Chịu lỗi: Nó có thể đánh dấu và sửa lỗi với các điều kiện lỗi bằng việc chuyển đến
các nền tẳng chéo khi vấn đề được phát hiện. Công bằng nếu một điểm di trú bị sập, một
điểm trung gian có thể được chọn để đóng vai trò dự trữ. Nó phù hợp với môi trường thân
thiện và dễ đổ vỡ
- Biển các ứng dụng: Agent di động rất phù hợp với các ứng dụng cần xử lý một
lượng lớn các dữ liệu từ xa. Agent di động có thể dịch chuyển dữ liệu, trong nhiều trường
hợp nó có hiệu quả hơn so với cách làm truyền thống.
Nhưng Agent di động cũng có những khuyết điểm:
Nghiên cứu mô hình phân tải Server sử dụng Proxy động
18
- Khả năng mở rộng và hiệu năng: Mặc dù Agent di động giảm tải cho mạng, nhưng
nó lại làm tăng tải cho việc thực thi. Điều này là bởi vì nó thường được lập trình với các
ngôn ngữ thông dịch và thường cần phải được theo dõi chặt chẽ việc tương kết theo
chuẩn, nó có thể gây ra quá tải việc xử lý dữ liệu.
- Khả năng di chuyển và chuẩn hoá: Agent không thể tương kết nếu nó không tuân
theo chuẩn truyền thông thông thường. Sự chấp nhận các chuẩn này, như là OMG MASIF
(Mobile Agent System Interoperability Facility) hoặc FIPA thường rất quan trọng, đặc
biệt trong sự dịch chuyển trong một nền tảng.
- An ninh: Sử dụng Agent di động sẽ mang theo một số vấn đề về an ninh. Bất kỳ
mã di động nào đều có một mối đe doạ tiềm tàng và cần phải được chứng thực cẩn thận
trước khi thực thi.
Nghiên cứu mô hình phân tải Server sử dụng Proxy động
19
Chương 3 Mô hình Proxy động
Chương này sẽ trình bày chi tiết về bài toán đặt ra và ý tưởng để giải quyết bài toán
đó. Sau đó sẽ đi vào chi tiết về các giải pháp cho các yêu cầu bài toán đặt ra. Cuối cùng là
mô hình chi tiết dựa trên các giải pháp đưa ra để giải quyết bài toán.
3.1. Mô tả bài toán
Như đã nói ở chương đầu tiên về thực trạng hiện nay, một yêu cầu đặt ra để có thể
vận dụng và triển khai tốt nhất xu hướng phát triển tiếp theo của Internet và công nghệ
chúng ta cần phải có được một mô hình đáp ứng được yêu cầu giảm tải trên đường truyền
Internet và giảm tải cho Server. Mô hình Client – Proxy – Server là một sự lựa chọn để
đáp ứng được yêu cầu này.
Hình 3.1: Mô hình Client – Proxy – Server
Tuy nhiên, khác với các mô hình đã có trước đây, Proxy ở được sử dụng ở đây sẽ có
thể thực hiện một phần công việc tính toán thay cho Server. Điều này có nghĩa là ngoài
chức năng truyền thông tin giữa Client và Server như truyền thống, Proxy này còn phải có
khả năng yêu cầu và nhận các tính toán từ Server, sau đó nó sẽ thay cho Server thực hiện
các phần tính toán này khi có yêu cầu từ phía Client. Trong mô hình này, Server ngoài
Nghiên cứu mô hình phân tải Server sử dụng Proxy động
20
công việc tính toán và trả kết quả thông thường, nó còn phải có thêm chức năng nhận yêu
cầu và gửi các công việc về cho Proxy.
Như vậy bài toán đặt ra ở đây là phải thiết kế được một mô hình cho phép các tính
toán từ trên Server có thể được gửi xuống cho Proxy và có thể thực thi trực tiếp trên
Proxy. Proxy có khả năng nhận và thực thi tính toán như trên được gọi là Proxy động. Nói
một cách khác, yêu cầu của bài toán là xây dựng mô hình phân tải cho Server sử dụng
Proxy động.
3.2. Mô hình đề xuất
Phần này sẽ trình bày ý tưởng để đưa ra được mô hình phân tải cho Server sử dụng
Proxy động. Sau đó sẽ trình bày chi tiết về các giải pháp đưa ra trong việc xây dựng mô
hình. Cuối cùng sẽ trình bầy và giải thich về mô hình đưa ra cho bài toán đã nêu.
3.2.1. Ý tưởng
Trong bài toán đã đưa ra ở trên, phần đóng gói tính toán và gửi nó đi giữa các Server
là phần quan trọng nhất, phần này quyết định tính chất động của Proxy. Các tính toán cần
phải được đóng gói theo một cách nào đó để nó có thể lưu giữ được cách thực thi, các dữ
liệu liên quan và trạng thái của nó. Các đóng gói này cũng phải hỗ trợ cho việc chuyển
dịch các tính toán đến nơi lưu trữ mới, cho phép các tính toán có thể thực thi ngay trên
nơi trữ mới.
Ý tưởng đưa ra ở đây là sử dụng Agent cho việc đóng và dịch chuyển các tính toán
từ Server về Proxy. Mỗi tính toán riêng biệt và đặc thù sẽ được đóng gói thành một Agent
và được lưu trữ trên Server. Thông qua giao tiếp giữa Agent với môi trường hoặc giữa các
Agent với nhau, Agent sẽ thực thi các yêu cầu tới nó và trả kết quả cho bên yêu cầu. Các
Agent ngoài việc thực thi và trả kết quả, nó còn có thể dịch chuyển nơi cư trú sang một
môi trường khác hoặc một Server khác và thực thi ngay tại đó. Đây chính là yếu tố tạo
nên khả năng tính toán động cho Proxy, thực thi tính toán ngay tại chỗ thay cho việc yêu
cầu Server và nhận kết quả trả về. Ở đây, các chức tính toán và thực thi yêu cầu của Proxy
không được thiết lập trước, nó có thể thay đổi tuỳ theo yêu cầu của Client và khả năng
thực thi tính toán của Server.
Như vậy, ý tưởng chính để đưa ra được mô hình sử dụng Proxy động để phân tải cho
Server là sử dụng Agent đóng gói và chuyển các tính toán từ Server về Proxy.
Nghiên cứu mô hình phân tải Server sử dụng Proxy động
21
3.2.2. Giải pháp
Dựa trên ý tưởng đã đưa ra, chúng ta sẽ đưa ra giải pháp cho Server và Proxy để có
thể đáp ứng yêu cầu của bài toán.
3.2.2.1. Giải pháp cho Server
Giải pháp cho việc đóng gói và dịch chuyển chuyển các tính toán là sử dụng Agent.
Các tính toán sẽ được đóng gói thành các Agent, mỗi Agent sẽ phụ trách một công việc
tính toán nhất định. Sử dụng Agent để đóng gói và dịch chuyển các tính toán giữa các
Server vì theo các chuẩn về Agent đã được công bố và chấp nhận rộng rãi thì các Agent
có thể đóng gói mã nguồn thực thi của nó, các dữ liệu phục vụ cho nó và cả trạng thái
hoạt động, tất cả đều được có thể được truyền đi nguyên vẹn sang một Server khác và có
thể thực thi tại Server đó mà không cần phải sửa đổi hay can thiệp vào Agent.
Các yêu cầu khi được chuyển đến sẽ được phân loại thành các yêu cầu chuyển
Agent và các yêu cầu khác. Để có thể thực hiện được việc phân loại yêu cầu được gửi
đến, lọc ra các yêu cầu thông thường và các yêu cầu về việc đưa tính toán về Proxy,
chúng ta sẽ đưa ra một mẫu yêu cầu được sử dụng chung cho tất cả các yêu cầu được gửi
đến cho Server.
Với các tính toán yêu cầu chuyển Agent, Server sẽ tìm Agent tương ứng trong các
Agent nó đang chứa. Nếu Agent được tìm ra, Server sẽ tạo ra bản sao của Agent rồi gửi
bản sao này cho phía yêu cầu. Nếu Agent không được tìm ra, hay không có Agent tương
ứng với yêu cầu đưa ra, Server sẽ gửi thông báo đến cho phía yêu cầu rằng không có
Agent tương ứng. Với các yêu cầu khác, Server sẽ thực hiện tính toán trực tiếp rồi gửi trả
kết quả cho phía yêu cầu. Việc tính toán này hoàn toàn có thể bao gồm cả việc gọi Agent
ra để tính toán và lấy kết quả do Agent trả về.
3.2.2.2. Giải pháp cho Proxy
Proxy nhận yêu cầu từ Client, phân tích yêu cầu dựa trên khuôn dạng chuẩn đã được
quy định trước để phân loại các yêu cầu có sử dụng Agent và các yêu cầu không sử dụng
Agent. Khi có nhiều yêu cầu về sử dụng cùng một Agent, Proxy sẽ gửi yêu cầu đến
Server để tải Agent tính toán về, sau đó mọi tính toán của phần này sẽ được thực hiện
ngay trên Proxy.
Nghiên cứu mô hình phân tải Server sử dụng Proxy động
22
Các yêu cầu về Agent sau khi được phân loại sẽ được xử lý theo cách thức riêng.
Đầu tiên Proxy sẽ kiểm tra xem có Agent nào nó đang lưu trữ phù hợp yêu cầu hay
không. Nếu có, nó sẽ cho Agent đấy thực thi và lấy kết quả trả về, nếu không có, nó sẽ
gửi yêu cầu về Agent tương ứng tới Server. Sau khi nhận được Agent tương ứng từ
Server, nó sẽ cho thực thi Agent đó và lấy kết quả trả về.
Các yêu cầu không liên quan đến Agent cũng sẽ được xử lý riêng. Phần này cho
phép Proxy trong mô hình đề ra có thể kết hợp với các Proxy truyền thống khác như dùng
để chặn các trang web hay sử dụng cache. Nếu không có sự kết hợp với ứng dụng nào,
các yêu không sử dụng Agent sẽ được gửi thẳng đi cho Server và lấy kết quả trả về.
Kết quả trả về từ các tính toán trên Agent sẽ được kết hợp với kết quả được trả về từ
Server trước khi được chuyển về cho Client.
3.2.3. Mô hình
Dựa trên các giải pháp đã đưa ra, chúng ta sẽ xây dựng một mô hình có thể giải
quyết được bài toán đặt ra. Mô hình này không những có thể đáp ứng yêu cầu của bài toán
mà còn phải có khả năng ứng dụng được vào thực tế.
3.2.3.1. Mô hình chung
Dựa trên các giải pháp đã đưa ra ở phần trên, mô hình tổng thể sẽ như hình 3.2.
Theo như hình 3.2, Client sẽ gửi yêu cầu đến cho Proxy và sẽ nhận kết quả trả về từ
Proxy. Phía Proxy, sau khi phân loại yêu cầu được gửi đến từ Client sẽ thực hiện xử lý
yêu cầu và gửi yêu cầu đến cho Server. Proxy có thể gửi đi một trong hai loại yêu cầu là
yêu cầu Agent hoặc yêu cầu thông thường khác. Nếu yêu cầu thông thường được gửi đến
Server thì Server sẽ tính toán và chỉ trả kết quả về cho Proxy. Nếu yêu cầu là yêu cầu
Agent, Server sẽ tìm kiếm Agent tương ứng và gửi Agent về cho Proxy. Trong Proxy và
Server đều có một vùng chứa Agent gọi là Agent Container. Các Agent được chứa trong
vùng này đều có thể thực thi và trả ra kết quả. Việc chuyển một Agent từ Server sang
Proxy sẽ được thực hiện hoàn toàn trên vùng chứa này.
Nghiên cứu mô hình phân tải Server sử dụng Proxy động
23
Hình 3.2: Mô hình hệ thống
3.2.3.2. Mô hình của Server
Hình 3.3 là cấu trúc các thành phần bên trong Server chính và chức năng của mỗi
thành phần:
- Giao tiếp với Client/Proxy: Phần này làm nhiệm vụ lắng nghe và kết nối tới
Client hoặc Proxy. Khi có một yêu cầu được gửi đến, phần này sẽ thực hiện việc
gửi yêu cầu xuống phần xử lý và duy trì kết nối để đợi kết quả từ phần xử lý. Khi
kết quả được phần xử lý gửi đến, nó sẽ chuyển tiếp kết quả này sang cho phía yêu
cầu và đóng kết nối.
- Xử lý yêu cầu: Phần này sẽ thực hiện việc xử lý các yêu cầu được đưa xuống từ
phần giao tiếp và gửi trả kết quả cho phần giao tiếp. Phần này gồm có 3 thành phần
nhỏ:
o Phân loại yêu cầu: Dựa trên các mẫu yêu cầu được gửi đến, thành phần này
sẽ phân loại các yêu cầu thành hai loại là yêu cầu Agent và yêu các khác.
Các yêu cầu Agent sẽ được gửi xuống cho thành phần Xử lý yêu cầu Agent
thực hiện, các yêu cầu khác được gửi xuống cho Xử lý các yêu cầu khác
thực hiện.
Nghiên cứu mô hình phân tải Server sử dụng Proxy động
24
Hình 3.3: Cấu trúc Server
o Xử lý yêu cầu Agent: Khi một yêu cầu về Agent được gửi đến, phần này sẽ
lấy thông tin về Agent đó tìm Agent tương ứng trong Agent Container. Nếu
trong Agent Container không có Agent này thì phần này sẽ gửi trả về cho
phần giao tiếp thông báo là không có Agent tương ứng. Nếu Agent tương
ứng tồn tại, phần này sẽ yêu cầu Agent Container tạo ra bảo sao của Agent
và gửi bản sao này sang cho Agent Container của Proxy.
o Xử lý yêu cầu khác: Các yêu cầu không phải gửi Agent sẽ được xử lý trong
phần này. Các tính toán theo yêu cầu sẽ được thực thi và kết quả sẽ được trả
về cho phần giao tiếp. Việc tính toán này hoàn toàn có thể bao gồm việc gọi
đến các Agent và lấy kết quả trả về từ Agent.
- Agent Container: Đây là vùng chứa các Agent của Server. Các Agent được chứa
trong vùng này đều có thể được thực thi và trả ra kết quả. Việc tạo ra bản sao và
chuyển các Agent đến nơi khác cũng được thi ngay tại vùng này.
Để giúp cho việc phân loại các yêu cầu gửi đến một cách nhanh chóng và tiện lợi,
chúng ta sẽ đưa ra mẫu yêu cầu mà Proxy sẽ gửi đến cho Server như trong hình 3.4. Mẫu
này sẽ gồm hai phần chính là phần Header và phần Content. Trong phần Header sẽ chứa
Nghiên cứu mô hình phân tải Server sử dụng Proxy động
25
thông tin của nơi gửi yêu cầu đến, và loại yêu cầu. Có hai loại yêu cầu là yêu cầu Agent
(tức là yêu cầu gửi tính toán) và yêu cầu thông thường ( tức là yêu cầu Server thực thi một
số tính toán rồi gửi trả kết quả). Server dựa vào Header để xác định loại yêu cầu và nơi
gửi thông tin, sau đó dựa theo loại yêu cầu để lấy thông tin cần thiết trong phần Content
.’
Hình 3.4: Mẫu yêu cầu gửi cho Server
3.2.3.3. Mô hình của Proxy
Hình 3.5 là các thành phần bên trong Proxy Server và chức năng tương ứng với mỗi
thành phần đó:
- Giao tiếp với Client: Phần này cung cấp một giao diện để lắng nghe yêu cầu từ
phía Client và gửi trả kết quả về cho Client. Khi một yêu cầu từ Client được gửi
đến, phần giao tiếp này sẽ gửi yêu cầu đó xuống phần xử lý và duy trì kết nối với
Client trong khi chờ kết quả được trả ra. Khi kết quả được trả ra từ phần xử lý, giao
tiếp này sẽ đưa kết quả đó cho phía Client và kết thúc kết nối.
- Giao
Các file đính kèm theo tài liệu này:
- Nguyen Minh Hoang_K50CNPM_Khoa luan tot nghiep dai hoc.pdf