58同城的web框架:Argo

jopen 11年前發布 | 16K 次閱讀 Argo Web框架

歷史,動機(motivation)

Argo起源與58同城的內部web框架wf(web framework)。

目前wf支撐著58同城幾乎所有的web站點,包括wap和手機端的訪問等,現在wf每天處理10億級的請求。經過長時間的運作與運行,證明wf是一個可靠的、高效的web框架。

作為一個有一定規模的互聯網企業,如果在變化的互聯網環境中上線一個項目,在軟件開發中需要在三方面進行平衡:

  1. 組織/公司,在一個組織內部,需要每個項目開發盡量有統一的風格、架構,學習成本、維護成本等盡可能低;
  2. 運維,希望每個站點的配置和可執行部分分離,部署的方式相同;
  3. 項目內部,希望程序員聚焦在業務上,可以快速實現產品需求、響應產品變化。在此基礎上,我們開發了wf。

Argo在wf做了大量優化和重構,以適應各組織軟件開發的個性化需求,提升了系統性能,具有更好的可擴展性。Argo的開源反過來也促進wf2.0的開發。

哲學觀 (philosophy)

  1. 約定優于配置,減少軟件開發人員需做決定的數量,獲得簡單的好處,而又不失靈活性。Argo體系中有且只有一個組織級約定,規定包的命名,配置文件路徑,日志文件路徑等。組織的約定是不容侵犯,每個項目在組織級約定下工作。組織級約定建議以jar形式下發給各項目。
  2. 簡單,Argo可以不需要任何配置文件,項目代碼結構簡單,易于維護。
  3. 紀律,包和類的命名都受組織級約定的控制,任何違反約定的行為可能導致系統無法正常運行。

系統特點 (features)

  1. SEO友好的URL結構,Argo天然支持RESTful的url結構,并能自動匹配合適的參數;
  2. 零配置,甚至你不要web.xml就能在tomcat上運行;
  3. 插拔式組件架構,可以靈活擴張功能;
  4. 高安全性,提供集群模式下,避免ip欺騙等功能。

系統約定 (convention)

Argo不是一個通用的web框架,一個問題解決方案可能有很多,但在Argo中只提供一種解決方案。Argo在以下約定中工作:

  1. servlet 3.0環境,主要針對Tomcat 7.x;
  2. 基于guice的Ioc,組織和項目可以各提供一個module注入模塊,而且module的命名必須符合約定;
  3. maven依賴,項目的代碼體系和maven默認代碼體系一致,maven以插件提供開發過程中所需要的開發運行環境(jetty:runtomcat7:run)。

項目主頁:http://www.baiduhome.net/lib/view/home/1363679118484

     本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
     轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
     本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!