電商平臺技術架構 多用戶商城 仿天貓 淘寶 亞馬遜 噹噹 阿里巴巴 大數據模塊 低成本運維 高效開發 原

電商平臺多用戶商城系統架構行業現狀

瀏覽全球知名電商機構(天貓 淘寶 亞馬遜 噹噹 阿里巴巴...),包括開源電商軟件(Magento、OpenCart、Xcart、Zencart、Prestashop....),知名的就那幾家或者幾十家乃至幾百家,爲什麼這麼少的可憐?電商技術平臺建設的難度究竟在哪裏?

大多數單位都是慎重的選一款電商軟件(如:Ecshop)來進行二次開發,但是就算這樣,大多企業都停留在修BUG、填前任留下的坑、被所謂的代碼規範給約束的死去活來...

但是隻要提到如淘寶這種多用戶商城系統(也許你會提到.NET、Java,那個成本,也許只有企業領導者才知道到底有多痛!),那少的更是可憐了...

電商平臺多用戶商城系統架構企業困境

中小企業電商想PK亞馬遜、阿里巴巴、天貓、淘寶、京東、噹噹...先不考慮市場、營銷、物流、策劃、貨源,單說說電商技術架構之路,難!難!難!

在中國這片土地上,有不少單位實踐了電商平臺技術架構之路,都想打造自己的電商平臺!卻大多失敗了!

其中不乏各路大神各路專家各路前單位(國企公司、上市公司)牛逼哼哼者精神領袖意見領袖暢想領袖批判領袖預測領袖...

那麼問題來了,爲什麼企業耗費了這麼多的研發資金,招了華麗麗的明星研發隊伍,就是很少有企業真正的打造出可用的企業滿意的電商平臺呢?

我們知道,企業擁有自主版權的多用戶商城系統的電商平臺是多麼重要!

  1. 這是企業的固定技術資產!如虎添翼中的“翼”之一!
  2. 這是企業隨時東山再起的保證之一!
  3. 這是企業領導者出去吹牛逼、拉投資的產品底氣之一!

電商平臺多用戶商城系統架構博主介紹

博主是1個有8年研發經驗的PHP工程師,話說有人理解PHP爲“拍黃片”,所以非誠勿擾的美女都對PHP工程師滅燈了,幸好博主已經有家室了,妹子們,基友們,你們沒機會了...

博主曾經做過一些年頭的外貿電商公司技術平臺主要架構設計、開發者、顧問...

博主曾經有幸經和國企公司技術大牛、上市公司大牛、行業專家(京東、淘寶)都進行過共同碼代碼的屌絲歲月...

電商平臺多用戶商城系統架構通用原則

本文着重以以下原則來打造一個儘可能“摳門“基礎上的牛逼的牛逼型多用戶商城電商平臺!

  1. 多:承載的用戶多
  2. 快:用戶訪問速度快
  3. 好:功能設計好擴展
  4. 省:運維省、開發省、硬件省

電商平臺多用戶商城系統架構原則一:多

電商平臺多用戶商城系統架構之承載更多的用戶

核心思想:資源是有限的,用戶是無限的;

