58同城的web框架:Argo
歷史,動機(motivation)
Argo起源與58同城的內部web框架wf(web framework)。
目前wf支撐著58同城幾乎所有的web站點,包括wap和手機端的訪問等,現在wf每天處理10億級的請求。經過長時間的運作與運行,證明wf是一個可靠的、高效的web框架。
作為一個有一定規模的互聯網企業,如果在變化的互聯網環境中上線一個項目,在軟件開發中需要在三方面進行平衡:
- 組織/公司,在一個組織內部,需要每個項目開發盡量有統一的風格、架構,學習成本、維護成本等盡可能低;
- 運維,希望每個站點的配置和可執行部分分離,部署的方式相同;
- 項目內部,希望程序員聚焦在業務上,可以快速實現產品需求、響應產品變化。在此基礎上,我們開發了wf。
Argo在wf做了大量優化和重構,以適應各組織軟件開發的個性化需求,提升了系統性能,具有更好的可擴展性。Argo的開源反過來也促進wf2.0的開發。
哲學觀 (philosophy)
- 約定優于配置,減少軟件開發人員需做決定的數量,獲得簡單的好處,而又不失靈活性。Argo體系中有且只有一個組織級約定,規定包的命名,配置文件路徑,日志文件路徑等。組織的約定是不容侵犯,每個項目在組織級約定下工作。組織級約定建議以jar形式下發給各項目。
- 簡單,Argo可以不需要任何配置文件,項目代碼結構簡單,易于維護。
- 紀律,包和類的命名都受組織級約定的控制,任何違反約定的行為可能導致系統無法正常運行。
系統特點 (features)
- SEO友好的URL結構,Argo天然支持RESTful的url結構,并能自動匹配合適的參數;
- 零配置,甚至你不要web.xml就能在tomcat上運行;
- 插拔式組件架構,可以靈活擴張功能;
- 高安全性,提供集群模式下,避免ip欺騙等功能。
系統約定 (convention)
Argo不是一個通用的web框架,一個問題解決方案可能有很多,但在Argo中只提供一種解決方案。Argo在以下約定中工作:
- servlet 3.0環境,主要針對Tomcat 7.x;
- 基于guice的Ioc,組織和項目可以各提供一個module注入模塊,而且module的命名必須符合約定;
- maven依賴,項目的代碼體系和maven默認代碼體系一致,maven以插件提供開發過程中所需要的開發運行環境(jetty:run或tomcat7:run)。
項目主頁:http://www.baiduhome.net/lib/view/home/1363679118484
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!