Mạng hàng hàng có cấu trúc có ưu điểm là có thể quản lý, lưu trữ và tìm kiếm dữ liệu trên quy mô lớn và dễ dàng mở rộng để có thể tìm kiếm sự kiện chính xác phù hợp với yêu cầu của người dùng. Có khả năng truyền thông báo hiệu quả, thời gian tìm kiếm dữ liệu nhanh hơn, thông tin tìm kiếm chính xác và độ tin cậy cao.
Một cách tiếp cận mới trong kỹ thuật thông báo sự kiện là dùng bảng băm phân tán (DHT) để xây dựng cấu trúc lớp phủ trên đỉnh của mạng P2P, lớp phủ này cung cấp phương pháp hiệu quả để định tuyến các truy vấn đến các node tương ứng, xác định dựa trên hàm băm. Mục tiêu là các node lưu trữ một yêu cầu và nhận được một sự kiện thỏa mãn hoặc là giống nhau, hoặc là gần giống nhau.
Dịch vụ thông báo sự kiện có thể thực hiện một xử lý chọn lọc để xác định những thông báo nào được đưa ra mà node yêu cầu sự kiện quan tâm, định tuyến và cung cấp thông báo đến node đó. Quá trình lựa chọn cũng được sử dụng bằng dịch vụ thông báo sự kiện để tối ưu hóa việc truyền thông bên trong mạng.
Lưu trữ dữ liệu phân tán, một node đồng thời đóng vai trò là node nhận yêu cầu sự kiện và cũng là node cung cấp sự kiện nên có thể truy vấn thông tin, cập nhật thông tin nhanh.
Dịch vụ thông báo sự kiện gồm các thành phần:
Mạng lưu trữ thông tin:
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 đối tượng cung cấp dịch vụ và yêu cầu dịch vụ
Sử dụng mạng ngang hàng có cấu trúc Chord: Vòng tròn Chord lưu không gian định danh ID của các node, mỗi node sẽ lưu giữ giá trị của một khoảng khóa nào đấy, mỗi khóa K được định nghĩa gồm một cặp địa chỉ IP và cổng (IP,Port) của node tương ứng, có nghĩa là mỗi cặp (khóa K, sự kiện Ev) sẽ gửi thông tin sự kiện Ev cho địa chỉ node yêu cầu sự kiện (IP, port).
Yêu cầu sự kiện:
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.
Người dùng có thể chọn sự kiện có sẵn trong list ở trường Tên sự kiện, nhấn nút
Yêu cầu sự kiện, sự kiện được băm thành khóa, khóa này được lưu ở một node trên
mạng Chord.
- Giao thức yêu cầu sự kiện được định nghĩa có cấu trúc: (Loại sự kiện-Yêu cầu sự kiện, Khóa, Nội dung sự kiện,…)
- Hệ thống sẽ tạo ra khóa ứng với 1 cặp thuộc tính - giá trị của sự kiện yêu cầu rồi gửi yêu cầu sự kiện đó đến node phụ trách khóa. Node phụ trách khóa sẽ lưu lại các thông tin:
o Yêu cầu sự kiện
o Khóa
o Địa chỉ node yêu cầu sự kiện
Cung cấp sự kiện:
Có chức năng quảng bá thông tin về sự kiện và đưa ra các thông báo theo cách thức trước đó được quảng bá.
Người dùng chọn sự kiện có sẵn trong danh sách của trường Tên sự kiện cung cấp, nhấn nút Cung cấp, sự kiện được băm thành khóa, khóa này được lưu ở một node trên mạng Chord.
- Giao thức cung cấp sự kiện được định nghĩa có cấu trúc: (Loại sự kiện-Cung cấp sự kiện, Khóa, Nội dung sự kiện,…)
- Hệ thống sẽ tạo ra các khóa ứng với các cặp thuộc tính - giá trị của sự kiện yêu cầu rồi gửi thông tin sự kiện đến các node phụ trách khóa, node phụ trách khóa thực hiện:
o Kiểm tra cơ sở dữ liệu và lấy danh sách các node gửi yêu cầu phù hợp với thông tin sự kiện.
o Kiểm tra yêu cầu sự kiện với thông tin sự kiện.
- Gửi thông tin sự kiện đến node yêu cầu sự kiện
Sự kiện
[2]Một sự kiện trong hệ thống thông báo sự kiện được quy định như một tập hợp các cặp giá trị thuộc tính d {( attr {(attr1, v1), (attr2, v2), ..., (attrd, vd)}, trong đó d là số thuộc tính {attr1,attr2, ..., attrd} kết hợp với sự kiện. Ví dụ, thông báo sự kiện Bóng đá, mỗi node sẽ lưu thông tin về Giải đấu, Trận đấu, Kết quả trận đấu…do đó d sẽ là đại diện cho các dữ liệu thuộc tính là attr1= 'Giải đấu', attr2= 'Trận đấu', attr3= 'Kết quả trận đấu'. Trong biểu thức tổng quát, các khó khăn trong truy vấn có thể được xác định tại một thuộc tính phân biệt dạng thông thường - phân biệt của một hoặc nhiều mệnh đề điều kiện, mỗi mệnh đề là một kết hợp của các thuộc tính cơ bản. Mỗi thuộc tính cơ bản ký hiệu là (attri ? pi), là một điều kiện trên một số các thuộc tính attri với ? là toán tử lọc. Khi được sử dụng trong các tài liệu của kỹ thuật thông báo sự kiện, một toán tử lọc có thể là một toán tử so sánh (=,<,>) hoặc một toán tử chuỗi như “trước của”, “sau của” và “chuỗi con của” nếu thuộc tính có kiểu chuỗi. Một sự kiện x thỏa
mãn một truy vấn q, biểu hiện bằng x ∈ q , khi và chỉ khi x đủ các thuộc tính xác định
Hình 14: Chi tiết một số sự kiện
- Tên sự kiện có thể bao gồm các sự kiện như: Bóng đá, ca nhạc, phim, ….
- Khi chọn một Tên sự kiện, hệ thống sẽ hiển thị thông tin chi tiết về Sự kiện và người dùng cần chọn thêm thông tin chi tiết về sự kiện đó
Lưu trữ và tìm kiếm dữ liệu:
Dịch vụ thông báo sự kiện tìm kiếm thông tin bằng phương pháp tìm kiếm giá trị thuộc tính. Theo phương pháp này, mỗi nội dung thông tin sẽ được định danh bởi một tên nội dung là tập các cặp thuộc tính-giá trị mô tả nội dung thông tin. Việc sử dụng các cặp thuộc tính/giá trị đảm bảo cho khả năng biểu diễn nội dung thông tin được chính xác và dễ dàng thông qua khả năng biểu diễn ngữ nghĩa của các thuộc tính-giá trị trong tên nội dung. Ví dụ như tên miền của nội dung thông tin về sự kiện Bóng đá có thể được biểu diễn như sau:
(Tên sự kiện = “Bóng đá”, Giải đấu=”Bóng đá Anh”, Trận đấu=”Chelsea- Blackburn”, Kết quả giữa trận = “1-0”) trong đó các thuộc tính “Tên sự kiện”, “Giải đấu”, “Trận đấu”, “Kết quả giữa trận” đã được định nghĩa trước. Việc tìm kiếm truy vấn thông tin cũng sẽ dựa trên các cặp thuộc tính-giá trị trong đó, câu truy vấn sẽ chứa một tập các cặp thuộc tính-giá trị cần truy vấn. Kết quả tìm kiếm trả về sẽ là các nội dung thông tin với tên nội dung có chứa các cặp thuộc tính-giá trị cần truy vấn.
Nội dung thông tin sẽ bao gồm các thông tin chi tiết liên quan đến sự kiện. Các node lưu trữ tên và nội dung sự kiện sẽ tạo thành một mạng ngang hàng có cấu trúc Chord. Các thông báo phân bổ thông tin và truy vấn thông tin gửi giữa các node được định tuyến theo địa chỉ là các khóa và dựa trên bảng định tuyến lưu tại mỗi node.
Việc phân bổ nội dung sự kiện sẽ được thực hiện dựa trên việc ánh xạ tên nội dung vào khóa phân bổ và nội dung sự kiện sẽ được gửi đến node phụ trách khóa phân bổ. Giải pháp ánh xạ khóa là tạo khóa phân bổ chính từ mỗi cặp thuộc tính-giá trị trong tên nội dung. Do có những cặp thuộc tính-giá trị phổ biến nên để tránh tình trạng quá tải cho các node phụ trách các khóa phổ biến, các node này sẽ chỉ lưu một phần nội dung thông tin gán với khóa phổ biến, phần còn lại sẽ được lưu tại các node khác dựa trên các khóa thứ cấp. Các khóa thứ cấp là giá trị băm của hơn hai cặp thuộc tính- giá trị có trong tên nội dung được phân bổ. Node phụ trách khóa phổ biến sẽ lưu lại ánh xạ giữa các khóa phân bổ chính và khóa thứ cấp để đảm bảo các thông báo truy vấn thông tin sẽ được gửi đến tất cả các node có khả năng chứa thông tin cần tìm.
Với cách lưu trữ trên có thể thấy giải pháp này có các ưu điểm như:
Với các cặp thuộc tính-giá trị không phổ biến, do số lượng nội dung thông tin gán vào mỗi cặp thuộc tính-giá trị đó không lớn nên chúng sẽ được lưu tại một node và việc truy vấn đến các cặp thuộc tính-giá trị không phổ biến sẽ chỉ cần thực hiện trên một node với mỗi truy vấn. Điều này đảm bảo cho tính hiệu quả trong việc tìm kiếm.
Với các cặp thuộc tính-giá trị phổ biến, do số lượng nội dung thông tin gán vào mỗi cặp thuộc tính-giá trị đó là lớn nên chúng sẽ được lưu tại nhiều node. Số lượng nội dung thông tin càng lớn thì số node lưu giữ thông tin càng lớn. Điều này đảm bảo cho tính cân bằng tải của hệ thống. Với câu truy vấn chứa nhiều cặp thuộc tính-giá trị phổ biến, việc truy vấn sẽ được thực hiện trên node phụ trách khóa phân bổ chính và các node phụ trách các khóa thứ cấp.
Việc sử dụng giao thức DHT trong việc phân bổ và tìm kiếm thông tin đảm bảo khả năng mở rộng (scalability) của hệ thống, tính hiệu quả (efficiency) trong định tuyến gói tin và khả năng chịu lỗi (fault tolerent) cho hệ thống được đề xuất.