破:每個用戶浪費最少的服務器資源(不浪費更好)方可

  1. 找運維老大(5年+)調優你的服務器參數(Nginx、PHP、Mysql.....)
  2. Mysql做成讀寫分離,並分別調優
  3. 程序邏輯按照用戶所屬企業或地區(華東區)爲單位,必須對海量用戶進行Mysql業務分表
  4. Mysql併發不強、鏈接數很寶貴,盡一切可能不要讓用戶直接和Mysql通信,每個頁面儘可能的少執行SQL語句,儘量走緩存
  5. 系統搜索、篩選、過濾等耗費Mysql資源的業務功能,儘可能的轉化爲Sphinx搜索或MongoDB、Redis這種緩存服務
  6. 內存很貴,CPU很重要,儘可能的保證你每條代碼都是性能最好的,儘量的使用最新版本的系統內置方法!(如更省內存的yield
  7. 避免惡意蜘蛛爬蟲、惡意採集(Demo1Demo2)對系統造成不必要的資源浪費,做好Robots(Demo1Demo2Demo3)惡意蜘蛛爬蟲爬取頻率限制,或者限制每個用戶訪問頻率以及惡意訪問者加入黑名單封號系統,以便讓更多的真實用戶訪問我們的站!
  8. 某些業務如果可以容忍更新延遲的話,建議首先在用戶客戶端先JS、Cookie等保存,最後隔10秒或者每10個步驟在一次性批量同步到服務器,這樣可以減少對服務器資源的消耗!
  9. 業務冗餘數據不建議分散的做在Mysql中,建議做在Redis、MongoDB中,統一管理操作,而且利於大數據統計報表分析! 
  10. 可以保存到用戶客戶端的數據,儘可能的保存到用戶客戶端(Cookie、localStorage、sessionStorage),不要什麼都塞給服務器或者從服務器頻繁讀取...
  11. 如果平臺有大文件下載服務,記得一定要使用X-Sendfile來下載文件給客戶,節省服務器資源!

電商平臺多用戶商城系統架構原則二:快

電商平臺多用戶商城系統架構之響應速度更加快

核心思想:減少用戶等待服務的時間;

破:資源更少(沒有更好),更小,傳輸更快方可

  1. 買更好的服務器、更多的CPU、更大的內存、更好的硬盤、更快的寬帶、更好的域名DNS....
  2. 服務器安裝好全系列最新版 Nginx+PHP(7系列)+Mysql+MongoDb+Redis+Memcached+Sphinx!
  3. 開發技術選擇YAF(PHP的C語言框架)、YAR(PHP Soap RPC功能C語言級框架)、YAC(PHP C語言級的共享內存框架)、Yaconf(PHP C語言級的常住內存的用戶自定義常量)、Taint(PHP C語言級的XSS過濾框架),儘可能的選擇PHP擴展來實現你的業務!沒事多搜搜pecl,多看看手冊
  4. 靜態資源(JS、CSS、小圖標等)一定要放到CDN上,實在窮就用百度等免費的CDN儘可能多的分流靜態文件
  5. 儘可能的減少用戶請求的資源數目(如CSS、JS可以合併輸出,小圖標可以使用CSS圖片精靈的方式減少請求個數)
  6. 服務器設置GZIP等儘可能高的壓縮你的資源輸出
  7. 巧用HTTP協議的狀態碼,配合實現用戶瀏覽器端頁面級緩存,不僅可以更快,而且省很多資源!
  8. 如果實在避免不了Sql,那麼程序上保證每個Sql語句都必須走索引且是高效的,儘量使複合索引和覆蓋索引!必須避免表鎖!
  9. 業務儘量以讀爲主,儘量少的寫操作,如果是日誌捕捉、用戶行爲分析這種與核心業務關係不大的寫操作,強烈推薦寫到Redis、MongoDB!
  10. 一定使用InnoDB引擎(支持行鎖),但是絕對不要使用InnoDB外鍵約束(產生鎖的原因之一),不要使用Event、觸發器(資源殺手)!儘可能少的使用存儲過程(要注意考慮併發)、視圖(大數據測試下發現偶爾不走索引)!
  11. 放棄PHP默認的低效存儲Session機制,用戶Session存儲更改爲存儲到Redis,而且更有利於Session綜合管理(跨域訪問)
  12. 一定要使用PJAX技術,不但有AJAX的優點,還利於SEO,利於跨設備,跨平臺,請求資源更小,更快!
  13. 也許你可以試試MySQL開源存儲引擎TokuDB了,基本可以代替INNODB,而且存儲數據更省空間,插入更快!
  14. 如果你既覺得MYSQL的LIKE ‘%%’慢,又覺得FULLTEXT對中文支持不友好,還覺得專業搜索引擎Sphinx等技術門檻高,那麼可以試試Mysql插件Mysqlcft試試,完美支持FULLTEXT中文搜索,功能和LIKE‘%%’一樣,速度提升數十倍!

電商平臺多用戶商城系統架構原則三:好

電商平臺多用戶商城系統架構之功能設計好擴展

核心思想:功能更全,更強大,開發更方便,交接更容易;

破:設計靈活、簡單可依賴的系統架構

  1. 系統一定要基於Module、Hook機制的(如靈活的控制header),每個工程師只需專注自己的Module和靈活的使用系統資源,功能開發就像搭積木一樣快,給出一定的規則後,模塊還可以外包出去...
  2. 程序類擴展一定要使用工廠模式機制開發(雖然開發過程有點慢,但是使用效率高),隨時可以以業務功能點爲單位廢棄、反轉、升級、排序、擴展、更改功能實現方式等諸多好處
  3. 每個PHP文件必須使用命名空間特性,避免多人協作時候代碼衝突
  4. 每個action下可以系統默認以HTTP提交協議來執行默認方法!利用反射簡單高效(POST請求就執行actionPost,GET請求就執行actionGet...最後在每個具體action裏進行switch判斷執行)
  5. 研發出自己的Cookie分析系統,又利於業務增長等等,業務邏輯參照淘寶、天貓、百度對我們無處不在的用戶喜好分析就知道了
  6. 開發中儘可能的選擇開源軟件作爲開發支撐,首選PHP擴展PECL,其次是搜大神寫的、支持率高的PHP文件寫的類庫,最後纔是自己手動發明寫類庫!(如,博主的原創PHP類庫
  7. 開發中儘可能的使用最新版本的特性,儘可能的保證項目可以安全無痛部署到最新PHP版本!因爲你可以免費的最快的擁有最新版的好處!(當然也有少許壞處 哈)
  8. API儘量使用RESTful架構,返回結果儘量全是JSON格式(JSON利於和JS通信,如果追求性能,可以使用igbinary

電商平臺多用戶商城系統架構原則四:省

電商平臺多用戶商城系統架構成本節省之運維節省

核心思想:讓運維更簡單,更高效,運維成本更低;

破:減少業務複雜度

  1. 多做備份,選擇有一鍵備份功能的服務器
  2. 慎重看待集羣,雞蛋放在1個籃子(推薦:利潤不大的時候,不要分開部署) VS 雞蛋放在多個籃子裏(主流:參考攜程事件)...

電商平臺多用戶商城系統架構成本節省之開發節省

核心思想:用最低的技術門檻、最短的開發時間,開發最牛的業務平臺;

破:系統架構模塊化,互不干擾,手冊人手一份

  1. 做好技術開發共享文檔
  2. 平臺基礎架構好後,只需稍等PHP的小白也可以按照Module來搭積木,因爲每個模塊既是獨立,也是有Hook聯繫的

電商平臺多用戶商城系統架構成本節省之硬件節省

核心思想:在最經濟的硬件上,儘可能的榨乾軟件性能;

破:程序設計要規劃充分、隨時一鍵部署擴充硬件

  1. 儘可能的榨乾軟件(Nginx+PHP(7系列)+Mysql+MongoDb+Redis+Memcached+Sphinx)性能,在利潤產生前乃至用戶量未破百萬(保守估算)的時候,完全可以抗住一陣子了!

問題來了,如果電商平臺訪問量到達一定數據規模且有利潤了,上述仍然解決不了我的訪問量大的問題怎麼辦?

說半天也沒有看到博主提到 反向代理 LVS 主從 熱備 F5 DDOS 監控 容災 負載均衡 分佈式啥的....

OK,一句話:4個選擇

  • 自己是無敵超能大神,時間多,技術好,精力旺盛...自己全部搞定!
  • 招運維團隊花上不小的代價+不小的時間來給你專業定製,架設一套即可!
  • 也許你可以用到阿里雲全套服務產品的級別了!背後是經過數次苛刻實踐的淘寶、天貓、阿里巴巴 雙11 雙12 國慶 過年等真正高手團隊打造的產品!
  • 可以選擇亞馬遜全套服務產品,和阿里雲有什麼區別呢?老外的技術,你懂的!老外的語言,你也懂的!

哈哈,程序設計時候一定要記得用工廠模式哦,而且很多業務接口、參數靈活處理可配置的,到時候好用雲服務來代替本地服務器低效的運算法則!

真正的把1個平臺做活,是很不容易的!且寫且反思! 如果感興趣,可以關注 ,https://github.com/letwang/HookPHP 既是按照上述理念量身打造的一款平臺型框架。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章