2013-05-27 25 views
1

我正在尋找解決方案以在我的某個GAE應用上實施贊助圖像。以具有成本效益的方式跟蹤圖像視圖

我們已經有大約5000個用戶在使用該應用,這些贊助圖片需要在每次查看時以及每次有人點擊時都進行跟蹤。

有人建議有多個計數器條目,然後隨機增加這些計數器以獲得通過數據存儲區寫入限制,但是如果恰好同時有兩個視圖,並且都嘗試寫入數據存儲區同時,第二次寫入將覆蓋第一次寫入,這意味着您會丟失一個視圖。

目前我們正在爲每個視圖和每次點擊創建一個新的數據存儲區條目,並讓一個調度程序將其傳遞給一個隊列,該隊列將所有視圖和點擊次數保存在一個統計信息實體中 - 這不是非常有效。

+0

爲什麼不使用你建議的分佈式計數器?您可以將它分發到20行計數器,這意味着您必須每秒達到20次(很多)才能使其非常不可信 – MeLight

+0

假設我們遠低於20次/秒,論據。如果只有一個實例正在運行,它應該可以工作,但只要有兩個實例在運行,您就有1/20的機會讓兩個實例嘗試寫入同一個條目(因此由於增加了相同的條目而丟失該軌道同時進入),更多情況下更多。是否有某種「行級鎖定」,我可以用來通過犧牲準確性? distrubuted-counter +實體鎖定將是完美的解決方案。 –

+0

我不是一個概率專家,但我相信有兩個實例試圖在20個相同的計數器行中,總共有1/400的概率。至於你關於鎖定的問題,我不知道這樣的機制(雖然會很好)。 – MeLight

回答

0

張貼這作爲一個答案:)

您可以使用隊列一項任務時的吞吐率,併發送計數操作到該隊列。這樣你就會知道每次在櫃檯上只執行一次計數操作。