隨着互聯網電商項目的發展,愈來愈多的購物平臺等都使用SOA分佈式來做爲系統主要架構。爲何有那麼多的電商項目都選擇SOA做爲系統架構呢?這確定是存在必定緣由的,由於電商行業的項目它大概存在如下特色:分佈式、高併發、高可用、集羣、負載均衡、海量數據、系統安全等一系列問題都須要解決,那麼我所瞭解的SOA分佈式架構它正好基本能很好的解決這些問題。redis
首先我給你們介紹如下電商項目中一些常見的運營模式:數據庫
今天我就以近期開發過的一個電商項目爲例,來分享一點我所理解的SOA結構開發流程,但願可以幫到你們,若有不妥,請指正。安全
一:首先說說項目整體架構的流程服務器
一、該項目採用SOA分佈式架構,在此基礎上咱們又實現了面向服務的思想,中間件使用阿里巴巴出品的Dubbo服務治理的核心框架來管理整個系統的服務,而且選擇zookeeper來做爲註冊中心;網絡
二、你們都知道,一個電商項目是沒法避免如何處理海量圖片資源的問題,因此這裏由使用一款用C語言開發的開源分佈式文件系統FastDFS做爲圖片服務器,專門用於存儲系統中全部的商品圖片,廣告圖片等資源,而且經過Nginx反向服務器來訪問圖片服務器上的資源;架構
三、接着說說商品搜索功能這塊的架構,這裏咱們將在Linux系統上搭建了solr集羣並實現了集羣分片,安裝了IKAnalyzer中文分詞器,定義業務域等一系列部署工做,搭建了專門的搜索子系統,使用solr技術實現了商品搜索功能;
併發
四、商品詳情頁這塊,採用freemarker頁面靜態化技術,將實現了對全部商品可以生成HTML詳情頁面,當用戶訪問網站搜索商品查看商品詳情數據時,咱們這裏是動態生成詳情頁,而不是提早設計好,這樣即便稍微慢點,也無所謂;負載均衡
五、優化一個電商項目是開發中必不可少的工做,這時通過分析,將採用非關係型數據庫redis做爲主角搭建了redis集羣,將商城首頁的廣告位數據、頁腳數據和將天天訪問最多的定時廣告數據都存儲在redis集羣中,用空間換時間來提高網站數據的展現速度;框架
六、互聯網項目不一樣於傳統項目,對網站的登陸用戶的安全性校驗有很是高的要求,這裏採用單點登陸技術,來實現用戶的登陸和註冊功能,這裏我沒有參與開發,可是對單點登陸有必定的瞭解,下面進行分享。分佈式
二:業務這塊就沒啥可說的,都是電商購物平臺,你們可能都有在相似的購物平臺上購物的經驗,咱們項目的業務主線也是購物流程,至於後臺管理系統也就是對各個管理模塊的維護;可是咱們又新添加了商城倒計時活動和商品秒殺活動,下面具體來講說這倆個新穎的功能吧。
一、商城倒計時活動實現大概步驟(能夠做爲參考):
(1)、首先肯定一個基準時間,可使用SQL語句從數據庫獲取一個時間SELECT NOW();
(2)、活動開始的時間是固定的,使用活動開始的時間-基準時間能夠計算出一個秒爲單位的時間值;
(3)、而後使用redis數據庫,採用string類型的數據類型來存儲一個key(值爲活動開始的時間),必定設置key的過時時間,使用命令"expire key 10"假設有效時間爲10秒;
(4)、展現商城頁面的時候,取出存儲的活動開始時間,使用js倒計時功能;
(5)、一旦存儲的key失效,則說明活動結束(說明一點,須要在活動的邏輯中,先判斷活動是否已經開始)。
二、商城商品的秒殺活動實現的大概步驟(能夠做爲參考):
(1)、首先把秒殺活動的商品數量存放到redis中;
(2)、秒殺活動開始時,使用decr命令對商品數量減1,若是不是負數,則說明搶到禮物;
(3)、一旦返回的商品數量爲0,則說明商品已經售完,活動結束。
三:項目部署總結
(項目架構詳解圖)
(網絡拓撲圖)
部署總結後期更新!!!