Hệ thống bao gồm ba thành phần chính: giao diện ngƣời cung cấp sự kiện, giao diện ngƣời yêu cầu sự kiện và mạng ngang hàng có cấu trúc.
Mạng ngang hàng có cấu trúc đƣợc sử dụng trong hệ thống này dựa trên mô hình mạng Chord. Mạng này đóng vai trò nền tảng hoạt động của toàn bộ hệ thống, các thông tin trong hệ thống sẽ đƣợc lƣu trữ và tìm kiếm tại đây. Vì vậy, nó phải cung cấp đƣợc đầy đủ các giao thức cho hai thành phần giao diện còn lại.
Nhiệm vụ của hai thành phần giao diện chỉ là thu thập thông tin của ngƣời sử dụng, mã hóa theo chuẩn của hệ thống, sau đó sử dụng các giao thức tìm kiếm và lƣu trữ sẵn có trong mạng Chord để hoạt động. Tại giao diện cung cấp sự kiện, ngƣời cung cấp có thể lựa chọn các thuộc tính của sự kiện cần cung cấp, sau đó nhập thông tin về sự kiện này và gửi lên mạng. Mỗi thuộc tính trong sự kiện sẽ đƣợc hệ thống băm thành một khóa riêng và lƣu trữ tại những nút khác nhau trên mạng. Việc lƣu trữ này sẽ giúp quá trình tìm kiếm sự kiện dễ dàng hơn. Ngƣời yêu cầu sự kiện có thể lựa chọn một thuộc tính chung của sự kiện, tất cả các sự kiện đƣợc cung cấp mà có thuộc tính này sẽ đều đƣợc trả lại cho ngƣời yêu cầu.
Cung cấp sự kiện Type=Bóng đá Giải đấu=Seria A Trận đấu= ACMilan-InterMilan Băm thành 1 khóa
Yêu cầu sự kiện
Type=Bóng đá
Giải đấu=Seria A H(Giải đấu=Seria A)
Băm thành 3 khóa
H1(Type=Bóng đá)
H2(Giải đấu=Seria A)
H3(Trận đấu= ACMilan-InterMilan)
3 khóa này sẽ gửi đến 3 node của mạng Chord
Type=Bóng đá Giải đấu=Seria A Trận đấu= ACMilan- InterMilan C ác k hó a sẽ đ ư ợ c lư u và o 1 b ản g Type=Bóng đá Trận đấu= Juventus-Lazio Type=Bóng đá Type=Bóng đá Giải đấu=Seria A
Thỏa mãn Yêu cầu sự kiện
Type=Bóng đá
Giải đấu=Seria A
Không thỏa mãn Yêu cầu sự kiện
Type=Bóng đá
Giải đấu=Seria A 3
2
1 Giải đấu
Khóa Yêu cầu sự kiện
Type=Bóng đá
Giải đấu=Seria A
Nội dung sự kiện Địa chỉ node yêu cầu sự kiện
Nhƣ hình trên, sự kiện đƣợc cung cấp gồm 3 cặp thuộc tính giá trị (Type = Bóng đá), (Giải đấu = Seria A) và (Trận đấu = ACMilan-InterMilan). Mỗi cặp thuộc tính giá trị này sẽ đƣợc băm thành một khóa khác nhau. Mỗi khóa kèm với tên và thông tin sự kiện sẽ đƣợc lƣu trữ tại những nút khác nhau trên mạng (tùy vào bảng DTH trong mạng Chord). Nhƣ vậy, những thuộc tính ở mức cao trên cây thuộc tính có thể có rất nhiều những sự kiện đƣợc cung cấp kèm với nó.
Khi ngƣời yêu cầu cần một sự kiện nào đó. Họ sẽ lựa chọn theo những thuộc tính mà mình cần. Ví dụ ở hình trên, ngƣời yêu cầu sự kiện lựa chọn 2 cặp thuộc tính giá trị là (Type = Bóng đá) và (Giải đấu = Seria A). Trong 2 cặp thuộc tính giá trị này, chỉ có cặp thuộc tính (Giải đấu = Seria A) là đƣợc băm thành khóa. Do đây là thuộc tính nằm bên dƣới trong cây thuộc tính, vì vậy tất cả những sự kiện có thuộc tính (Giải đấu = Seria A) đều sẽ có thuộc tính (Type = Bóng đá), nên chỉ cần băm thuộc tính này là đủ.
Để đáp ứng đƣợc các yêu cầu sự kiện một cách đầy đủ nhất. Hệ thống sẽ tiến hành lƣu trữ lại cả thông tin sự kiện và yêu cầu sự kiện trên các nút trong mạng Chord. Hai loại thông báo này đƣợc lƣu trữ theo những chuẩn cố định để dễ dàng hơn trong việc tìm kiếm.
- Thông tin sự kiện đƣợc lƣu trữ theo cấu trúc: (Khóa, các thuộc tính của sự kiện,
chi tiết thông tin sự kiện).
- Yêu cầu sự kiện đƣợc lƣu trữ theo cấu trúc: (Khóa, thuộc tính của sự kiện, địa
chỉ IP, cổng). Trong đó địa chỉ IP và cổng là của nút yêu cầu sự kiện, khi có thông tin sự kiện thỏa mãn, thông tin này sẽ đƣợc gửi về nút tƣơng ứng dựa trên các thông số này.
Quá trình cung cấp sự kiện và tìm kiếm sự kiện đều diễn ra theo cả hai chiều, bao gồm cả việc lƣu trữ và tìm kiếm. Khi ngƣời sử dụng yêu cầu một sự kiện nào đó, yêu cầu này sẽ đƣợc lƣu trữ lại, và mạng Chord cũng tiến hành tìm kiếm các sự kiện đã có thỏa mãn yêu cầu để trả lại cho ngƣời sử dụng. Ngƣợc lại, khi có một sự kiện đƣợc cung cấp, ngoài việc lƣu trữ lại các sự kiện này, hệ thống cũng sẽ tìm kiếm các yêu cầu đã đƣợc lƣu trữ sẵn. Nếu tìm thấy yêu cầu thỏa mãn, sự kiện sẽ đƣợc gửi ngay đến ngƣời sử dụng dựa trên các thông số lƣu trữ trên hệ thống. Phƣơng pháp này sẽ làm giảm tải truyền trên mạng, giúp hệ thống hoạt động ổn định hơn.
3.5. Kết luận
Chƣơng này trình bày về mục đích, yêu cầu, phƣơng pháp xây dựng và cấu trúc của dịch vụ thông báo sự kiện dựa trên mạng ngang hàng có cấu trúc đã đề xuất.
Qua chƣơng này ta thấy dịch vụ thông báo sự kiện dựa trên mạng ngang hàng có thể đáp ứng đƣợc các yêu cầu: thời gian phản hồi của dịch vụ nhanh và hệ thống có thể dễ dàng mở rộng. Trong chƣơng tiếp theo chúng ta sẽ thử nghiệm và đánh giá về hiệu quả của hệ thống.
CHƢƠNG 4. THỰC THI VÀ ĐÁNH GIÁ CHƢƠNG TRÌNH 4.1. Triển khai hệ thống ` Peer 2 ` Peer 3 ` Peer 4 ` Peer 6 ` Peer 1 ` Peer 5 Hình 17: Mô hình thử nghiệm
- Thực hiện triển khai hệ thống trên 6 node có cấu hình mạng:
Peer 1: Địa chỉ IP là 169.254.80.1 Peer 2: Địa chỉ IP là 169.254.80.2 Peer 3: Địa chỉ IP là 169.254.80.3 Peer 4: Địa chỉ IP là 169.254.80.4 Peer 5: Địa chỉ IP là 169.254.80.5 Peer 6: Địa chỉ IP là 169.254.80.6
- Tiến hành cung cấp sự kiện lên mạng
Hình 18: Giao diện chức năng cung cấp sự kiện
- Thực hiện yêu cầu sự kiện
- Hệ thống hiển thị thông báo đến node đã yêu cầu sự kiện
Hình 20: Giao diện thông báo sự kiện
- Thử nghiệm tăng số yêu cầu sự kiện đến hệ thống
Tiến hành thử nghiệm với số yêu cầu đến hệ thống lần lƣợt là: 1 yêu cầu, 2
yêu cầu, 4 yêu cầu, 6 yêu cầu
- Chƣơng trình sẽ lƣu lại thời gian tại các thời điểm sau:
Trƣờng hợp 1: Thực hiện yêu cầu sự kiện cho các sự kiện đã được cung cấp trên mạng
- Thời điểm t1.1: thời điểm node đầu tiên bắt đầu gửi yêu cầu sự kiện.
- Thời điểm t1.2: một máy trong Chord nhận đƣợc yêu cầu sự kiện và đồng
thời máy tính này sẽ gửi truy vấn tìm kiếm ngay lúc này.
- Thời điểm t1.3: Thời điểm máy tính trong mạng Chord nhận đƣợc sự kiện
yêu cầu và gửi ngay kết quả cho node yêu cầu sự kiện.
- Thời điểm t1.4: Thời điểm node yêu cầu sự kiện nhận đƣợc thông báo
- Từ các mốc thời gian trên có thể tính đƣợc:
- Thời gian gửi yêu cầu sự kiện=t1.2-t1.1
- Thời gian tìm kiếm sự kiện trên mạng Chord=t1.3-t1.2
- Thời gian gửi thông báo đến node yêu cầu sự kiện=t1.4-t1.3
- Thời điểm t2.2: thời điểm các node phụ trách khóa nhận đƣợc sự kiện cung cấp
- Thời điểm t2.3 : Thời điểm tìm đƣợc yêu cầu tƣơng ứng với sự kiện
- Thời điểm t2.4 : Thời điểm node gửi yêu cầu sự kiện nhận đƣợc thông báo
- Từ các mốc thời gian trên có thể tính đƣợc:
- Thời gian cung cấp sự kiện = t2.2-t2.1
- Thời gian tìm kiếm sự kiện trên mạng Chord = t2.3-t2.2
- Thời gian gửi thông báo đến node yêu cầu sự kiện = t2.4-t2.3