2015-05-14 259 views
2

我需要關於設計決策的建議。 我正在創建一個電子商務應用程序,並有很多項目(> 10000)在我的應用程序中顯示。現在我有兩個選項 1)從服務器獲取所有項目信息並保存在本地數據庫中,並且每次同步信息(比如15分鐘) 2)每次從Web服務器獲取信息(通過休息api)。Web服務器最佳實踐

這兩種方法都有優點和缺點。使用本地數據庫我可以得到快速的結果和較少的服務器帶寬,但將不得不處理同步 第二種方法,我將有很多的服務器請求和釋放和加載服務器上。

我也想知道其他應用程序如亞馬遜和flipkart如何處理這個。每次都保存在本地數據庫或請求服務器中。

回答

2

您應該尋找的是本地和遠程的混合設計。

在數據類型方面有兩種主要類型:

  • 斑點「二進制大對象」例如:圖像,視頻...
  • 和小數據(的通常JSON/XML表示項目)。

亞馬遜和其他網絡應用程序提供新的數據每次應用程序加載時間,同時保持數據的本地副本櫃面應用去下線,有時甚至使用這些數據在未來的工作量,同時等待爲後端。

另一方面,這些應用程序爲大數據維護高速緩存級別,以便它們不必一次加載它。

但對於這項工作的關鍵是要有一個包含許多功能,以提高其速度,包括一個非常快的後端:

  • 雲的前端,使用戶能夠與周圍最近的服務器進行通信。
  • memcached或任何其他緩存技術,將保持在服務器中的RAM項目的信息,而不必查詢數據庫來獲取它們。

通常會發生什麼是後端的確保其數據始終醚查詢每特定時間的數據庫,或通過推緩存每次插入在RAM /緩存加載/刪除/更新發生到數據庫。

Here is how Twitter is doing it

最後一點您的應用程序不應該需要更長的時間比一個網頁,它不是對本地應用比web應用程序需要較長的時間接受更多的交互,以允許用戶與他們進行互動。

1

只加載你想要顯示的東西,但是智能緩存。

例如;產品的圖像不會經常變化,但可用於非常受歡迎的項目的項目數量可以每秒更改一次。根據具體情況決定刷新和何時刷新哪些信息。

絕對不希望每次有人啓動應用程序時從服務器上拉下所有東西。這不會導致較低的帶寬。它會融化您的服務器,吞併他們的數據計劃,並用他們永遠不會看到的產品填充他們的手機存儲。