Chương 1 TÁC TỬ DI ĐỘNG Công nghệ tác tử đã có những bước phát triển mạnh mẽ những năm gần đây. Riêng tác tử di động trong nhiều trường hợp đã chứng tỏ là giải pháp cực kỳ hữu hiệu cho các vấn đề về xử lý phân tán. Nói nôm na, đó là những chương trình có thể tự di chuyển từ nút mạng này sang nút mạng khác trong quá trình thực hiện. Chúng có thể giúp thiết kế và phát triển các hệ thống thông tin phân tán nhanh chóng và dễ dàng hơn là dựa trên các phương thức giao tiếp khác tồn tại từ trước đến nay.1 Các mô hình thực hiện phân tán truyền thống 1.1 Truyền thông báo Truyền thông báo là mô hình giao tiếp đầu tiên được sử dụng trong xử lý phân tán.
Nguyên lý hoạt động của mô hình này khá đơn giản. Theo như tên gọi, các tiến trình tham gia xử lý phân tán giao tiếp với nhau thông qua thông báo. Thông báo có thể chứa thông tin điều khiển hay dữ liệu hay cả hai, nhưng không chứa mã lệnh thực hiện được. Các thông báo được mỗi tiến trình phát và nhận trên một cổng riêng.
Việc phân bố cổng và truyền thông báo từ máy tính này đến máy tính khác được thực hiện bởi hệ thống. Nhưng tất cả những vấn đề khác liên quan như phát và nhận thông báo, khắc phục lỗi truyền thông, đảm bảo đồng bộ hóa giữa các tiến trình là do chương trình đảm nhận. Nhiệm vụ thiết kế phát triển chương trình như vậy sẽ rất nặng nề nhưng đổi lại là tính linh động và khả năng can thiệp sâu vào hệ thống nhiều khi rất cần thiết. Các giải thuật điều khiển phân tán mức thấp hiện nay [37][18] chủ yếu vẫn sử dụng mô hình truyền thông báo.2 Gọi thủ tục từ xa Gọi thủ tục từ xa [6] là một bước phát triển mở rộng của mô hình truyền thông báo.
Cụ thể là mô hình này lấy truyền thông báo làm cách thức giao tiếp nhưng đảm nhận một phần công việc xử lý phân tán để giảm nhẹ trách nhiệm thiết kế và phát triển chương trình. Một tiến trình trên máy tính này có thể yêu cầu một tiến trình khác trên máy tính khác thực hiện một thủ tục nào đó mà không cần phải quan tâm đến các chi tiết về kết nối, truyền thông và đồng bộ hóa tiến trình. Mô hình gọi thủ tục từ xa sẽ giải quyết tất cả những vấn đề này, đảm bảo việc thực hiện và gửi trả về kết quả là trong suốt đối với tiến trình đưa ra lời gọi. Đó là cơ sở để xây dựng các ứng dụng phân tán mức cao dựa trên kiến trúc client/server rất phổ biến những năm gần đây.
9 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.3 Gọi phương thức từ xa Gọi phương thức từ xa là một cải biến của phương thức gọi thủ tục từ xa cho phù hợp với xu thế sử dụng phương pháp lập trình hướng đối tượng trong công nghệ phần mềm. Phương pháp hướng đối tượng tổ chức hệ thống thông tin thành tập hợp các đối tượng tương tác với nhau thông qua các phương thức. Điểm khác biệt của phương thức so với thủ tục thông thường là mỗi phương thức gắn với một đối tượng, có một số quyền nhất định như truy nhập vào cấu trúc bên trong mà các phương thức khác nếu không thuộc về đối tượng đó thì không có. Theo mô hình gọi phương thức từ xa, để gọi thực hiện một phương thức từ xa chỉ cần tham chiếu đến tên đối tượng chủ thể của phương thức chứ không cần biết nó nằm ở đâu trên mạng máy tính.
Mô hình gọi phương thức từ xa tạo điều kiện phát triển dễ dàng các ứng dụng phân tán hoàn toàn theo phương pháp hướng đối tượng, tận dụng tối đa những ưu điểm của phương pháp này trong thiết kế và lập trình. Thực tế ta thường bắt gặp mô hình gọi phương thức từ xa trong các ứng dụng dựa trên kiến trúc CORBA 1 [38].4 Đánh giá từ xa Các ngôn ngữ phiên dịch như Tcl, Perl, SQL,… hoạt động theo chế độ câu lệnh. Mỗi câu lệnh có thể coi là một biểu thức hiểu theo nghĩa rộng, tức là để đánh giá biểu thức hệ thống không chỉ tính toán mà còn có thể thực hiện những thao tác cần thiết khác trước khi đưa ra kết quả cuối cùng. Kết quả trả về có thể không quan trọng mà những thao tác cần thực hiện mới là mục đích chính của yêu cầu đánh giá câu lệnh.
Đánh giá từ xa mô phỏng cơ chế đánh giá câu lệnh trong môi trường phân tán. Theo đó, một tiến trình nguồn chạy trên máy tính này có thể gửi một biểu thức tùy ý đến máy tính khác để nhờ một tiến trình đích chạy trên đó đánh giá hộ. Lưu ý là các biểu thức cần đánh giá do tiến trình nguồn đưa sang chứ không phải là những phương thức hay thủ tục cố định do tiến trình đích quản lý. Việc gộp nhiều thao tác cần thực hiện trên máy đích vào một biểu thức giúp giảm tải trọng truyền thông lên mạng do tránh không phải trao đổi trung gian qua lại giữa tiến trình nguồn và tiến trình đích trong quá trình đánh giá biểu thức.
Dĩ nhiên chừng nào tiến trình đích chưa gửi về kết quả cuối cùng thì tiến trình nguồn còn phải chờ đợi, không thể thực hiện tiếp được câu lệnh tiếp theo giống như trong hai mô hình gọi từ xa nêu trên. Minh họa rõ nhất của mô hình đánh giá từ xa là các ứng dụng cơ sở dữ liệu phân tán [39]. Trong các ứng dụng này, chương trình client truy cập thông tin thông qua các câu lệnh SQL gửi đến server cơ 1 Common Object Request Broker Architecture 10 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com sở dữ liệu. Các câu lệnh SQL được thực hiện trên máy server ở xa chứ không phải trên máy client khởi phát ra chúng.5 Mã lệnh theo yêu cầu Mô hình mã lệnh theo yêu cầu có cơ chế hoạt động giống với đánh giá từ xa ở chỗ mã lệnh được máy nguồn gửi qua mạng đến thực hiện trên máy đích.
Thế nhưng mã lệnh ở đây là những chương trình hoàn chỉnh chứ không đơn thuần là những câu lệnh đơn lẻ dạng biểu thức. Máy đích là nơi đưa ra yêu cầu tiếp nhận và thực hiện mã lệnh. Vì thế mô hình có tên là mã lệnh theo yêu cầu. Tiến trình nguồn không phải chờ đợi kết quả tiến trình đích gửi về sau khi thực hiện chương trình, không cần duy trì kết nối, nhờ đó giảm bớt lưu lượng truyền thông trên mạng.
Lưu ý là chỉ mã lệnh dạng tĩnh chứ không phải chương trình dạng động đang thực hiện được chuyển từ máy nguồn tới máy đích. Ví dụ dễ thấy nhất của mô hình mã lệnh theo yêu cầu là cơ chế applet Java [24] trong giao thức http [12]. Ở đây, mã giả lập (bytecode) được Web server trên máy nguồn gửi đến để trình duyệt Web trên máy đích thực hiện theo yêu cầu của trình duyệt Web.6 Di chuyển hoạt động Nguyên lý của di chuyển hoạt động là cho phép đưa tiến trình đang hoạt động trên một máy tính này sang một máy tính khác để tiếp tục thực hiện ở đó. Tiến trình ở đây hiểu theo nghĩa rộng, có thể là một chương trình đang chạy hay cũng có thể là một đối tượng đã được kích hoạt và đang hoạt động.
Đây là mô hình xử lý phân tán gần nhất với tác tử di động. Mô hình di chuyển hoạt động giúp giải quyết 3 vấn đề cơ bản sau đây trong xây dựng các hệ thống phân tán: o Cân đối khối lượng công việc: Di chuyển hoạt động từ một máy tính đang quá tải sang một máy tính khác nhàn rỗi hơn sẽ góp phần sử dụng hợp lý và tối ưu tất cả các tài nguyên của hệ thống. o Khắc phục sự cố: Di chuyển công việc từ một máy tính gặp sự cố sang một máy tính khác vẫn chạy tốt sẽ đảm bảo hoạt động thông suốt của toàn hệ thống. o Chia sẻ thông tin: Nhiều khi di chuyển chương trình đến nơi chứa dữ liệu cần xử lý sẽ hiệu quả hơn là truyền dữ liệu từ xa về nơi chứa chương trình đang thực hiện.
Di chuyển hoạt động cung cấp một cơ chế thực hiện phân tán đồng bộ rất hữu hiệu cho phát triển ứng dụng nhưng xây dựng được cơ chế đó là công việc rất phức tạp. Đó 11 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com là vì khi di chuyển các tiến trình, hệ thống phải đảm bảo chúng có thể tiếp tục hoạt động được trên những môi trường phần cứng và phần mềm khác so với môi trường ban đầu. Bên cạnh đó vấn đề không chỉ là gửi mã lệnh từ máy tính này sang máy tính khác mà phải bảo toàn và đưa theo cả trạng thái thực hiện lúc bắt đầu di chuyển. Mô hình di chuyển hoạt động được sử dụng chủ yếu ở mức hệ điều hành.2 Từ tác tử đến tác tử di động Tác tử di động có cái gì đó giống với mã lệnh di động và tác tử thông minh.
Tuy nhiên, các khái niệm này không hoàn toàn đồng nhất với nhau. Mã lệnh di động như đã biết bản chất là một cơ chế thực hiện phân tán. Còn thuật ngữ tác tử di động lại dùng để chỉ các tác tử hoạt động theo chính cơ chế này. Điểm khác biệt cơ bản nằm ở nội dung tác tử mà ta sẽ khảo sát kỹ hơn dưới đây.
Trong khi đó, tác tử di động và tác tử thông minh khác nhau vì có thể coi là đối tượng nghiên cứu của những chuyên ngành khác nhau. Tác tử di động ứng dụng trong mạng và truyền thông máy tính. Còn tác tử thông minh là mục tiêu hướng tới của trí tuệ nhân tạo và một số lĩnh vực liên quan. Một tác tử thông minh có thể không di động.
Căn cứ vào cơ chế hoạt động có thể dễ dàng xác định một tác tử thông minh có phải là tác tử di động hay không. Nhưng một tác tử di động có thể coi là thông minh hay không thì lại không dễ dàng xác định được như vậy. Điều đó tùy theo quan niệm thông minh là gì. Mà khái niệm thông minh thì không thể định nghĩa một cách chặt chẽ và hình thức để có thể đối chiếu rồi phán quyết có thông minh hay không.
Tất cả tùy thuộc vào bối cảnh và quan điểm của người xem xét. Tính di động không đóng vai trò gì trong tiêu chuẩn thông minh. Nhưng ngược lại, các tác tử thông minh có thể góp phần giải quyết nhiều vấn đề cơ bản trong điều khiển mạng mức thấp và thúc đẩy sự phát triển của các ứng dụng phân tán mức cao.