Trong phần này chúng tôi sẽ trình bày chi tiết kiến trúc tại mỗi MU. Trong kiến trúc các MUs có thể liên lạc với nhau thông qua mạng vô tuyến và mỗi MU gồm có ba lớp xử lý chính: User Application, Middleware và Network Protocol được thể hiện ở Hình 3-3.
Hình 3-3 Kiến trúc tại mỗi MU
Lớp User Application có nhiêm vụ nhận yêu cầu dữ liệu của người dùng, chuyển yêu cầu đến lớp Middleware xử lý, sau đó trả kết quả về cho người dùng. Người dùng không cần biết về kiến trúc mạng, trạng thái mô hình mạng, phương thức xử lý của lớp Middleware, người dùng nhận kết quả trả về như là một MU cục bộ. Lớp Middleware có nhiệm vụ nhận yêu cầu dữ liệu từ lớp User Application, lớp này được chia thành hai lớp con chính: Query Process và Cooperative Caching Process. Lớp Network Protocol có nhiệm vụ giao tiếp và truyền thông tin, dữ liệu giữa các thành phần trong hệ thống. Kiến trúc chi tiết của các lớp được minh họa ở hình sau:
Hình 3-4 Mô hình kiến trúc đề xuất
Trong hình trên, nguyên lý hoạt động của kiến trúc này được trình bày như sau:
3.3.1Lớp Cooperative Caching Process
Lớp này phục trách quản lý việc cộng tác chia sẻ dữ liệu giữa các kho lưu trữ. Lớp này lại được tổ chức thành ba lớp con Local Cache Process, Zone Process, Routing Process để quản lý các thành phần dữ liệu tương ứng.
3.3.1.1Lớp Local Cache Process
Chịu trách nhiệm quản lý kho lưu trữ tại mỗi nút, lớp này sẽ phụ trách việc phân loại và lưu trữ hạng mục dữ liệu vào bộ nhớ cục bộ.
Mỗi MU có một bộ nhớ cục bộ (Local Cache - LC) để lưu trữ dữ liệu, khi một hạng mục dữ liệu được thêm vào LC, lớp này xử lý thay thế dữ liệu khi cache bị đầy
dựa trên thuật toán LUV [9]. Trong LC, chúng tôi chia thành hai loại đơn vị dữ liệu được lưu trữ: dữ liệu chính (Primary Data - PD) và dữ liệu phụ(Secondary Data - SD) [12], trong đó PD có độ ưu tiên cao, SD có độ ưu tiên thấp hơn. Việc phân loại hai loại dữ liệu chính phụ nhằm bảo đảm khả năng tồn tại ít nhất một bản sao hạng mục dữ liệu trong vùng. Những SD có độ ưu tiên thấp nhất sẽ bị “ưu tiên” thay thế nếu cache bị đầy, trong khi những PD chỉ bị loại bỏ khi giá trị TTL3 của nó không còn hợp lệ. Ngoài ra, việc thay thế các hạng mục dữ liệu nếu cache bị đầy còn phụ thuộc vào việc hạng mục dữ liệu đó có đang nằm trong lượt yêu cầu hay không. Xử lý này nhằm bảo đảm các hạng mục dữ liệu (dù là SD hay PD) nếu đang được yêu cầu truy vấn nhưng chưa xuất kết quả cho người dùng sẽ không bị xóa trong kho lưu trữ. Như vậy, khi cần thêm một hạng mục dữ liệu mới vào kho lưu trữ và kho lưu trữ bị đầy, SD
không nằm trong lượt yêu cầu có độ ưu tiên thấp nhất sẽ bị loại bỏ, hạng mục dữ liệu mới được thêm vào. Những PD không nằm trong lượt yêu cầu và có giá trị TTL không còn hợp lệ sẽ bị loại bỏ.
3.3.1.2Lớp Zone Process
Quản lý các thông tin về những MU trong vùng và những dữ liệu lưu trữ tại mỗi MU đó thông qua hai bảng RRT và IDNeighs. Mục tiêu của bảng RRT là cho biết MU nào có dữ liệu yêu cầu, khi đó MU nguồn sẽ truy xuất đến MU đó để lấy dữ liệu, tránh tình trạng loang hết (loang mù) đến các MUs khác trong vùng. Trong khi đó, bảng IDNeighs ghi nhận các MUs trong vùng của MU nguồn. Lớp này đồng thời sẽ đảm nhận việc duy trì thông tin để đảm bảo độ chính xác cho hai bảng trên.
3.3.1.3Lớp Routing Process
Quản lý định tuyến như kiến trúc MIX [12] đã đề xuất, dựa trên ý tưởng xây dựng và duy trì Route Cache – bộ lưu trữ thông tin định tuyến để làm cơ sở chọn lựa đường định tuyến tốt nhất trong quá trình truy vấn dữ liệu của kiến trúc.
3
TTL (Time to live): Giá trị TTL được sử dụng để thay thế giá trị mới khi chu kì sống của giá trị đó không hợp lệ
3.3.2Lớp Query Process
Lớp này chịu trách nhiệm xử lý truy vấn dữ liệu khi có yêu cầu. Ứng với mỗi phạm vi truy vấn, Query Process được tổ chức thành ba module: Local Query, Zone Query, Route Query.
3.3.2.1Module “Local Query”
Là module đầu tiên thực hiện nhiệm vụ khi bắt đầu nhận một truy vấn từ người dùng. Module giữ nhiệm vụ tìm kiếm hạng mục dữ liệu được yêu cầu từ kho lưu trữ cục bộ được quản lý bởi Cache Process.
3.3.2.2Module “Zone Query”
Với những hạng mục dữ liệu chưa được tìm thấy kho lưu trữ cục bộ, Module “Local Query” sẽ chuyển giao hoạt động cho module “Query Process” để tiến hành lập kế hoạch phân phối yêu cầu truy vấn cho các MU lân cận. Dựa vào thông tin từ lớp Zone Process, module “Zone Query” sẽ tổ chức điều phối, phân chia việc truy vấn và tổng hợp các hạng mục còn thiếu cho các MU lân cận một bước nhảy. Nếu các MU lân cận này có thể tổng hợp được một số hạng mục dữ liệu MU nguồn yêu cầu, MU nguồn dựa vào số lượng hạng mục dữ liệu có thể tổng hợp, và thời gian tổng hợp để chọn lựa MU lân cận tổng hợp dữ liệu.
Nếu các MU lân cận không thể tổng hợp số dữ liệu yêu cầu, module “Zone Query” tiếp tục broadcast yêu cầu truy vấn đến tất cả MU trong vùng để tìm kiếm những dữ liệu còn thiếu.
3.3.2.3Module “Route Query”
Nếu dữ liệu không được tìm thấy đầy đủ từ nội bộ vùng, module “Route Query” bắt đầu làm việc. Yêu cầu truy vấn ứng với những dữ liệu còn thiếu sẽ được gửi đến các MU xa hơn, được gọi là các nút mạng trong một phạm vi giới hạn cho trước.