2014-01-06 28 views
0

因爲我需要實時功能,如聊天,通知,事情的即時更新等。可能是一個好主意,以完全取代我的網站(目前用作web服務器apache + mysql)與node.js(與websocket) ,表達和mongodb?請注意,我也需要上傳/下載小文件和大文件。node.js/express/mongodb而不是apache/mysql?

這個選擇的親/缺點是什麼? 或者你推薦另一個web服務器而不是node.js?

快樂頓悟,並提前謝謝你。

+2

一種模糊的問題,你的網站提供什麼服務?多少流量? HTML重量還是圖像/視頻重量還是兩者?你使用什麼取決於你需要做什麼,而不是網絡上不知道你對網站知道什麼的人的意見。另外請注意,mongoDB是NoSQL,這意味着查詢中的表不會加入;如果你需要加入db數據,這會使事情變得複雜。 – Chris

+0

上傳和下載的文件(甚至太大),在線觀看文本/圖像/音頻/視頻/等的巨大流量的預設。包括聊天,通知等功能。 我不知道現在是否需要nosql或sql之類的數據庫,但mongodb只是一個例子,在node.js中使用mysql或其他方法沒有問題 –

回答

2

引述克里斯:

你用什麼取決於你需要做什麼,而不是人們在互聯網上的意見不知道你知道你的網站是什麼。

他是絕對正確的。有太多事情影響你的決定。但是,讓我幫忙澄清一些有助於間接回答您的問題的內容。

node.js/express/mongodb而不是apache/mysql?

您不必在Express或MongoDB中使用Node.js。他們是三種截然不同的技術,僅僅因爲你使用Node.js並不意味着你必須使用MongoDB或Express。 Apache和MySQL也是一樣的。他們完全沒有關係。

對於您的網絡服務器,請使用適合您的服務內容。如果您主要發送靜態文件,請使用傳統的Web服務器。我會說,Nginx傾向於比Apache更好地處理更重的負載,所以請看一下。對於應用程序的一面,Node.js通常是有意義的。爲了提供應用程序中的內容,Express通常用於處理樣板文件。

您提到您需要與客戶進行大量的實時通信......您是否考慮過Socket.IO?這爲您提供了一個類似於網絡套接字的RPC,由於它支持多種傳輸方式(WebSocket,長輪詢JSON等),因此它是高度兼容的。 Socket.IO通常在Node.js之上運行,並可以與Express共享Web服務器實例。

您應該注意,您仍然可以同時使用像Nginx和Node.js這樣的傳統Web服務器。我經常這樣做,將Nginx代理請求返回給我的Node.js服務器。這可以讓我擔心在一個地方進行日誌記錄,節流和全部封鎖,同時保持良好的關注點分離。

最後,對於您的數據...您的數據在關係模型中是否有意義?如果是這樣,請保留關係數據庫,如MySQL,Postgres或其他許多數據庫之一。你的數據結構有點不同嗎?考慮可能適合您的數據模型的許多NO-SQL數據庫之一。僅僅因爲你需要快速的數據並不意味着特定類型的數據庫會比其他數據庫更快。這完全取決於你在做什麼。

我希望這能清除你的一些困惑。我鼓勵你在分析你的問題之前,分別考慮它的每個部分,然後才能得出你認爲一起合作的技術的結論。