1

我正在使用供應商門戶。一家商店的主人將登錄並在導航欄中(類似於臉書),我希望銷售的物品數量能立即出現,而不需要任何刷新。在臉書中,新的通知立即彈出。我正在使用sql azure作爲我的數據庫。是否可以記錄數據庫中的更改並立即通知用戶?根據數據庫值更改發送通知

我的項目的第2部分將包含供應商的手機應用程序。在這個應用程序中,我也希望擁有相同的通知機制。在這種情況下,如果我搜索推送通知並應用它們,我是否會正確?

目前我的主要目標是解決第1段中的問題。我能夠檢索通知的數量,但究竟如何能夠在瞬間顯示更改?非常感謝你

回答

1

首先你需要定義什麼是INSTANT對你意味着什麼。對於某些人來說,這意味着在90%的時間內。對於其他人,他們會很樂意平均有10-20秒的差距。更重要的是,你需要了解你的需求的含義;換句話說,您的企業幾乎沒有等待時間是值得的嗎?您的要求越寬鬆,建設越便宜,維護越容易。

您應該知道,就計算和鎖定資源而言,近距離通知可能非常昂貴。刷新越多,需要的網頁往返次數越多(即使在這種情況下它們最小)。讓數據新鮮到數據庫對數據庫來說也可能是昂貴的,因爲您可能會創建大量的請求,這反過來會影響其他性能良好的請求。例如,如果您的網站以1000個登錄用戶運行,則每秒可能需要1000個數據庫請求(假設這是您的INSTANT定義),如果設計不正確,則可能會在SQL Azure中創建限制條件。

我以前用過類似的需求(雖然精度不是第二;更像是分鐘)的一種方法是從本地網站緩存中的內存表中加載所有記錄。後臺線程鎖定並刷新一次記錄中的所有記錄的內存數據。這使我們能夠將數據庫流量減少一千倍,因爲屏幕上顯示的數據來自本地緩存,並且需要單個數據庫連接來刷新緩存(每個Web服務器)。因爲我們有多個Web服務器,並且我們需要所有Web服務器上的數據在彼此之間完全相同,所以我們同步所有Web服務器的請求以每分鐘刷新一次緩存。把它們放在一起需要花費很多時間,但它使我們能夠構建一個高度可擴展的系統。

上述技術可能無法滿足您的要求,但我的觀點是對新鮮數據的需求越高,您需要進行的設計/工程設計工作就越多,以確保您的系統不會受到新鮮度要求的太大影響。

希望這會有所幫助。

+0

非常感謝您分享這些知識。我知道這將是相當昂貴的;但讓我們說,這個商業案例更像是一種低估態度。想象一下,這些必須是必須的。立即我的意思是,一旦更改被插入到數據庫中,相關用戶會立即得到通知。我聽說過輪詢和推送sql緩存依賴關係,(參見第2部分) – test 2012-03-27 22:26:26

+0

,但是從我們搜索的內容中獲得;這些不能在SQL Azure數據庫上實現;因此我們正在尋找另一種機制;相同類型的機制,例如移動應用程序的推送通知,一旦插入通知,它會立即發送到手機。現在我想將其應用於網絡。感謝您的時間和耐心! – test 2012-03-27 22:26:48