created | modified |
---|---|
05/11/2023 |
05/11/2023 |
- MSSV: 20120356
- Họ và tên: Lê Minh Quân
- Ngôn ngữ lập trình: Java
- Máy thực hiện demo: Kali Linux 12 core, 16GB RAM
Lớp Process
đại diện cho một process và bao gồm các thành phần chính:
Server
: với mỗi remote port thì nó sẽ tạo ra một thread để lắng nghe các message. Điều này giúp cho chương trình không bị block khi lắng nghe các message từ nhiều process.ClientHandler
: chịu trách nhiệm deliver và buffer message cũng như là cập nhật đồng hồ.Client
: xây dựng và gửi message.
Khi khởi chạy hàm main
ở trong Process
, nó sẽ thực hiện các bước sau:
- Đọc tham số dòng lệnh được truyền vào.
- Tải cấu hình từ file (
configs.yaml
) thông qua lớpConfiguration
. - Khởi tạo một instance của
Server
để lắng nghe message. - Chạy các kịch bản tương ứng với tham số dòng lệnh. Có 2 kịch bản:
- Demo: chạy 10 process và gửi 150 message.
- Example: giả lập ví dụ về SES.
Chương trình còn có thêm 1 process có port là 0 nhằm quản lý các process khác. Nhiệm vụ của process này là:
- Gửi message thông báo cho phép các process kết nối lẫn nhau.
- Gửi message thông báo cho phép các process gửi message cho nhau.
- Bằng cách này, chúng ta có thể đảm bảo rằng tất cả n process đều sẵn sàng và đều kết nối đến n - 1 process còn lại trước khi gửi tin.