LNMP經驗分享

2021-06-23 08:24:44 字數 1596 閱讀 2573

王帥:目前的saas平台架構根據產品和量級的需求經歷過多次演變,最終演化成了現在的結構。

由最初的快慢分離和簡單容災,增強容災和提供灰度發布能力,逐漸抽取統一資料層/減少無用請求,強化多set模型和立體監控,到最後統一資料儲存。最終演變為:dns+gslb+lvs/tgw+業務邏輯機(nginx+php-fpm+apc)+中間層和非同步系統(phpserver)+cache層+uds、redis、ckv等儲存層。 

1. 基於phpserver的中間層:採用php作為udp/tcp server提供中間層資料服務,每秒可以處理請求2萬次以上。中間層封裝大部分快取和資料邏輯,因為由php擴充套件和純php開發,開發人員無需關心記憶體洩露和core的問題,極大的提高了開發效率。同時我們實現了cpu親和性繫結,php的epoll支援,訊息佇列,unix socket等linux底層特性提高server的吞吐能力。

2. 基於c++的php擴充套件:部分邏輯用c++封裝成擴充套件,提高執行效率。公司級業務對接大部分使用c++為php編寫擴充套件,是php與公司級c/c++ api的產品無縫對接。

3. phpserver旁路系統:使php的pctnl,主程序管理和監控所有的業務程序,所有後台伺服器天然支援自動拉起,接入便利,極大提高了後台伺服器的可服務範圍。

4. xhprof:可以在運營環境部署的效能調優外掛程式。為提高qps,降低伺服器cpu,提高機器利用率在業務層級提供了可靠的仰仗。

5. 資料上報和監控:

6. cache技術:採用apc進行php的opcode快取。利用共享記憶體進行第一層cache,快取高頻資料,採用業界常見的memcache、redis進行分布式cache,按照資料單元組合分為多級cache。採用公司級別的ckv作為落地cache方案。 

7. 資料庫技術:

8. yii框架:

9. 前端技術:

10. 前端系統:自建nodejs+uls(海量log系統)上報js的錯誤,使我們對使用者瀏覽器可能出現錯誤瞭如指掌。前端**發布前對模板檔案預編譯(arttemplate),同時多個靜態資源檔案合併和壓縮(combo機制),推送到cdn,加速使用者側的載入。使用公司級oz測速系統,能夠了解全國的接入速度,針對性的優化伺服器拓撲。

csdn:如此規模下,平台打造的主要挑戰在什麼地方?貴團隊在這些技術上都做了哪些方面的調優?能達到乙個什麼樣的級別?

另外,很多查詢和操作需要以企業為單位進行操作,在cache設計上我們支援了多級的cache模型。

大部分公司的上班時間是一致的,因此很多請求會在早高峰上班時撞車,我們也一直致力與削峰和減少高峰期cpu佔用率。

採用上述調優後,我們團隊在流量增大2倍的前提下未加一台機器,cpu保持不變。

前端方面,在大型企業人員規模巨大,依然要展現整個公司組織的情況下,我們進行前端json檔案本地快取,對部門和成員資料查詢檢索演算法方面做了演算法優化,能夠基於拼音首字母、多音字、id、中文等進行檢索,該檢索演算法已經申請專利。在cgi方面也做了按場景和許可權分離,分批拉取,在乙個頁面上使用者量達到3萬級別,也能保證使用者體驗和載入速度。

搭建 lnmp 安裝經驗積累

為了使安裝速度更快,在這裡我選擇網易映象源 首先備份 etc yum.repos.d centos base.repo mv etc yum.repos.d centos base.repo etc yum.repos.d centos base.repo.backupcd etc yum.repo...

測試經驗分享

測試經驗分享 做測試快兩年半的時間了,在測試過程中接觸到了不少的事情,總結下自己測試工作中的一些經驗吧 1 充分理解需求,找出需求缺陷。測試人員拿到需求 設計文件後,應積極地與需求 設計人員進行溝通確認,並及時地提出自己對相關文件的疑問,這樣做的好處一方面在於幫助測試人員充分理解需求,以保證設計全面...

面試經驗分享

到今天,自己的工作算是告一段落了,恰逢國慶,就宅在實驗室把這乙個月以來的面試經驗分享一下。cvte 廣州視源 c c 研發工程師 覆面 這一面明顯不怎麼問基礎的東西了,主要考察專案和隨機應變能力。綜合面 兩人一起面,還是人手不夠,時間緊的原因 兩天之後才收到通知,不過還要去一趟公司實習一段時間才能確...