百度貼吧LAMP解決方案

2021-06-15 01:43:59 字數 1969 閱讀 4538

貼吧是功能性產品,唯快不破是永恆的準則,這一特點決定了快速迭代是需要解決的關鍵性問題。快速迭代,分解開來有如下部分:開發階段,快速開發;測試階段,包含了環境快速搭建、自動化測試工具;運維階段,包含了集群管理技術、自動化運維工具;同時,這三方面的工作需要乙個整體性的解決方案銜接起來。

早期的貼吧,作為乙個高效能社群,功能相對單一,全部採用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架構方面,需要更多的在規範化、平台化上下功夫。規範之後才能開展這種自動化的工作提高效率;平台化可以把各種規範固化下來,提供自動化的支援。

[from:

python百度貼吧發帖簽到 百度貼吧簽到指令碼

本指令碼為我從網上各渠道蒐集到的簽到指令碼的雜交 如果不需要日誌則把帶 日誌記錄 的行刪除即可 from requests import session from time import time 日誌記錄 start time time 資料 log path f e data sign log ...

百度貼吧爬蟲

encoding utf 8 import urllib.request import urllib.parse import time import random def load page url 通過url來獲取網頁內容jfa param url 待獲取的頁面 return url對應的網頁內...

百度貼吧10億量級LAMP架構分享

貼吧是功能性產品,唯快不破是永恆的準則,這一特點決定了快速迭代是需要解決的關鍵性問題。快速迭代,分解開來有如下部分 開發階段,快速開發 測試階段,包含了環境快速搭建 自動化測試工具 運維階段,包含了集群管理技術 自動化運維工具 同時,這三方面的工作需要乙個整體性的解決方案銜接起來。早期的貼吧,作為乙...