CloudSim: là lớp chính chịu trách nhiệm quản lý các hàng đợi sự kiện và điều khiển từng bước tuần tự thực thi của các sự kiện mô phỏng. Mỗi sự kiện được tạo ra bởi thực thể CloudSim ở thời gian chạy được lưu trữ trong hàng đợi sự kiện tương lai. Các sự kiện này được sắp xếp bởi tham số thời gian của chúng và được chèn vào hàng đợi. Kế tiếp, các sự kiện này được lập lịch trên mỗi bước mô phỏng và được lấy ra từ hàng đợi sự kiện tương lai và chuyển tới hàng đợi sự kiện trì hoãn. Tiếp theo sau, một phương thức xử lý sự kiện được gọi cho mỗi thực thể chọn các sự kiện từ hàng đợi sự kiện trì hoãn và thực hiện hành động thích hợp. Sự tổ chức như vậy cho phép quản lý linh hoạt mô phỏng và cung cấp khả năng mạnh mẽ sau đây: (1) Dừng hay giữ hoạt động của thực thể. (2) Chuyển ngữ cảnh của thực thể giữa các trạng thái khác nhau, chẳng hạn từ đợi tới hoạt động. Tạm dừng hoặc khôi phục lại quá trình mô phỏng. (3) Khởi tạo thực thể mới ở thời gian chạy. (4) Hủy bỏ hoặc khởi động lại mô phỏng ở thời gian chạy
DeferredQueue: thực hiện hàng đợi sự kiện trì hoãn được sử dụng bởi CloudSim.
FutureQueue: thực hiện hàng đợi sự kiện tương lai được truy xuất bởi CloudSim.
Hình PL2: Sơđồ lớp Framework lõi CloudSim:
(a) lớp chính, (b) lớp Predicates [16] CloudInformationService: một dịch vụ
thông tin đám mây, CIS, là một thực thể đăng ký nguồn tài nguyên có thể cung cấp, lập chỉ mục, và khảnăng phát hiện tài nguyên. CIS hỗ trợhai phương thức cơ bản đầu tiên là (i) publish(), cho phép thực thể đăng ký chính chúng với CIS và (ii) search(), cho phép các thực thể như CloudCoordinator và Brokers trong việc phát hiện tình trạng và địa chỉ liên lạc đầu cuối của các thực thể khác. Thực thể này cũng thông báo tới các thực thể khác về sự kết thúc mô phỏng.
SimEntity: là lớp trừu tượng đại diện cho một thực thể mô phỏng có thể gởi thông điệp tới các thực thể khác và xử lý các thông điệp nhận được cũng như xa thải và xử lý sự kiện. Tất cả thực thể phải mở rộng lớp này và ghi đè ba phương thức lõi của nó: startEntity(), processEvent() và shutdownEntity(). Chúngđịnh nghĩa hành động khởi tạo thực thể, xử lý các sự kiện và hủy thực thể tương ứng. Lớp SimEntity cung cấp khả năng lập lịch sự kiện mới và gởi các thông điệp tới các sự kiện khác, trong đó độ trễ mạng được tính theo mô hình BRITE. Sau khi tạo ra, thực thể tự động đăng ký với CIS.
Predicate: được sử dụng để lựa chọn các sự kiện từ hoàn đợi trì hoãn. Đây
là lớp trừu tượng và phải được mở rộng để khởi tạo một Predicate mới.
PredicateAny: đại diện cho một Predicate phù hợp với bất kỳ sự kiện trong hàng đợi sự kiện trì hoãn. Có một trường hợp ví dụ cụ thể của Predicate này trong lớp CloudSim, được gọi là CloudSim.SIM_ANY, và do đó không có thể hiện mới cần được khởi tạo.
kiện được loại bỏ bởi các thực thể cụ thể.
PredicateNone: lớp này đại diện cho một Predicate không phù hợp với bất
kỳ sự kiện nào trong hàng đợi sự kiện trì hoãn. Có một trường hợp thể hiện cụ thể của Predicate này trong lớp CloudSim, được gọi là CloudSim.SIM_NONE, do đó người dùng không cần phải khởi tạo các thể hiện mới của lớp này.
PredicateNotFrom: lớp này đại diện cho một Predicate lựa chọn các sự kiện đã không được gởi bởi các thực thể cụ thể.
PredicateNotType: lớp này đại diện cho một Predicate lựa chọn các
sự kiện không phù hợp với các thẻ cụ thể.
PredicateType: đại diện cho một Predicate lựa chọn các sự kiện với các thẻ
cụ thể. CloudSimTags: lớp này chứa những thẻ lệnh hoặc sự kiện tĩnh khác nhau, nó xác định loại hành động mà cần phải được thực hiện bởi CloudSim khi chúng nhận hoặc gởi sự kiện.
SimEvent: thực thể này đại diện một sự kiện mô phỏng được truyền qua giữa hai hoặc nhiều thực thể. SimEvent lưu trữ các thông tin sau về một sự kiện: loại, thời gian khởi tạo, thời gian mà sự kiện sẽ xảy ra, thời gian hoàn thành, thời gian mà sự kiện sẽ được chuyển giao tới thực thể đích của nó, ID của thực thể nguồn và thực thể đích, thẻ của sự kiện và dữ liệu phải được truyền qua tới thực thể đích. CloudSimShutdown: đây là một thực thể đợi kết thúc tất cả người dùng đầu cuối và thực thể Broker, và sauđóbáo hiệu kết thúc mô phỏng tới CIS.
2.5. Giao tiếp giữa các thực thể
Bắt đầu mô phỏng, mỗi thực thể Datacenter đăng ký với CIS. CIS sau đó cung cấp các chức năng loại đăng ký thông tin, như là dàn xếp dịch vụđể ánh xạ người dùng hoặc Datacenterbroker yêu cầu nhà cung cấp đám mây phù hợp. Tiếp theo, DataCenterBroker đại diện cho người dùng tham khảo CIS để nhận được danh sáchcácnhà cung cấp đám mây có thể cung cấp dịch vụcơ sở hạ tầng phù hợp với QoS của ứng dụng, phần cứng và yêu cầu phần mềm. Trong trường hợp ngang hàng nhau DataCenterBroker triển khai ứng dụng với đám mây đề nghị CIS. Luồng giao tiếp được mô tả từ trước đến nay liên quan tới luồng cơ bản trong một môi trường mô phỏng. Một vài thay đổi trong luồng này có thể tùy thuộc vào chính sách. Ví dụ,
thông điệp từ DatacenterBroker tới DataCenter có thể yêu cầu một sự xác nhận từ các bộ phận khác của DataCenter, về việc thực thi một hành động, hoặc về số lượng tối đa các máy ảo mà một người dùng có thể tạo ra. Hình PL3 dưới đây mô tả luồng giao tiếp giữa các thực thể lõi CloudSim.
Giảng Viên Hướng Dẫn
TS.NGUYỄN HỒNG SƠN
Trưởng Khoa Công Nghệ Thông Tin Học Viện Bưu Chính Viễn Thông Cơ Sở
TP.HCM
Học Viên Thực Hiện