7
我們正在實現對我們的應用程序中跟蹤Mailgun事件的支持。我們回顧了建議的event polling algorithm,但發現我們對此不太滿意。首先,我們不希望丟棄我們已經提取的數據,然後在暫停後重試。它不是非常有效率,並且爲長時間的重試循環打開了一扇大門,因爲不清楚循環何時應該結束。其次,「門檻年齡」似乎是確定「可信度」的關鍵,但其價值沒有確定,只有非常大的「半小時」建議。Mailgun:事件輪詢算法
我們的理解是,事件在某些閾值延遲後變爲「可信」,讓我們稱之爲D_max
,當事件保證存在於事件存儲中時。如果是這樣,我們可以用不同的方式實現這個算法,這樣我們就不會獲取我們所知道的不「可信」的數據,並利用所有已獲取的數據。
我們將定期獲取數據,並且在每次迭代,我們將:
- 請對事件API指定上升時間範圍從
T_1
到T_2 = now() - D_max
的請求。對於第一次迭代,可以將T_1
設置爲過去的某個時間,例如「半小時前」。對於後續迭代,T_1
被設置爲來自先前迭代的值T_2
。 - 在返回下一頁網址的同時,一個一個提取所有頁面。
- 使用所有提取的事件,因爲它們都是「可信的」。
我的問題是:
- Q1:是否有使用這種方法的任何問題?
- Q2:
D_max
的最小實際值是多少?顯然,我們可以使用「半小時」,但我們希望在跟蹤事件時更加敏捷,所以知道我們可以設置的最小值以及仍然可靠地獲取所有事件將是一件非常好的事情。
謝謝!