我一直都在風扇的出如谷歌IO描述的消息的原則「構建可擴展的複雜應用程序」谷歌應用程序引擎(蟒蛇)更新一個db.StringListProperty爭/併發問題
在這裏面它表明,使用list屬性來表示接收者列表是一個可擴展的解決方案。
在這種情況下如何做一個更新列表屬性,使競爭問題不介入,如果應用程序在處理大量用戶
使用IO例如:
class message(db.model)
sender=db.stringproperty()
body=db.textproperty()
class messageindex(db.model)
receivers=db.stringlistproperty()
調整其例如,我還需要
class followers(db.model)
user=db.userproperty()
followers=db.stringlistproperty()
(代碼只是一個例子,並不正確鍵入 - 對不起)
這個概念是,如果有人關注你,你將他們的關鍵字添加到追隨者模型中的追隨者列表中。如果你發出一條消息,你將追隨者列表存儲在消息列表中 - 並且使用一個簡單的查詢,所有用戶都會收到消息 - 很簡單的東西。
該問題是更新某人的追隨者列表。假設一些賬戶可能有數百萬的追隨者 - 如果我只是更新實體他們將是爭用問題 - 一個人也需要不止一個條目,因爲我認爲他們是每個列表5000條記錄的限制。當然,請求可能會發送到「添加」或「刪除」一個人。什麼是最好的方式來做到這一點。我正在考慮使用task_queue服務。我正在考慮一個存儲每個跟隨請求的工作模型,並觸發一個任務在60秒內運行。該任務可以完成一個人追隨者列表的所有工作 - 並建立新列表。不知道這將如何工作 - 但它會停止爭用問題,因爲只有一個線程可以在一分鐘內執行。
有沒有人有任何代碼示例好建議,幫助我如何以可擴展的方式做到這一點 - 我不認爲可以在該方法中使用m緩存,因爲任何損失都意味着可能會丟失跟進請求。
一個此處鏈接本來不錯。 – boatcoder 2011-07-24 18:06:34