天天看點

中小型電子商務網站架構

原文:

中小型電子商務網站架構

  一個小型的電子商務網站,例如日交易量5萬訂單以下,或者說每天差不多五千萬個pv左右。我們可以讨論下,整個架構應該如何設計。

業務分離,域名分離

現在好的電子商務網站都是按照業務分開,細化每個業務線。這樣有利于系統的擴充,也有利于對系統的維護。例如:商品可以獨立出來,交易獨立,使用者獨立等等。各個系統之間需要互動的資訊可以通過遠端傳輸來實作。在一個比較有規模的團隊中,最好有個組專門來維護一個獨立的業務,有利于團隊對業務滲透和業務的維護。

由于業務分開,系統分開,當然在域名上也應該分開, 例如:整個網站的域名為www.abcd.com。那商品系統域名就應該為item.abcd.com。交易可以使用order.abcd.com。這樣的好處顯而易見,在通路上就可以分流。很多公司是通過www.abcd.com/item這樣處理,所有流量都統一進入www.abcd.com然後再處理,這樣對主伺服器壓力就非常大。這個道理很簡單。就像一個口小身大的瓶子一樣,水很難灌進去。現在很多電子商務公司都沒有意識到這個問題。這些簡單的方法都沒有注意到。

獨立搜尋引擎

最近幾年很多人都習慣于通過搜尋找到自己喜歡的東西,一個好的網站一定要有獨立的搜尋引擎,分詞要好,實時資料更新最好,最好做成分布式搜尋。為了能夠準确定位商品,對商品一定要有非常完善商品屬性,例如:我在搜尋一件紅色 夏季的衣服,我就會輸入紅色 夏季進去,如果商品沒有顔色屬性,沒有季節屬性,就無法定位到我想要的商品上面。除了完善的商品屬性,還應該建立比較好的推薦搜尋,保持關鍵字推薦,搜尋結果推薦。

搜尋是一個非常龐大和奧妙的課題,本人知之甚少,也不好班門弄斧。我是做java出身,經常使用Lucene也很喜歡Lucene。很多人都誤會Lucene做搜尋不夠強大,其實技術要做好,一樣很強大。twitter就是使用Lucene做搜尋,也比較強大了,熟能生巧。

資料架構

資料架構範圍太大,太廣,起這個标題有點大題小做了。其實一個比較大的系統,最起碼的資料架構要求就是資料庫拆分。垂直劃分很簡單,就按照業務分成不同的資料庫。另外一種是水準劃分,把同一個業務資料劃分到不同的資料。到最後就應該是可以考慮讀寫分離,讀寫分離就好像高速公路一樣,左右車道分開,中間有隔離帶,當然速度就上去了。

在我的部落格上有一篇文章主要講讀寫分離。

緩存資料

緩存是我最喜歡的的技術,也是目前很多系統都會使用到的技術,為了提高系統性能,提高速度,緩存使用必不可少。最有名的莫過于memcache啦,淘寶的tair也很不錯。這些都是大型分布式緩存,其實如果是小型系統,可以自己開發緩存,可以根據業務要求,把對應的資料放到記憶體中,就可以了。其中技巧很多,一切都以合适場景為主。

還有另外一個現在非常流行的技術就是cdn緩存,提供商很多,淘寶比較牛,自己開發cdn,而且架構也非常好。

說到緩存還有靜态頁面緩存,浏覽器用戶端緩存。等等,這些都可以在一定程度上提高性能。

異步通信系統

在一個分布式系統中,系統之間互動必不可免,就會涉及到很多系統之間消息同步,狀态同步,消息記錄等,一個好的異步消息系統,可以很好提高系統的強壯性和擴充性。例如為了保證資料或者狀态一緻性,通過消息系統就可以保證資料一緻。在互動時,向消息隊列中送出對象,再進行系統之間狀态互動。就算系統狀态 失敗消息中也保證了對象的存在。在上面提到的讀寫分離中,就可以通過異步消息系統做資料同步。

完善的系統監控

在一個比較大型的分布式環境中,一定要有監控系統。例如:流量監控,硬體監控,系統性能監控,如果再深入的話,可以對某個頁面進行監控,設定頁面的其中一塊進行監控。特别在硬體監控或者性能監控時如果發現異常,就應該預警,這樣也好防範于未然。

一個好的系統其實應該從擴充性、安全性、性能和可靠性來考慮,其中三言兩語說不完。架構适合就好,可以采用先行之而後優。

繼續閱讀