2015-02-04 20 views
0

這是一個通用設計問題。我目前從我的服務器(C#web api託管在azure上)發送跟蹤事件到Mixpanel(使用Mixpanel.NET包:https://github.com/chrisnicola/Mixpanel.NET)。混合面板從服務器緩存跟蹤

這對大部分工作正常。但是,它並不像我想要的那樣健壯: 1.儘管最小化,但它不必要地減慢了我的服務器,因爲事件是在正常使用API​​期間發送的。 2.如果混合面板出現故障,則事件丟失

解決這些問題的最佳方法是什麼?我想我可以緩存我的服務器上的事件,並最終將它們發送到Mixpanel。這是一個好方法嗎?猜測我需要使用某種類型的持久存儲,以防我的服務器在發送之前發生故障。天藍色的排隊會對此有好處嗎?

在此先感謝。

回答

0
  1. 根據消息的大小,您可以將它們寫入Azure Storage QueueAzure Service Bus。如果您的消息太大而無法自行進入隊列,則只需將隊列記錄寫入隊列,然後使用隊列存根將實際寫入Azure Table Storage,Azure SQL DatabaseAzure DocumentDB的完整消息作爲標識滿消息被存儲。
  2. 使用Worker Role to read the queue並將消息發送到Mixpanel API。當Mixpanel關閉時,不要從隊列中彈出存根,它將被重新處理。如果Mixpanel API處於啓動狀態,請使用存根將全部消息拉出併發送到Mixpanel API,然後從隊列中刪除存根。