2013-05-02 85 views
0

最近,我和一位被稱爲經驗豐富的架構師的建築師進行了討論。討論圍繞着在Web Farm中運行的基於Web的多租戶應用程序的理想架構和設計。該應用程序的唯一工作是允許用戶上傳系統正在處理的'n個'Excel文件,以生成非常複雜的報告。處理這些文件需要很長時間(每個文件一個小時,讓我們把它作爲一個約束)。因此,上傳後的用戶等待來自系統的通知下載生成的報告。構建可擴展的應用程序VS只是雲就緒應用程序

乍一看這個需求看起來非常簡單,但期望的是應用必須是100%可擴展的。我們與架構討論了各種解決方案,但我們並不認爲它令人滿意。我需要這個社區的成員與技術一起提出設計解決方案。這不是我的專業任務,但它只是一項調查,旨在瞭解架構師對構建可擴展應用程序的看法,以及僅適用於雲應用程序的應用程序,其中易於擴展基礎架構而非關注應用程序可伸縮性。

+0

是否都是獨立於對方的excel處理?如果沒有依賴關係,只要你像在雲中一樣不斷擴展硬件,就會看起來像一個簡單的問題。 – computinglife 2013-05-02 18:46:29

+0

是的,所有的處理都是獨立的,但挑戰在於讓應用程序可擴展,而不僅僅是抽取更多的h/w。我們應該考慮擴大規模作爲最後的選擇,直到我們達到應用程序無法進一步擴大的階段。 – iarchitect 2013-05-08 13:07:06

+0

那麼你的問題應該改變爲效率而不是可擴展性,因爲你已經擁有了它。如果您將問題更改爲針對Excel文檔轉換的特定問題,您將得到更好的答案。 – computinglife 2013-06-27 06:03:29

回答

0

用戶可以通過該網站上傳excel文件。他們的憑證也通過了。後端將此請求註冊到數據庫中,並返回請求標識(Guid或其他)。該過程結束。

Windows服務正在運行並輪詢數據庫,尋找新的請求進行處理。你可以利用Quartz.NET來安排一些處理請求的並行作業。此請求處理(處理excel文件和生成報告)委派給負載均衡的WCF服務,因此您擁有的WCF服務越多,可以調度更多並行Quartz作業。如果處理了請求,可以安排另一種Quartz作業發送郵件。

該網站定期輪詢以查看請求(或特定請求)的狀態和進度;並管理它們。對於已完成報告的請求可以下載。

我認爲這是一個非常可擴展的解決方案,也是鬆耦合的。

+0

親愛的L-Three謝謝你的建議。看起來可行和下降的解決方案,我們如何確保數據庫操作的可擴展性?像選擇,插入,更新大規模?所有這些服務是否同時訪問數據庫?它會不會太多的稅收數據庫?同樣,我們如何確保來自客戶端的這麼多請求得到有效處理,例如解析數據庫? – iarchitect 2013-05-08 09:12:36

+0

我認爲數據庫很少是瓶頸,但這取決於你當然想要做什麼。例如,要處理併發讀/寫操作,請使用正確的鎖定機制(如http://ludwigstuyck.wordpress.com/2013/02/28/concurrent-reading-and-writing-in-an-oracle-database/) ,對於批量插入,使用適當的技術(如http://ludwigstuyck.wordpress.com/2013/02/27/bulk-insert-into-an-oracle-database/)等等。所以嘗試拿出具體的非首先是功能需求,然後進行技術設計。 – 2013-05-13 06:03:24

+0

謝謝,我將其留待進一步評論。 – iarchitect 2013-05-17 11:01:35