第三章 新增有序遺失區段方式
第三節 實例說明
(2) 擷取所需資料項;如果成功取得所需資料項,結束這個程序;否則,行動客 戶端將會由 bucket 中得知,遺失資料項將會在有序遺失資料區段中第 i 個 bucket 重新廣播,根據下列程序繼續執行。
(3) 行動客戶端進入睡眠模式,直到所需資料項在有序遺失資料區段中第 i 個 bucket 廣播時恢復為活動模式再嵌入到廣播通道中。
(4) 下載所需資料項;如果成功取得所需資料項,結束這個程序;否則,回到步 驟1 繼續執行。
圖3-6 廣播排程
當廣播伺服器端發生資料遺失時,廣播伺服器端的處理程序如下述,當廣播 伺服器端開始廣播資料時會產生一個計數器,初值會設為1,然後將索引與資料 項依照廣播排程依序的廣播,假設在廣播的過程中資料項D2 發生資料遺失時,
廣播伺服器端會記錄下 bucket_ID 為 6 的資料項 D2,並在原本準備廣播資料項 D2 的 bucket 中,放入代表發生資料遺失的旗標與計數器的值 1,並立即廣播此 bucket,然後將計數器的值加 1,資料項 D8 也同樣發生資料遺失時,依照上述 的方式將旗標與計數器的值2 放入原本準備廣播資料項 D8 的 bucket 中,接著廣 播伺服端就會在有序遺失資料區段中第1 個 bucket 中,重新廣播 bucket_ID 為 6 的資料項D2;第 2 個 bucket 中,重新廣播 bucket_ID 為 20 的資料項 D8,如下 圖3-7 所示。
圖3-7 資料遺失時廣播伺服器端的處理程序
當行動客戶端面臨所需的資料項發生資料遺失時,行動客戶端的擷取程序如 下所述:
1D3 D4D5 D6
D1 R I1 I2 I3 R I1 I2 I3 D7 2D9
r
D2 D8R I1 I2 I3
6 7 12 13 14
5 8 9 10 11 15 16 17 18 19 20 21 22 23
1 2 3 4 24
Bucket ID
D2
Bucket ID
Index_ pointer Bcast_pointer
Bucket_type I3
Attribute_value , Offset Attribute_value , Offset
Attribute_value , Offset 4
4 21
Index
8 , 20 7 , 19
9 , 21
Bucket ID
Index_ pointer Bcast_pointer
Bucket_type R
Attribute_value , Offset Attribute_value , Offset
Attribute_value , Offset 8
7 17
Index
4 , 2 1 , 1
7 , 3
Bucket ID
Index_ pointer Bcast_pointer
Bucket_type I1
Attribute_value , Offset Attribute_value , Offset
Attribute_value , Offset 9
6 16
Index
2 , 6 1 , 5
3 , 7 Ordered_miss_
index_pointer Ordered_miss_
data_pointer
18 19
Ordered_miss_
index_pointer Ordered_miss_
data_pointer
14 15
Ordered_miss_
index_pointer Ordered_miss_
data_pointer
13 14 r
Bucket ID
Index_ pointer Bcast_pointer
Bucket_type
Attribute_value , Offset Attribute_value , Offset
22
3 3
Index 2 , 23 8 , 24
圖3-8 Case 1 資料遺失時行動客戶端的擷取程序 Case 1
如上圖3-8 中行動客戶端所需的資料項為 D2,行動客戶端在索引 I2 廣播時 嵌入到廣播通道中,擷取資料的流程如下。行動客戶端會擷取下一個 bucket 索 引I3,從 bucket 中的 index_pointer 資訊可得知下一個索引區段的起點需要 4 個 bucket 單位時間的位移,接著行動客戶端離開廣播通道進入睡眠模式,再經過 4 個 bucket 單位時間的位移之後,行動客戶端恢復為活動模式再次進入廣播通道 中讀取根索引R,再透過根索引 R 的 attribute_value 值與所需的資料項 D2 作判
斷即可得知下一個要擷取的索引為 I1,位移為 1 個 bucket 單位時間,接著讀取 索引I1 後,透過索引 I1 的 attribute_value 值與所需的資料項 D2 作判斷後可得知 所需的資料項(bucket_ID 為 6)在行動客戶端嵌入廣播通道之前已經廣播過了,需 到下個廣播週期來擷取資料項。雖然行動客戶端無法由索引區段中得知資料項 D2 是否有發生資料項遺失的問題,但是行動客戶端可試著透過有序遺失資料索 引來查看資料項 D2 是否在有序遺失資料區段中再次廣播,因此可透過 bucket 中的資訊ordered_miss_index_pointer 得知有序遺失資料索引的廣播時間為 13 個 bucket 單位位移的時間,接著行動客戶端離開廣播通道進入睡眠模式,經過 13 個 bucket 單位時間的位移之後,行動客戶端恢復為活動模式再次進入廣播通道 中讀取有序遺失資料索引r,行動客戶端發現所需的資料項在有序遺失資料區段 中被再次廣播,位移為 1 個 bucket 單位時間,因此行動客戶端即可在有序遺失 資料區段中取得所需的資料項D2。
圖3-9 Case 2 資料遺失時行動客戶端的擷取程序 Case 2
如上圖 3-8 中行動客戶端所需的資料項為 D8,行動客戶端在資料項 D4 廣播 時嵌入到廣播通道中,擷取資料的流程如下。行動客戶端會擷取下一個 bucket 資料項D5,從 bucket 中的 index_pointer 資訊可得知下一個索引區段的起點需要 2 個 bucket 單位時間的位移,接著行動客戶端離開廣播通道進入睡眠模式,再經 過 2 個 bucket 單位時間的位移之後,行動客戶端恢復為活動模式再次進入廣播 通道中讀取根索引 R,再透過根索引 R 的 attribute_value 值與所需的資料項 D8 作判斷即可得知下一個要擷取的索引為 I3,位移為 3 個 bucket 單位時間,接著 行動客戶端可離開廣播通道進入睡眠模式,經過 3 個 bucket 單位時間的位移之
後,行動客戶端恢復為活動模式再次進入廣播通道中讀取索引 I3,透過索引 I3 的attribute_value 值與所需的資料項 D8 作判斷後可得知所需的資料項(bucket_ID 為20)須經過為 2 個 bucket 單位時間的位移,同樣地,行動客戶端可離開廣播通 道進入睡眠模式,經過 2 個 bucket 單位時間的位移之後,行動客戶端恢復為活 動模式再次進入廣播通道中擷取資料項D8,卻發現該 bucket 中並未存在資料項 D8,而是存在著代表資料遺失的旗標與表示行動客戶端可直接到有序遺失資料 區段中的第2 個 bucket 中取得資料項 D8 的 i 值,因此行動客戶端就可透過 bucket 中包含的 ordered_miss_data_pointer 可得知有序遺失資料區段的廣播時間需經過 3 個 bucket 單位位移的時間即為有序遺失資料區段中的第 1 個 bucket,再透過代 表可直接到有序遺失資料區段中的第2 個 bucket 擷取資料項的 i 值,所以是 4 個 bucket 的位移時間,因此行動客戶端離開廣播通道進入睡眠模式,再經過 4 個 bucket 單位時間的位移之後,行動客戶端恢復為活動模式再次進入廣播通道中重 新擷取所需的資料項D2。
1D3 D4D5 D6
D1 R I1 I2 I3 R I1 I2 I3 D7 2D9
r
D2 D8R I1 I2 I3
6 7 12 13 14
5 8 9 10 11 15 16 17 18 19 20 21 22 23
1 2 3 4 24
Bucket ID
D2
Bucket ID
Index_ pointer Bcast_pointer
Bucket_type
13 12 2 Data D5
Ordered_miss_
index_pointer Ordered_miss_
data_pointer 9 10
Bucket ID
Index_ pointer Bcast_pointer
Bucket_type R
Attribute_value , Offset Attribute_value , Offset
Attribute_value , Offset 15
10 10
Index
4 , 2 1 , 1
7 , 3
Bucket ID
Index_ pointer Bcast_pointer
Bucket_type I1
Attribute_value , Offset Attribute_value , Offset
Attribute_value , Offset 16
9 9
Index
2 , 6 1 , 5
3 , 7 Ordered_miss_
index_pointer Ordered_miss_
data_pointer
7 8
Ordered_miss_
index_pointer Ordered_miss_
data_pointer
6 7 r
Bucket ID
Index_ pointer Bcast_pointer
Bucket_type
Attribute_value , Offset Attribute_value , Offset
22
3 3
Index 2 , 23 8 , 24
圖3-10 Case 3 資料遺失時行動客戶端的擷取程序 Case 3
如上圖 3-8 中行動客戶端所需的資料項為 D2,行動客戶端在資料項 D4 廣播 時嵌入到廣播通道中,擷取資料的流程如下。行動客戶端會擷取下一個 bucket 資料項D5,從 bucket 中的 index_pointer 資訊可得知下一個索引區段的起點需要 2 個 bucket 單位時間的位移,接著行動客戶端離開廣播通道進入睡眠模式,再經 過 2 個 bucket 單位時間的位移之後,行動客戶端恢復為活動模式再次進入廣播 通道中讀取根索引 R,再透過根索引 R 的 attribute_value 值與所需的資料項 D2 作判斷即可得知下一個要擷取的索引為I1,位移為 1 個 bucket 單位時間的位移,
接著讀取索引I1 後,透過索引 I1 的 attribute_value 值與所需的資料項 D2 作判斷
後可得知行動客戶端已錯過資料項(bucket_ID 為 6)的廣播時間,因此需到下個廣 播週期重新擷取資料項。但是行動客戶端仍有機會在同一個廣播週期中的有序遺 失資料區段中取得資料項,前提是資料項D2 也正好發生資料遺失,因此行動客 戶端可透過bucket 的資訊 ordered_miss_index_pointer 得知有序遺失資料索引的廣 播時間,需經過 6 個 bucket 單位位移的時間,接著行動客戶端離開廣播通道進 入睡眠模式,經過 6 個 bucket 單位時間的位移之後,行動客戶端恢復為活動模 式再次進入廣播通道中讀取有序遺失資料索引 r,透過有序遺失資料索引的資 訊,行動客戶端會發現所需的資料項D2 在有序遺失資料區段中被再次廣播,位 移為 1 個 bucket 單位時間的位移,因此行動客戶端即可在有序遺失資料區段中 取得所需的資料項D2。