整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          百萬pv級PHP網站架構和高并發架構方案,PHP程序員必掌握

          了解過世界最大的PHP站點,Facebook的后臺技術后,今天我們來了解一個百萬級PHP站點的網站架構:Poppen.de。Poppen.de是德國的一個社交網站,相對Facebook、Flickr來說是一個很小的網站,但它有一個很好的架構,融合了很多技術,如 Nigix、MySql、CouchDB、Erlang、Memcached、RabbitMQ、PHP、Graphite、Red5以及Tsung。

          Poppen.de目前有200萬注冊用戶數、2萬并發用戶數、每天20萬條私有消息、每天25萬登錄次數。而項目團隊有11個開發人員,兩個設計,兩個系統管理員。該站點的商業模式采用免費增值模式,用戶可以使用搜索用戶、給好友發送消息、上載圖片和視頻等功能。

          如果用戶想享受不受限制發送消息和上載圖片,那么就得根據需要支付不同類型的會員服務,視頻聊天及網站其他服務也采用同樣的策略。

          Nginx

          Poppen.de 所有的服務都是基于Nginx服務上的。前端有兩臺Nginx服務器在高峰期提供每分鐘15萬次請求的負載,每個機器已經有四年壽命,并且只有一個CPU 和3GB RAM。Poppen.de擁有三臺獨立的圖像服務器,由三臺Nginx服務器為*.bilder.poppen.de提供每分鐘8萬次請求服務。

          Nginx 架構中一個很酷的設計就是有很多請求是由Memcached處理的,因此請求從緩存中獲取內容而不需要直接訪問PHP機器。比如,用戶信息頁(user profile)是網站需要密集處理的內容,如果把用戶信息頁全部緩存到Memcached上,那么請求直接從Memcached上獲取內容。 Poppen.de的Memcached每分鐘可以處理8000次請求。

          架構中有三個Nginx圖像服務器提供本地圖像緩存,用戶上載圖 像到一個中央文件服務器。當向這三個Nginx之一中請求圖像時,如果服務器本地中沒有存在該圖像,則從中央文件服務器下載到該服務器上作緩存并提供服 務。這種負載均衡的分布式圖像服務器架構設計可以減輕主要存儲設備的負載。

          到了這里可能很多人會覺得這些有些難懂, 沒關系,我為大家準備了一套精品PHP教程,里面涵蓋Nginx,Memcached學習教程,如果你已經會了,想要精通進階中高級PHP,我這里也有專注于PHP中高級進階的教程,點擊下方標題鏈接即可獲取方法!

          全套laravel框架、ThinkPHP框架全套教程分享,PHP程序員福利!

          PHP開發三年只懂增刪改查?那是你沒有規劃好php學習路線

          PHP-FPM

          該網站運行在PHP- FPM上。共有28臺雙CPU、6GB內存的PHP機器,每個機器上運行100個PHP-FPM的工作線程。使用啟用了APC的PHP5.3.x。 PHP5.3可以降低CPU和內存使用率的30%以上。

          程序代碼是基于Symfony1.2框架之上開發的。一是可以使用外部資源,二是 能夠提高項目開發進度,同時在一個著名的框架上可以讓新開發人員更容易加入到團隊中來。雖然沒有任何事情都是十全十美的,但可以從Symfony框架中得 到很多好處,讓團隊可以更多的精力放在Poppen.de的業務開發上去。

          網站性能優化使用XHProf,這是Facebook開源出來的一個類庫。這個框架非常容易個性化和配置,能夠可以緩存大部分高代價的服務器計算。

          MySQL

          MySQL是網站主要的RDBMS。網站又幾個MySql服務器:一臺4CPU、32GB的服務器存儲用戶相關信息,如基本信息、照片描述信息等。這臺機器已經使用了4 年,下一步計劃會使用共享集群來替換它。目前仍基于這個系統上進行設計,以簡化數據訪問代碼。根據用戶ID進行數據分區,因為網站中大部分信息都是以用戶 為中心的,如照片、視頻、消息等。

          有三臺服務器按主-從-從配置架構提供用戶論壇服務。一臺從服務器負責網站自定義消息存儲,到現在有 2.5億條消息。另外四臺機器為主-從配置關系。另外由4臺機器配置成NDB族群專門服務于密集型寫操作數據,如用戶訪問統計信息。

          數據表設計盡量避免關聯操作,盡可能緩存最多的數據。當然,數據庫的結構化規范已經完全被破壞掉了。因此,為了更容易搜索,數據庫設計創建了數據挖掘表。大部分表是MyISAM型表,可以提供快速查找。現在的問題是越來越多的表已經全表鎖住了。Poppen.de正考慮往XtraDB存儲引擎上遷移。

          Memcached

          網站架構中Memcached應用相當多,超過45GB的高速緩存和51個節點。緩存了Session會話、視圖緩存以及函數執行緩存等。架構中有一個系統 當記錄被修改時可以自動地把數據更新到緩存中去。未來改善緩存更新的可能方案是使用新的Redis Hash API或者MongoDB。

          RabbitMQ

          在 2009年中開始在架構中使用RabbitMQ。這是一個很好的消息解決方案,便于部署和集中到這個架構中去,在LVS后運行了兩臺RabbitMQ服務 器。在上個月,已經把更多的東西集成到該隊列中,意味著同一時刻有28臺PHP服務器每天要處理50萬次請求。發送日志、郵件通知、系統消息、圖像上載等 更多的東西到這個隊列中。

          應用PHP-FPM中的fastcgi_finish_request()函數集成隊列消息,可以把消息異步發 送到隊列中。當系統需要給用戶發送HTML或JSON格式響應時,就調用這個函數,這樣用戶就沒有必要等到PHP腳本清理。

          這個系統可以改善架構資源管理。例如,在高峰期服務每分鐘可以處理1000次登錄請求。這表示有1000并發更新用戶表保存用戶的登錄時間。由于使用了隊列機制,可以 按相反的順序來運行這些查詢。如果需要提高處理速度,只需要增加更多的隊列處理者即可,甚至可以增加更多的服務器到這集群中去,而不需要修改任何配置和部 署新節點。

          CouchDB

          日志存儲CouchDB運行在一臺機器上。在這臺機器上可以根據模塊/行為進行日志查詢 /分組,或者根據錯誤類型等等。這對定位問題非常有用。在使用日志聚合服務CouchDB之前,不得不逐臺登錄到PHP服務器上設法日志分析定位問題,這 是非常麻煩的。而現在把所有的日志集中到隊列中保存到CouchDB中,可以集中進行問題檢查和分析。

          Graphite

          網站使用Graphite采集網站實時信息并統計。從請求每個模塊/行為到Memcached的命中和未命中、RabbitMQ狀態監控以及Unix負載等等。Graphite服務平均每分鐘有4800次更新操作。實踐已經證實要監測網站發發生什么是非常有用的,它的簡單文本協議和繪圖功能可以方便地即插即 用的方式用于任何需要監控的系統上。

          一件很酷的事情是使用Graphite同時監控了網站的兩個版本。一月份部署了Symfony框架新 版本,以前代碼作為一個備份部署。這就意味著網站可能會面臨性能問題。因此可以使用Graphite來對兩個版本在線進行對比。

          發現新版本上的Unix負載表較高,于是使用XHProf對兩個版本進行性能分析,找出問題所在。

          Red5

          網站為用戶也提供了兩種類型的視頻服務,一種是用戶自己上載的視頻,另外一種是視頻聊天,用戶視頻互動和分享。到2009年年中,每月為用戶提供17TB的流量服務。

          Tsung

          Tsung 是一個Erlang編寫的分布式基準分析工具。在Poppen.de網站中主要用于HTTP基準分析、MySQL與其他存儲系統(XtraDB)的對比分 析。用一個系統記錄了主要的MySQL服務器的流量,再轉換成Tsung的基準會話。然后對該流量進行回放,由Tsung產生數以千計的并發用戶訪問實驗 室的服務器。這樣就可以在實驗環境中與真實場景非常接近。

          文主要簡析兩個國產的PHP框架ThinkPHP與SpeedPHP。通過學習發現,它倆在很多方面有著相似但又不同的地方:

          1.單一入口,二者都是單一入口文件。每個app都需要一個入口文件,且只能有一個入口文件。ThinkPHP生而就有多app支持的功能,比如在根目錄下建一個index.php,一個admin.php,其中index.php是前端app的入口,而admin.php則作為后臺app的入口。配置方法類似,只是define(‘APP_PATH’,’apppth’)和define(‘APP_NAME’,’appname’)略有不同而已。SpeedPHP盡管默認支持單app,但通過合理配置模板目錄也可以實現這樣的功能,只是模板自動輸出功能就用不上了,只好手動寫模板輸出代碼。

          2.模板變量賦值和輸出模板。先說ThinkPHP,它給模板變量賦值是這樣的:$this->assign(‘var’,$var2),SpeedPHP中給模板變量賦值使用$this->var=$var2,其中兩個$var都是模板中要使用的變量,$var2則為控制器中的變量。模板輸出兩個框架相同,都使用: $this->display(‘templatepath’) .

          3.數據模型。兩個框架都是在Model中定義,不同的是ThinkPHP在類中幾乎不用寫任何代碼,只要把類名和數據庫名保持一致就行,而SpeedPHP則需要手動指定數據庫表和主鍵。使用的時候都要先實例化。

          4.模板方面:ThinkPHP支持多種模板,默認使用自已研發的Think模板系統,據說比Smarty要快,這點無從考證;SpeedPHP支持的模板較少,默認使用smarty。

          5.數據處理:個人感覺ThinkPHP的數據處理要比SpeedPHP強大的多,不僅表現在查詢語言上,而且它支持在多個模型中動態切換且不丟失數據。

          6.安全性方面:ThinkPHP自身集成了安全驗證功能,SpeedPHP沒有,需自己實現。

          總之,個人認為SpeedPHP的性能優于ThinkPHP了,因此在項目開發中首選后者較為妥當。

          轉載來自http://blog.kiccp.com/321.html

          本站文章除注明轉載外,均為本站原創或翻譯

          發一個管理后臺,工作往往是繁瑣而又重復的:用戶登錄、權限管理、圖表展示、控制面板、增刪改查等等,同時,需求也是多種多樣的:電商系統、問答社區、客服系統、倉庫管理等等,五花八門。能不能有一個框架,能直接搭建好項目骨架,讓開發者專心于業務開發呢?FastAdmin或許是一個不錯的選擇。


          簡介

          FastAdmin,是 karson 在 Gitee 上開源的后臺開發框架,倉庫位于 https://gitee.com/karson/fastadmin,目前版本為 v1.3.3.20220121。

          FastAdmin 基于 ThinkPHP+Bootstrap,能夠快速進行管理后臺的開發。FastAdmin提供了強大的命令行工具,能夠一鍵生成代碼、一鍵管理插件等,提供了豐富的插件選擇,基于MVC設計模式,基于模塊化設計,共分為:前臺、API、后臺和公共等四大部分等。


          使用

          FastAdmin 的特性包括:

          • 基于Auth驗證的權限管理系統
          • 支持無限級父子級權限繼承,父級的管理員可任意增刪改子級管理員及權限設置
            • 支持單管理員多角色
            • 支持管理子級數據或個人數據
          • 強大的一鍵生成功能
            • 一鍵生成CRUD,包括控制器、模型、視圖、JS、語言包、菜單、回收站等
            • 一鍵壓縮打包JS和CSS文件,一鍵CDN靜態資源部署
            • 一鍵生成控制器菜單和規則
            • 一鍵生成API接口文檔
          • 完善的前端功能組件開發
            • 基于AdminLTE二次開發
            • 基于Bootstrap開發,自適應手機、平板、PC
            • 基于RequireJS進行JS模塊管理,按需加載
            • 基于Less進行樣式開發
          • 強大的應用插件擴展功能,在線安裝卸載升級應用插件
          • 通用的會員模塊和API模塊
          • 共用同一賬號體系的Web端會員中心權限驗證和API接口會員權限驗證
          • 二級域名部署支持,同時域名支持綁定到插件
          • 支持大文件分片上傳、分片直傳、剪切板粘貼上傳、拖拽上傳,進度條顯示,圖片上傳前壓縮
          • 支持列表跨頁選擇記憶、分頁大小記憶、左右固定列
          • 強大的應用模塊支持(CMS、簡單商城、知識付費問答、在線投票系統、Shopro商城、Fastflow工作流、CRM客戶關系管理)
          • 支持CMS、博客、知識付費問答無縫整合Xunsearch全文搜索
          • Uniapp微信小程序支持(CMS小程序、活動報名小程序、民宿酒店預訂小程序、問答小程序、簡單商城小程序、Shopro商城小程序)
          • 整合第三方短信接口(阿里云、騰訊云短信)
          • 無縫整合第三方云存儲(七牛云、阿里云OSS、又拍云)功能
          • 第三方富文本編輯器支持(Summernote、Nkeditor、百度編輯器)
          • 第三方登錄(QQ、微信、微博)整合
          • 第三方支付(微信、支付寶)無縫整合,微信支持PC端掃碼支付
          • 豐富的插件應用市場


          使用FastAdmin,首先進行安裝,要求環境如下:

          PHP >= 7.1 且 <= 7.3 (推薦PHP7.1版本)
          Mysql >= 5.6 (需支持innodb引擎)
          Apache 或 Nginx
          PDO PHP Extension
          MBstring PHP Extension
          CURL PHP Extension
          Git (用于源代碼的版本管理)
          Node.js (可選,用于安裝Bower和LESS,同時打包壓縮也需要使用到)
          Composer (可選,用于管理第三方擴展包)
          Bower (可選,用于管理前端資源)
          Less (可選,用于編輯less文件,如果你需要增改css樣式,建議安裝上)

          下載安裝包后,

          1. 將下載的完整包解壓到你的站點項目目錄,不支持放在二級目錄。
          2. 添加站點并綁定到項目中的public目錄為運行目錄。
          3. 訪問你的項目域名進行安裝,比如:https://demo.fastadmin.net/install.php 。
          4. 為了安全,安裝完成后會在public目錄生成隨機后臺入口,請通過隨機后臺入口登錄管理后臺。

          安裝完成后,就能進入后臺了:

          FastAdmin基于ThinkPHP5強大的命令行功能擴展了一系列命令行功能,可以很方便的一鍵生成CRUD、生成權限菜單、壓縮打包CSS和JS、啟用禁用插件等功能,如

          //生成fa_test表的CRUD
          php think crud -t test
          //生成fa_test表的CRUD且一鍵生成菜單
          php think crud -t test -u 1
          //刪除fa_test表生成的CRUD
          php think crud -t test -d 1
          //生成fa_test表的CRUD且控制器生成在二級目錄下
          php think crud -t test -c mydir/test

          在FastAdmin中默認有四個應用模塊:admin、api、common、index,你也可以擴展開發自己的應用模塊。

          • 后臺模塊(admin)是FastAdmin中的核心模塊,后臺模塊又分為系統配置、附件管理、分類管理、插件管理等多個功能模塊,更多的功能模塊可以在插件管理中自由的安裝和卸載。后臺的前端是基于AdminLTE和Bootstrap進行了大量二次開發,采用RequireJS進行JS模塊化管理和加載。
          • 前臺模塊(index)的結構和后臺功能類似,具體請參考后臺模塊的章節
          • 公共模塊(common)是一個特殊的模塊,默認是禁止直接訪問的,一般用于放置一些公共的類或其它模塊的繼承基類等。
          • Api模塊(api)通常用于對接APP,用于向APP提供接口,目前FastAdmin暫未提供API相關的插件和文檔,你可以直接參考ThinkPHP5官方的文檔。

          FastAdmin插件豐富,提供了插件市場,能夠隨時獲取各類插件,并直接在后臺進行安裝和管理:


          總結

          FastAdmin 基于 ThinkPHP+Bootstrap,提供了強大的命令行工具,能夠一鍵生成代碼、一鍵管理插件等,提供了豐富的插件選擇,充分利用了ThinkPHP實現了高效可擴展的開發流程,能夠快速完成管理后臺的開發。


          主站蜘蛛池模板: 亚洲色一区二区三区四区| 精品一区二区三区影院在线午夜 | 国产一区二区三区小向美奈子 | 久久久久99人妻一区二区三区| 色一乱一伦一区一直爽| 国产一区韩国女主播| 无码日韩精品一区二区免费| 免费无码VA一区二区三区| 亚洲成在人天堂一区二区| 亚洲AV无码一区二区乱孑伦AS| 久久精品国产亚洲一区二区| 精品一区二区三区中文字幕| 精品aⅴ一区二区三区| 色老板在线视频一区二区 | 天天看高清无码一区二区三区| 精品一区二区三区免费毛片| 国产SUV精品一区二区88L| 人妻内射一区二区在线视频| 亚洲一区日韩高清中文字幕亚洲| 不卡一区二区在线| 国产精品亚洲一区二区三区| 亚洲色无码专区一区| 蜜桃无码AV一区二区| 亚洲国产一区二区三区青草影视 | 理论亚洲区美一区二区三区| 久久国产一区二区| 国产亚洲日韩一区二区三区| 亚洲性日韩精品一区二区三区| 国产精品一区二区久久乐下载| 精品国产乱子伦一区二区三区| 性色AV一区二区三区| 久草新视频一区二区三区| 精品一区二区三区免费视频 | 国产电影一区二区| 人妻体体内射精一区二区| 天堂资源中文最新版在线一区 | 无码人妻精品一区二区三区99仓本| 国产成人片视频一区二区| 日韩电影在线观看第一区| 波多野结衣中文一区二区免费| 国产视频一区二区在线观看|