- 2Vấn đề phân chia công việc
2) Vấn đề Faul-tolerance đối với Server:
Server cũng có khả năng bị fail như Agent. Cũng có thể sử dụng các phương án như đã nêu trên để giải quyết vấn đề này. Ngoài ra có một phương án khác đó là Restart Server. Cơ chế “ReStart Server” :
Hoạt động của cơ chế này hoàn toàn đơn giản, đó là khởi tạo lại từ đầu một Server mới hoàn toàn.
Đơn giản là một ưu điểm quan trọng nhất đối với cơ chế này, nhưng ngược lại cơ chế này lại là một cơ chế khắc phục lỗi không hiệu quả do không lưu lại được bất cứ dữ liệu gì của Server trước đó.
Có thể nói ngắn gọn lại là khi phát hiện có một Server trong hệ thống bị Fail, Agent tự động Start lại một Server mới với các Database trên JVM đó và dùng nó giải quyết yêu cầu của Client lại từ đầu.
Với phương án này thì nó dựa trên luận cứ là nếu làm không được thì làm lại từ đầu. Do đó tính đơn giản trong giải thuật rất cao do không cần phải khắc phục một điều gì từ hệ thống trước đó. Do đó có thể nói ta chỉ khắc phục tình trạng Fail của một chương trình với phương án này.
Cơ chế này đơn giản, dễ sử dụng, dễ hiện thực. Đặt biệt là với cơ chế này hoàn toàn không mất thời gian trung gian trong việc chuẩn bị cho việc Fail của Agent. Tuy nhiên, độ mất mát thông tin của hệ thống là khá cao.
Restart Server làphương án được lựa chọn cho hệ thống đang xây dựng. Để lựa chọn một phương án cho chương trình Server thì ta phải xem xét tính chất của chương trình Server.. Vị trí và vai trò của Server trong hệ thống có thể được trình bày như sau :
RMIR
egistr
y
Server Server Java Virtual Machine
Service A Service B Service C Ne two rk Service A Service B Service C
Hình 27. Vai trò của Server Object trong hệ thống.
Về thực chất thì Server cũng là một dịch vụ đặt biệt, nó sẽ nhận vào bytecode, lưu bytecode đó xuống phương tiện lưu trữ, tạo một Instance từ định nghĩa class là bytecode đó, và coi nó là một dịch vụ, nghĩa là đăng ký Instance đó với một RMIRegistry để cho các JVM khác có thể thấy được và sử dụng được theo cơ chế RMI.
Do đó, có thể nói là chương trình Server không có trạng thái quan trọng nào cần lưu trữ, bởi vì nếu Server bị Fail thì thông tin bị mất chỉ là tên của các Service tại Local Machine mà thôi, mà tên của các Service này thì đã được lưu trong File Database của Server rồi, do đó khi Start lại chỉ cần làm công việc khởi tạo lại lần nữa là đã có thể hoạt động như cũ. Mặt khác , đây là hệ thống nhiều Server nên nếu dùng phương án khác như Back up thì rất hao tốn tài nguyên cho hệ thống. Tóm lại việc sử dụng phương án Restart lại Server vừa đáp ứng được cả hai mục đích : có thể giải quyết vấn đề server fail tương đối tốt và lại khá đơn giản thích hợp với việc phát triển hệ thống trong một khoảng thời gian không nhiều.