貼吧是功能性產品,唯快不破是永恆的準則,這一特點決定了快速迭代是需要解決的關鍵性問題。快速迭代,分解開來有如下部分:開發階段,快速開 發;測試階段,包含了環境快速搭建、自動化測試工具;運維階段,包含了集群管理技術、自動化運維工具;同時,這三方面的工作需要乙個整體性的解決方案銜接 起來。
早期的貼吧,作為乙個高效能社群,功能相對單一,全部採用c語言開發,系統可重用程度低,開發、測試效率低,運維方面的積累也很少。為了提高效 率,開始嘗試 lamp 架構,經過幾年的發展,貼吧已全部遷移到了 lamp。隨著產品規模急劇膨脹,30+ 子系統,150+ 模組,500+ 機器,10億+流量,在 lamp 架構方面積累了很多經驗,逐漸形成了快速迭代的一體化方案。如下圖所示:
該解決方案由開發階段、測試階段、運維階段組成。開發階段又分成接入層、業務邏輯層、儲存層。該解決方案支撐大規模的線上應用,同時保持了快速迭代的特性。基於該解決方案,開發人員能專注於業務邏輯開發,測試人員能專注於持續整合,運維成本能大大降低。
開發
開發方面分為接入層、業務邏輯層、儲存層。
接入層處於瀏覽器和後端服務之間,用來解析 http 協議並組織成相應的協議格式,完成客戶端和伺服器之間的通訊,還包括攻擊防範、頁面快取、負載均衡等多種功能。web server 是其核心組成部分。接入層的目標是通過統一的方案提供簡單可依賴的接入層架構,經過全面調研 nginx 具有通用性強、效率高、功能全面、配置靈活等特點,是 webserver 未來發展的主力軍,確定採用 nginx 統一接入層。
業務邏輯層包含了 php 框架、業務邏輯、lib 庫、互動層。業務邏輯層常常包含一些開發規範,這些規範就像法律一樣,我們不僅要有法可依,還要有法必依。在我們的解決方案中,php 框架=規範+庫,規範比如目錄部署規範、url 規範、配置規範等,這些規範通過相應的庫實現,以達到有法必依的目的。
lib 庫封裝常用的功能。基於這個解決方案,開發者開發應用,只需完成業務邏輯部分。
中間層,如下圖所示,包含在業務邏輯層中,對於業務邏輯層的快速迭代非常重要。中間層對下做互動抽象,支援各種協議遮蔽協議細節;通過資源定位遮蔽部署細節;通過負載均衡提高系統穩定性。中間層對上做介面抽象,支援服務整合、介面適配、公共邏輯。
中間層首先建立系統–子系統–模組的體系,進行服務整合,圖中的 api-lib 就是根據子系統劃分,將各模組的介面(midl: module idl)轉化為子系統介面(sidl: service idl);介面適配,service 的介面通過 sidl 描述,讓介面描述、介面文件、線上**等自動同步,可維護性大大提高,同時通過元資料規範保證全系統的介面一致,易用性大大提高;收斂公共邏輯,對於公共 邏輯,比如許可權邏輯,收斂起來可維護性大大提高。
儲存層,提供各種通用服務、元件。其中的通用資料儲存框架提供通用的資料儲存和訪問解決方案,以一種統一的設計模式來支援大多數資料儲存模組的 設計和實現;統一資料訪問介面,對外部遮蔽資料拆分和儲存的細節;做到資料儲存的良好擴充套件性,通過通用的資料拆分模式來應對資料增長;將具有共性的需求抽 象成通用服務或通用庫,以簡化設計和開發。
基於該解決方案,開發乙個應用只需要:在接入層配置相應的分流,在業務邏輯層開發業務邏輯,使用儲存層合適的服務或基於框架完成資料模組開發。能大大的提高開發效率,支援快速迭代。
測試
測試方面,為了支援快速迭代,必須提高自動化程度。而影響自動化的首要因素就是環境自動構建,常見的問題有:環境複雜,比如關聯關係複雜;環境 搭建代價過大;環境功能不完整等。採用基準環境能解決這一問題,專案上線後自動從 scmpf 更新到基準環境;測試環境/開發環境從基準環境同步。基於基準環境,系統級別的持續整合也成為可能,同時可以集中大量測試工具。
運維
運維方面面臨著很多問題:服務遷移成本高,環境不一致帶來各種回滾,機器利用率不均衡,運維自動化程度低。為了解決這些問題,提出 php 系統運維方案。環境同步方面,主要是**同步的問題,採用運維規範+監控的方案;效能監控方面,基於互動層完成請求狀態、互動性能監控,基於排程中心獲取 機器狀態;機器排程方面,通過排程中心完成動態/半自動機器排程。如下圖所示:
展望
通過該 lamp 解決方案,在開發、測試、運維方面都能極大的提高效率。未來在 lamp 架構方面,需要更多的在規範化、平台化上下功夫。規範之後才能開展這種自動化的工作提高效率;平台化可以把各種規範固化下來,提供自動化的支援。
來自:
www.rtdot.com
百度貼吧10億量級LAMP架構分享
貼吧是功能性產品,唯快不破是永恆的準則,這一特點決定了快速迭代是需要解決的關鍵性問題。快速迭代,分解開來有如下部分 開發階段,快速開發 測試階段,包含了環境快速搭建 自動化測試工具 運維階段,包含了集群管理技術 自動化運維工具 同時,這三方面的工作需要乙個整體性的解決方案銜接起來。早期的貼吧,作為乙...
百度貼吧10億量級LAMP架構分享
貼吧是功能性產品,唯快不破是永恆的準則,這一特點決定了快速迭代是需要解決的關鍵性問題。快速迭代,分解開來有如下部分 開發階段,快速開發 測試階段,包含了環境快速搭建 自動化測試工具 運維階段,包含了集群管理技術 自動化運維工具 同時,這三方面的工作需要乙個整體性的解決方案銜接起來。早期的貼吧,作為乙...
百度貼吧LAMP解決方案
貼吧是功能性產品,唯快不破是永恆的準則,這一特點決定了快速迭代是需要解決的關鍵性問題。快速迭代,分解開來有如下部分 開發階段,快速開發 測試階段,包含了環境快速搭建 自動化測試工具 運維階段,包含了集群管理技術 自動化運維工具 同時,這三方面的工作需要乙個整體性的解決方案銜接起來。早期的貼吧,作為乙...