一個(gè)百萬(wàn)級(jí)PHP站點(diǎn)的網(wǎng)站架構(gòu),你了解多少?
2021-07-14
了解了全球最大PHP站點(diǎn)的后臺(tái)技術(shù),今天我們來(lái)了解百萬(wàn)級(jí)PHP站點(diǎn)的網(wǎng)站架構(gòu):.de。 .de 是德國(guó)的一個(gè)社交網(wǎng)站。它是一個(gè)相對(duì)較小的站點(diǎn),但它具有良好的架構(gòu)并集成了許多技術(shù),例如 PHP、Red5 和。
.de 目前擁有 200 萬(wàn)注冊(cè)用戶,20,000 并發(fā)用戶,每天 200,000 條私信,每天 250,000 次登錄。項(xiàng)目組有 11 名開發(fā)人員、2 名設(shè)計(jì)師和 2 名系統(tǒng)管理員。該網(wǎng)站的商業(yè)模式采用免費(fèi)增值模式,用戶可以使用搜索用戶、給朋友發(fā)送消息、上傳圖片和視頻等功能。
如果用戶想要享受無(wú)限制的發(fā)送消息和上傳圖片,他們必須根據(jù)自己的需要支付不同類型的會(huì)員服務(wù)。網(wǎng)站上的視頻聊天和其他服務(wù)也使用相同的策略。
.de 所有的服務(wù)都是基于服務(wù)的。前端有兩臺(tái)服務(wù)器,在高峰期提供每分鐘 150,000 個(gè)請(qǐng)求的負(fù)載。每臺(tái)機(jī)器都有四年的使用壽命,并且只有一個(gè) CPU 和 3GB 內(nèi)存。 .de 擁有三個(gè)獨(dú)立的圖像服務(wù)器,每分鐘為 *...de 提供 80,000 個(gè)請(qǐng)求。
架構(gòu)中一個(gè)很酷的設(shè)計(jì)是處理了大量請(qǐng)求,因此請(qǐng)求從緩存中獲取內(nèi)容,而無(wú)需直接訪問(wèn) PHP 機(jī)器。比如用戶信息頁(yè)面(user)就是網(wǎng)站上需要集中處理的內(nèi)容。如果所有的用戶信息頁(yè)面都緩存在上面,那么請(qǐng)求直接從上面獲取內(nèi)容。 .de 每分鐘可以處理 8000 個(gè)請(qǐng)求。
架構(gòu)中有三個(gè)圖片服務(wù)器,提供本地圖片緩存,用戶上傳圖片到中央文件服務(wù)器。當(dāng)向這三者之一請(qǐng)求圖像時(shí),如果該圖像在服務(wù)器本地不存在,則會(huì)從中心文件服務(wù)器下載到服務(wù)器進(jìn)行緩存和服務(wù)。這種負(fù)載均衡的分布式圖像服務(wù)器架構(gòu)設(shè)計(jì)可以減少主存儲(chǔ)設(shè)備的負(fù)載。
當(dāng)你到達(dá)這里時(shí),很多人可能會(huì)覺得這些有點(diǎn)難以理解。沒關(guān)系。我為大家準(zhǔn)備了一套優(yōu)質(zhì)的PHP教程,涵蓋了學(xué)習(xí)教程等。如果你已經(jīng)知道并且想精通高級(jí)中級(jí)和高級(jí)PHP,我還有一個(gè)專注于高級(jí)和高級(jí)PHP的教程。點(diǎn)擊下方標(biāo)題鏈接獲取方法!
全套框架,全套框架教程分享,PHP程序員受益!
PHP開發(fā)三年,只知道增刪改查?那是因?yàn)槟氵€沒有規(guī)劃好的php學(xué)習(xí)路線
PHP-FPM
該網(wǎng)站在 PHP-FPM 上運(yùn)行。有28臺(tái)雙CPU、6GB內(nèi)存的PHP機(jī)器,每臺(tái)機(jī)器運(yùn)行100個(gè)PHP-FPM工作線程。在啟用 APC 的情況下使用 PHP5.3.x。 PHP5.3 可以減少 30% 以上的 CPU 和內(nèi)存使用。
程序代碼基于.2框架開發(fā)。一是可以利用外部資源,二是可以提高項(xiàng)目開發(fā)進(jìn)度,同時(shí)讓新開發(fā)者更容易加入到知名框架的團(tuán)隊(duì)中。雖然沒有什么是完美的,但您可以從框架中獲得很多好處,讓團(tuán)隊(duì)可以更加專注于 .de 的業(yè)務(wù)開發(fā)。
網(wǎng)站的性能得到優(yōu)化和使用。這是一個(gè)開源庫(kù)。該框架非常易于個(gè)性化和配置,并且可以緩存最昂貴的服務(wù)器計(jì)算。
是主要站點(diǎn)。網(wǎng)站有幾臺(tái)服務(wù)器:一臺(tái)4CPU,32GB的服務(wù)器存儲(chǔ)用戶相關(guān)信息,如基本信息、照片描述信息等。這臺(tái)機(jī)器已經(jīng)用了4年了,下一步是更換共享集群設(shè)計(jì)仍然基于這個(gè)系統(tǒng)來(lái)簡(jiǎn)化數(shù)據(jù)訪問(wèn)代碼。數(shù)據(jù)按照用戶ID進(jìn)行分區(qū),因?yàn)榫W(wǎng)站中的大部分信息都是以用戶為中心的,比如照片、視頻和消息。
共有三臺(tái)服務(wù)器,以主-從-從的配置結(jié)構(gòu)提供用戶論壇服務(wù)。從服務(wù)器負(fù)責(zé)在網(wǎng)站上存儲(chǔ)自定義消息。截至目前,已有2.50 億條消息。另外四臺(tái)機(jī)器是主從配置關(guān)系。另外在NDB組中配置了4臺(tái)機(jī)器,為用戶訪問(wèn)統(tǒng)計(jì)等密集寫操作數(shù)據(jù)提供服務(wù)。
數(shù)據(jù)表設(shè)計(jì)盡量避免關(guān)聯(lián)操作,緩存盡可能多的數(shù)據(jù)。當(dāng)然,數(shù)據(jù)庫(kù)的結(jié)構(gòu)規(guī)范已經(jīng)被徹底破壞了。因此,為了方便查找,數(shù)據(jù)庫(kù)設(shè)計(jì)創(chuàng)建了一個(gè)數(shù)據(jù)挖掘表。大多數(shù)表都是類型表php大型網(wǎng)站技術(shù)架構(gòu),可以提供快速搜索?,F(xiàn)在的問(wèn)題是越來(lái)越多的表被完全鎖定。 .de 正在考慮遷移到存儲(chǔ)引擎。
網(wǎng)站架構(gòu)中的應(yīng)用相當(dāng)多,超過(guò)45GB的緩存和51個(gè)節(jié)點(diǎn)。緩存會(huì)話、視圖緩存、函數(shù)執(zhí)行緩存等。架構(gòu)中有一個(gè)系統(tǒng)可以在記錄被修改時(shí)自動(dòng)將數(shù)據(jù)更新到緩存中。未來(lái)改進(jìn)緩存更新的一個(gè)可能解決方案是使用新的 Hash API 或。
2009 年年中開始在架構(gòu)中使用它。這是一個(gè)很好的消息傳遞解決方案,易于部署和集成到此架構(gòu)中。兩臺(tái)服務(wù)器在 LVS 后面運(yùn)行。在上個(gè)月,更多的東西被整合到隊(duì)列中,這意味著 28 個(gè) PHP 服務(wù)器每天同時(shí)處理 500,000 個(gè)請(qǐng)求。向此隊(duì)列發(fā)送日志、電子郵件通知、系統(tǒng)消息、圖片上傳等。
使用PHP-FPM中的st()函數(shù)集成隊(duì)列消息,可以異步發(fā)送消息到隊(duì)列。當(dāng)系統(tǒng)需要向用戶發(fā)送 HTML 或 JSON 格式的響應(yīng)時(shí),會(huì)調(diào)用該函數(shù),這樣用戶就不必等到 PHP 腳本清理完畢。
該系統(tǒng)可以改進(jìn)架構(gòu)資源管理。例如,在高峰期,該服務(wù)每分鐘可以處理 1,000 個(gè)登錄請(qǐng)求。這意味著對(duì)用戶表有 1000 次并發(fā)更新,以節(jié)省用戶的登錄時(shí)間。由于使用了隊(duì)列機(jī)制php大型網(wǎng)站技術(shù)架構(gòu),這些查詢可以以相反的順序運(yùn)行。如果需要提高處理速度,只需要增加更多的隊(duì)列處理器即可。您甚至可以在不修改任何配置或部署新節(jié)點(diǎn)的情況下向集群添加更多服務(wù)器。
日志存儲(chǔ)在一臺(tái)機(jī)器上運(yùn)行。在本機(jī)上,您可以根據(jù)模塊/行為,或根據(jù)錯(cuò)誤類型等查詢/分組日志,這對(duì)于定位問(wèn)題非常有用。在使用日志聚合服務(wù)之前,要一一登錄PHP服務(wù)器嘗試通過(guò)日志分析定位問(wèn)題,非常麻煩?,F(xiàn)在所有的日志都被收集到隊(duì)列中并存儲(chǔ)在隊(duì)列中,這樣可以集中進(jìn)行問(wèn)題檢查和分析。
網(wǎng)站使用收集實(shí)時(shí)網(wǎng)站信息和統(tǒng)計(jì)數(shù)據(jù)。從請(qǐng)求每個(gè)模塊/行為到命中和未命中、狀態(tài)監(jiān)控、Unix 負(fù)載等。該服務(wù)平均每分鐘有 4800 次更新操作。實(shí)踐證明,監(jiān)控網(wǎng)站上發(fā)生的事情非常有用。其簡(jiǎn)單的文本協(xié)議和繪圖功能,可輕松即插即用,適用于任何需要監(jiān)控的系統(tǒng)。
一件很酷的事情是使用同時(shí)受監(jiān)控的站點(diǎn)的兩個(gè)版本。 1 月份部署了新版本的框架,將之前的代碼部署為備份。這意味著該網(wǎng)站可能面臨性能問(wèn)題。所以可以用來(lái)在線比較兩個(gè)版本。
發(fā)現(xiàn)新版本上的Unix負(fù)載表比較高,于是通過(guò)兩個(gè)版本的性能分析找出問(wèn)題所在。
紅5
網(wǎng)站還為用戶提供兩種視頻服務(wù),一種是用戶自己上傳的視頻,一種是視頻聊天、用戶視頻互動(dòng)和分享。到2009年年中,為用戶提供每月17TB的流量服務(wù)。
是一個(gè)書面的分布式基準(zhǔn)分析工具。在.de網(wǎng)站中,主要用于HTTP基準(zhǔn)分析和與其他存儲(chǔ)系統(tǒng)的對(duì)比分析()。使用系統(tǒng)記錄主服務(wù)器的流量,然后將其轉(zhuǎn)換為基準(zhǔn)會(huì)話。然后流量被回放,成千上萬(wàn)的并發(fā)用戶訪問(wèn)實(shí)驗(yàn)室的服務(wù)器。這樣就可以非常接近實(shí)驗(yàn)環(huán)境中的真實(shí)場(chǎng)景。