本週我一直在使用RSS訂閱源,而對於我的下一個技巧,我想爲我們的內部應用程序日誌構建一個。我們有一個集中的數據庫表,我們無數的批量和內聯網應用程序用於發佈日誌消息。我想創建一個關於此表的RSS饋送,但我不確定如何處理音量 - 即使在正常的一天,每天可能會有數百個條目。一個特殊的讓你想要戒菸的日子可能會有幾千人。有什麼想法嗎?如何構建繁忙的RSS訂閱源
回答
不知道你的申請,我不能提供具體的建議。
也就是說,在這些系統中有一個嚴重程度很常見。您可以將查詢字符串參數粘貼到指定嚴重性的URL末尾。如果設置爲「DEBUG」,無論多麼微不足道,您都會看到每一個事件。如果將其設置爲「致命」,則只能看到嚴重程度爲「系統故障」的事件。
如果仍然有太多事件發生,您可能希望將您的事件細分爲某種類別系統。再次,我將這作爲查詢字符串參數。
然後,您可以爲各種類別和嚴重級別提供多個RSS源。這應該允許您調整警報的級別,使其達到可接受的級別。
好的,我決定如何處理這個問題。我爲每個列使用時間戳字段並按天分組。這需要一點點的SQL-fu才能實現,因爲當然這裏有一個完整的時間戳,我需要半智能化的關於如何從組內顯示日誌消息,但這並不算太壞。此外,我正在構建它,讓您選擇要監視的應用程序,然後顯示特定日期的每條消息(最多50條)。
這讓我感到合理。
我仍然希望對更通用的問題有一個很好的答案:「你如何聯合許多重要的信息,在哪裏丟失信息可能是一個問題?」
如果您正在構建一個不能錯過通知的系統,那麼pub-sub機制(使用XMPP,ApacheMQ支持的其他協議之一,或類似的方法)將更適合於聯合機制。您需要在生成通知的系統和正在使用通知的系統之間進行一些耦合度量,以確保消費者不會錯過通知。 (您可以使用RSS或Atom作爲傳輸格式來完成此操作,但這可能不是常見用例;您需要更改基於消費者顯示的通知以及先前看到的通知)。
在這種情況下,它更像是一個經理人的儀表板:今天有多少工作投入了支持,現在有沒有什麼緊迫的日誌,以及當我們第一次到達早晨時,作爲衡量哪裏出了問題批量工作過夜。
我會做飼料靜態文件(你可以很容易地服務於千元以下),定期再生。那麼你有更廣泛的選擇,因爲它不需要在第二個以下運行,甚至可以運行幾分鐘。而且用戶仍然得到完美下載速度和合理的更新速度。
我會盡可能地分割Feed,並讓用戶根據需要重新組合它們。如果我這樣做,我可能會考慮使用Django和聯合框架。
Django的模型可能可以處理表示您關心的表的數據結構。
你可以有一個URL捕捉所有的東西,如:r'/rss/(?(\w*?)/)+'
(我認爲這可能有效,但我現在不能測試它,所以它可能不完美)。
這樣,你可以使用像URL(編輯取消例如URL的自動鏈接):
- 的http:// feedserver/RSS /批處理文件輸出/
- HTTP://feedserver/RSS /支票/
- HTTP:// feedserver/RSS /批處理文件輸出/支撐門票/(所述第一合二爲一的)
然後在視圖:
def get_batch_file_messages():
# Grab all the recent batch files messages here.
# Maybe cache the result and only regenerate every so often.
# Other feed functions here.
feed_mapping = { 'batch-file-output': get_batch_file_messages, }
def rss(request, *args):
items_to_display = []
for feed in args:
items_to_display += feed_mapping[feed]()
# Processing/returning the feed.
擁有單獨的可鏈接的提要意味着用戶可以一次訂閱一個提要,或者將他們關心的提要合併爲一個更大的提要。無論他們更容易閱讀,他們都可以做到。
我知道有卷,但我不確定我從這個問題理解爲什麼需要以特殊方式處理?您是否希望減少該桌上的點數,提高用戶對飼料消費者的耐性,或者......? – busse 2008-09-12 21:38:57