2011-04-14 43 views
0

我現在正在開發一個用於實時和歷史跟蹤Web服務的大型後端系統。
我在Python方面經驗豐富,打算將它與sqlalchemy(MySQL)一起用於開發後端。
我沒有任何開發健壯和可持續的後端系統的經驗,我想知道你們是否能指出我關於後端設計模式的一些文檔/書籍?我基本上需要通過實時查詢不同的服務(通過HTML/SOAP/JSON)將數據提供給數據庫,並保留這些數據的歷史記錄。Python後端設計模式

謝謝!

回答

1

你能更精確地定義「後端」嗎?通常,在web開發中,我遵循MVC'ish結構,其中我的「前端」,html/css/js和處理顯示的代碼與我的「後端」模型(業務對象和數據持久性;數據庫)。

我喜歡Django的模型/視圖/模板的方法:

http://docs.djangoproject.com/en/dev/faq/general/#django-appears-to-be-a-mvc-framework-but-you-call-the-controller-the-view-and-the-view-the-template-how-come-you-don-t-use-the-standard-names

但是,你還沒有真正確定你所說的「後端」的意思所以它很難對設計模式提出建議。你說你對Python有經驗,你有沒有開發過數據庫驅動的Web應用程序?

更新基於您的評論

,我不能幫助我一樣沒有太多的經驗做「後臺」這樣的。但是,看到您如何從網絡獲取資源,您的延遲/吞吐量將會非常高。因此,爲了提高整體效率,您將希望擁有可以運行多個線程或具有相當高併發性的進程的內容。我建議你檢查出這個線程的答案(和搜索類似的):

Concurrent downloads - Python

具體來說,我發現下面的遞歸web服務器和實例的例子中它可能會是一個很好的開始您的解決方案:

http://eventlet.net/doc/examples.html#recursive-web-crawler

至於採取這一想法,然後把它變成一個強大的/連續的過程,這將取決於你的很多平臺以及你如何做錯誤處理上。基本上是:

  • 來看,它在一個循環中,並確保你處理這個可能被拋出
  • 有某種過程監控你的工作進程殺/重新啓動它,如果它掛起或死亡
  • 作任何錯誤確保你有一個監控解決方案來通知你它是否停止工作(nagios等)

保持事物「健壯」的最好方法之一是儘可能簡單(而不是簡單化)。如果您所做的只是從網絡中獲取信息,以某種方式解析信息,然後將該信息存儲在數據庫中,然後嘗試保持簡單的過程。不要增加不必要的複雜性以使其更加健壯。如果你最終得到一個200行的腳本,它可以做你想做的,太棒了!

+0

感謝您的迴應!我的系統包含3個前端,數據庫和後端。數據由後端不斷獲取並插入到數據庫中,數據由前端同時顯示。所以後端是一個無限的腳本,將數據從互聯網上提取出來並寫入數據庫。我開發了寫入數據庫的Python腳本,但沒有任何東西可以無限運行,也沒有什麼東西必須設計得非常好,並且功能強大。謝謝! – Raiders 2011-04-14 23:13:35

+1

@Raiders:請勿在評論中發佈此類事實。請**更新**有關信息的問題。 – 2011-04-15 03:07:54

0

使用Apache,Django和Piston。

使用REST作爲協議。

儘量少寫代碼。

Django模型,表單和管理界面。

您的資源的活塞包裝。

+0

非常感謝你!你能澄清django怎麼會在這裏發揮作用嗎?我過去使用它來編寫實際的網站,但它有它自己的數據模型,我需要使用MySQL。這可能嗎?關於活塞,這將是我的系統的一個獨立的部分,運行一個API的權利? – Raiders 2011-04-15 12:47:27

+0

@Raiders:「它有自己的數據模型,我需要使用MySQL」?我不明白這個問題。 Django使用MySQL作爲後端。活塞是Django的一部分 - 它支持RESTful訪問Django模型對象。 – 2011-04-15 13:08:54

+0

閱讀更多,我現在明白了。但是我真的不知道如何將django作爲一個常量運行後端框架 - 我需要我的系統實時運行24/7。閱讀django,我沒有看到表單在我的系統中起作用,也不知道如何編寫非請求服務的django系統。再次感謝! – Raiders 2011-04-15 13:11:52