2009-09-03 94 views
2

我一直在設計一個文件服務器,可以從主網站卸載,並通過網絡將圖像/文件提供給客戶端。文件服務器設計方法

文件服務器的主要目標:
- 起飛從主服務器負載託管網站
- 重用現有的Web服務器的代碼庫,避免代碼/邏輯的重實現更好的可維護性
- 提高作爲可擴展性下載
- 隱藏真正的下載url路徑從用戶

通過記住上面,我可以想出兩種方法。這兩種方法的序列圖表示易於理解[序列圖的傾斜使用的道歉]。這兩種方法都不能滿足我所有的目標。

您會推薦哪些方法考慮我的目標?
有更好的第三種方法嗎?

有些差異,我能想到的:
- 方法#1會導致複製BL代碼導致可維護性的問題
- 方法2將重用代碼和集中BL降低可維護性的問題
- 方法#1會減少網絡電話,而#2增加他們

文件服務器的概念,下載的可擴展性,帶寬分佈都已經有一段時間了。請分享您的想法!

alt text

更新:
方法#1看起來非常有吸引力,因爲它需要負載關閉主服務器完全。要解決的第一個問題是代碼重複和可維護性問題。這可以通過只有一個包含Web服務和文件服務器所需功能的BL/DAC項目來克服。並且,在Web服務和文件服務器項目中引用程序集/庫。現在,只有一個BL/DAC代碼需要維護,並且還避免了方法#2中的網絡呼叫。

回答

1

通過圖像/文件服務給客戶,我假設你的意思是靜態文件CSS,JS等

大多數時候,一個簡單的解決方案是最佳的解決方案。只需將它們託管在不同子服務器下的不同服務器上,即http://content.mydomain.com/img/xyz.jpg。您可以將它們放置在專用服務器上的數據中心,爲您的perforamace(靠近骨幹網)提供服務,您可以負載平衡url並在2+個不同的數據中心配備2+服務器,從而爲您提供持續性和可擴展性。

你的主要任務然後有待辦事項找到一個替代時,促進您的網站住,以替換dev/uat內容路徑與實時內容路徑(你只需要在css文件中待辦事項,因爲你可以存儲路徑用於aspx文件中用作配置數據的內容)。

+0

@Jaimal:通過文件,我指的是存儲在用戶上傳的webserver/db上的文檔。目標是讓它稍後可以擴展到託管數據中心。 – pencilslate 2009-09-09 16:30:59

+0

@Pencilslate:嗯,上傳時,用一個guid重寫文件名,使得難以讀取url和99.99%的唯一url,將文件寫入單獨的服務器。將guidas索引列存儲在一個db中,以及其他元數據(文件名大小,類型上傳日期等)。然後當文件被請求時,使用guid抓取文件。發送repsonse流時,您可以快速將文件名重寫爲原始文件名。 因此,您已經創建了您的唯一文件名,並因此創建了唯一的d/l url,並且不必在請求時創建一個。 – 2009-09-09 22:33:28