隨著互聯(lián)網(wǎng)電商項(xiàng)目的發(fā)展,越來越多的購(gòu)物平臺(tái)等都使用SOA分布式來作為系統(tǒng)主要架構(gòu)。為什么有那么多的電商項(xiàng)目都選擇SOA作為系統(tǒng)架構(gòu)呢?這肯定是存在一定原因的,因?yàn)殡娚绦袠I(yè)的項(xiàng)目它大概存在以下特點(diǎn):分布式、高并發(fā)、高可用、集群、負(fù)載均衡、海量數(shù)據(jù)、系統(tǒng)安全等一系列問題都需要解決,那么我所了解的SOA分布式架構(gòu)它正好基本能很好的解決這些問題。

  首先我給大家介紹以下電商項(xiàng)目中一些常見的運(yùn)營(yíng)模式:

  移動(dòng)開發(fā)培訓(xùn),Android培訓(xùn),安卓培訓(xùn),手機(jī)開發(fā)培訓(xùn),手機(jī)維修培訓(xùn),手機(jī)軟件培訓(xùn)

  今天我就以近期開發(fā)過的一個(gè)電商項(xiàng)目為例,來分享一點(diǎn)我所理解的SOA結(jié)構(gòu)開發(fā)流程,希望能夠幫到大家,如有不妥,請(qǐng)指正。

一:首先說說項(xiàng)目總體架構(gòu)的流程

  1、該項(xiàng)目采用SOA分布式架構(gòu),在此基礎(chǔ)上我們又實(shí)現(xiàn)了面向服務(wù)的思想,中間件使用阿里巴巴出品的Dubbo服務(wù)治理的核心框架來管理整個(gè)系統(tǒng)的服務(wù),并且選擇zookeeper來作為注冊(cè)中心;

    2、大家都知道,一個(gè)電商項(xiàng)目是無法避免如何處理海量圖片資源的問題,所以這里由使用一款用C語言開發(fā)的開源分布式文件系統(tǒng)FastDFS作為圖片服務(wù)器,專門用于存儲(chǔ)系統(tǒng)中所有的商品圖片,廣告圖片等資源,并且通過Nginx反向服務(wù)器來訪問圖片服務(wù)器上的資源;

       3、接著說說商品搜索功能這塊的架構(gòu),這里我們將在Linux系統(tǒng)上搭建了solr集群并實(shí)現(xiàn)了集群分片,安裝了IKAnalyzer中文分詞器,定義業(yè)務(wù)域等一系列部署工作,搭建了專門的搜索子系統(tǒng),使用solr技術(shù)實(shí)現(xiàn)了商品搜索功能;

  4、商品詳情頁(yè)這塊,采用freemarker頁(yè)面靜態(tài)化技術(shù),將實(shí)現(xiàn)了對(duì)所有商品能夠生成HTML詳情頁(yè)面,當(dāng)用戶訪問網(wǎng)站搜索商品查看商品詳情數(shù)據(jù)時(shí),我們這里是動(dòng)態(tài)生成詳情頁(yè),而不是提前設(shè)計(jì)好,這樣即使稍微慢點(diǎn),也無所謂;

  5、優(yōu)化一個(gè)電商項(xiàng)目是開發(fā)中必不可少的工作,這時(shí)經(jīng)過分析,將采用非關(guān)系型數(shù)據(jù)庫(kù)redis作為主角搭建了redis集群,將商城首頁(yè)的廣告位數(shù)據(jù)、頁(yè)腳數(shù)據(jù)和將每天訪問最多的定時(shí)廣告數(shù)據(jù)都存儲(chǔ)在redis集群中,用空間換時(shí)間來提升網(wǎng)站數(shù)據(jù)的展示速度;

  6、互聯(lián)網(wǎng)項(xiàng)目不同于傳統(tǒng)項(xiàng)目,對(duì)網(wǎng)站的登錄用戶的安全性校驗(yàn)有非常高的要求,這里采用單點(diǎn)登錄技術(shù),來實(shí)現(xiàn)用戶的登錄和注冊(cè)功能,這里我沒有參與開發(fā),但是對(duì)單點(diǎn)登錄有一定的了解,下面進(jìn)行分享。

 

二:業(yè)務(wù)這塊就沒啥可說的,都是電商購(gòu)物平臺(tái),大家可能都有在類似的購(gòu)物平臺(tái)上購(gòu)物的經(jīng)驗(yàn),我們項(xiàng)目的業(yè)務(wù)主線也是購(gòu)物流程,至于后臺(tái)管理系統(tǒng)也就是對(duì)各個(gè)管理模塊的維護(hù);但是我們又新添加了商城倒計(jì)時(shí)活動(dòng)和商品秒殺活動(dòng),下面具體來說說這倆個(gè)新穎的功能吧。

  1、商城倒計(jì)時(shí)活動(dòng)實(shí)現(xiàn)大概步驟(可以作為參考):

    (1)、首先確定一個(gè)基準(zhǔn)時(shí)間,可以使用SQL語句從數(shù)據(jù)庫(kù)獲取一個(gè)時(shí)間SELECT NOW();

    (2)、活動(dòng)開始的時(shí)間是固定的,使用活動(dòng)開始的時(shí)間-基準(zhǔn)時(shí)間可以計(jì)算出一個(gè)秒為單位的時(shí)間值;

    (3)、然后使用redis數(shù)據(jù)庫(kù),采用string類型的數(shù)據(jù)類型來存儲(chǔ)一個(gè)key(值為活動(dòng)開始的時(shí)間),一定設(shè)置key的過期時(shí)間,使用命令"expire key 10"假設(shè)有效時(shí)間為10秒;

      (4)、展示商城頁(yè)面的時(shí)候,取出存儲(chǔ)的活動(dòng)開始時(shí)間,使用js倒計(jì)時(shí)功能;

    (5)、一旦存儲(chǔ)的key失效,則說明活動(dòng)結(jié)束(說明一點(diǎn),需要在活動(dòng)的邏輯中,先判斷活動(dòng)是否已經(jīng)開始)。

 

  

  2、商城商品的秒殺活動(dòng)實(shí)現(xiàn)的大概步驟(可以作為參考):

    (1)、首先把秒殺活動(dòng)的商品數(shù)量存放到redis中;

    (2)、秒殺活動(dòng)開始時(shí),使用decr命令對(duì)商品數(shù)量減1,如果不是負(fù)數(shù),則說明搶到禮物;

    (3)、一旦返回的商品數(shù)量為0,則說明商品已經(jīng)售完,活動(dòng)結(jié)束。

 

三:項(xiàng)目部署總結(jié)

(項(xiàng)目架構(gòu)詳解圖)

移動(dòng)開發(fā)培訓(xùn),Android培訓(xùn),安卓培訓(xùn),手機(jī)開發(fā)培訓(xùn),手機(jī)維修培訓(xùn),手機(jī)軟件培訓(xùn)

(網(wǎng)絡(luò)拓?fù)鋱D)

移動(dòng)開發(fā)培訓(xùn),Android培訓(xùn),安卓培訓(xùn),手機(jī)開發(fā)培訓(xùn),手機(jī)維修培訓(xùn),手機(jī)軟件培訓(xùn)

 

部署總結(jié)后期更新!!!

 

http://www.cnblogs.com/1315925303zxz/p/6371550.html