中小型電子商務網站架構


  一個小型的電子商務網站,例如日交易量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,而且架構也非常好。

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

 

異步通信系統

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

 

完善的系統監控

 

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

 

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


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com