錢包生活(平潭)科技有限公司上海分公司 劉 健
電子商務(wù)日益成為當(dāng)今社會發(fā)展的一個重要組成部分,愈來愈多地占據(jù)了市場的主要份額。在此背景下,傳統(tǒng)的零售行業(yè)遭到不小的撞擊。零售公司明確地到只有和互聯(lián)網(wǎng)相結(jié)合,積極地轉(zhuǎn)型、拓寬線上途徑,才可以更好地得到發(fā)展。他們基于自身的長處出發(fā),探討線下和線上二者相結(jié)合的一類商業(yè)化模式,據(jù)此而出現(xiàn)了O2O(Online to Offline)交易模式,變成化解傳統(tǒng)零售公司轉(zhuǎn)型與發(fā)展的重要渠道。
O2O 交易系統(tǒng)是傳統(tǒng)銷售模式與電商的有機(jī)融合。在整個交易系統(tǒng)內(nèi),無論是下單、還是支付以及物流等步驟,都充分地打通線上與線下的交易。O2O交易系統(tǒng)應(yīng)兼具7X12h的線下服務(wù)模式,又應(yīng)配置7x24 h的線上式服務(wù)項(xiàng)目,和系統(tǒng)所提出的要求相比而言,更具有實(shí)際的可用性。同時,O2O交易系統(tǒng)的要求是能夠同步地支撐大規(guī)模的線上用應(yīng)用,尤其是促銷與秒殺等活動中出現(xiàn)的超高型負(fù)載,因此,須具有更佳的高并發(fā)性特征。
當(dāng)下,一些大規(guī)模的電商系統(tǒng),諸如京東與淘寶等,它們的架構(gòu)技術(shù)日益成熟化,系統(tǒng)也具備良好的高并發(fā)使用性。然而,它們的交易系統(tǒng)所對應(yīng)的架構(gòu)經(jīng)驗(yàn)就零售O2O交易系統(tǒng)所具有的參考借鑒意義并不充分。據(jù)此,本論文基于高并發(fā)架構(gòu)分析O2O交易系統(tǒng)。
高并發(fā)(High Concurrency)在設(shè)計互聯(lián)網(wǎng)的分布式體系架構(gòu)時應(yīng)顧及到的一個重要指標(biāo),指的是基于設(shè)計確保系統(tǒng)可以同步地并行地處理不少請求,且通常包括如下的一些相關(guān)因素:
響應(yīng)時間(Response Time):系統(tǒng)對于請求內(nèi)容所提出的響應(yīng)時間。比如,系統(tǒng)在處理單個HTTP請求所花費(fèi)的時間為200ms,此200ms即指的是系統(tǒng)響應(yīng)時間。
吞吐量(Throughput):在單位時間中所處置的請求數(shù)。
每秒查詢率QPS(Query Per Second):在每秒內(nèi)響應(yīng)的請求數(shù)量?;ヂ?lián)網(wǎng)范疇中,此指標(biāo)與吞吐量之間的區(qū)別并不如此分明。
并發(fā)用戶數(shù):實(shí)時承受正常性應(yīng)用系統(tǒng)功能所對應(yīng)的用戶數(shù)。比如,單個即時性通訊系統(tǒng),同步在線量就一定程度而言所代表的是系統(tǒng)并發(fā)的用戶數(shù)。
2.2.1 O 2O電子商務(wù)平臺概念
O2O電子商務(wù)也就是Online線上互聯(lián)網(wǎng)店Offline線下消費(fèi)。商家采納零費(fèi)用開通網(wǎng)店的方式,把商家及其商品的相關(guān)信息等內(nèi)容呈現(xiàn)在客戶面前,客戶通過線上展開篩選服務(wù)且進(jìn)行支付,線下則對消費(fèi)進(jìn)行驗(yàn)證并體驗(yàn)。這樣就能夠盡量地滿足客戶多元化的需求,亦能夠省卻客戶由于在線消費(fèi)而未能消費(fèi)上的開支。商家根據(jù)網(wǎng)店所傳播的信息速度更快,范圍也更廣泛,能夠在短時間內(nèi)聚集功能更為強(qiáng)大的消費(fèi)功能。此模式的核心特征在于商家與客戶均可以經(jīng)由O2O交易系統(tǒng)滿足雙方所需。
2.2.2 O 2O交易系統(tǒng)的核心
根據(jù)相關(guān)的數(shù)據(jù)信息表明,即便在美國這樣電子商務(wù)最為發(fā)達(dá)的國家地區(qū),線下消費(fèi)所占據(jù)的比重仍舊高達(dá)約93%。Trial Pay的創(chuàng)始者兼CEOA lex Rampell在對線下消費(fèi)的規(guī)模時曾言:一般的互聯(lián)網(wǎng)客戶每年所花費(fèi)的開支大概為1000美元,假定普通的美國人每年每一年的收入是4萬美元,則余下的39000美元跑到哪兒了?唯一的答案為大多數(shù)的開支均運(yùn)用于本地的消費(fèi),百姓會將錢用于酒吧、咖啡店、餐廳、健身房、加油站、干洗店、水電工以及發(fā)廊等。
造成這一現(xiàn)象的原因不單單在于線下服務(wù)無法裝箱運(yùn)輸,更為關(guān)鍵的在于快遞自身難以傳遞由于社交體驗(yàn)所產(chǎn)生的快感。然而,基于O2O交易系統(tǒng),可以把線下的商品及其服務(wù)加以展示,且提供在線的支付與預(yù)約等消費(fèi),此對于客戶而言,不單單拓展了挑選的余地,還能夠經(jīng)由線上的比對方式來挑選出最讓人期待的服務(wù),以及根據(jù)客戶的地區(qū)性條件享受商家所提供的更為恰當(dāng)?shù)姆?wù)項(xiàng)目。但若無線上的展示,客戶可能會很難無法得知商家的相關(guān)信息,更遑論消費(fèi)了。同時,當(dāng)下正在探討使用的O2O交易系統(tǒng)的商家們,也往往會比采納線下消費(fèi)更加優(yōu)惠的方式吸引消費(fèi)者采用在線消費(fèi),此也替客戶省卻了一筆費(fèi)用。
因?yàn)橐苿踊ヂ?lián)網(wǎng)日益呈現(xiàn)出個性化、寬帶化與大眾化等特點(diǎn)展,移動商務(wù)的大規(guī)?;袌鲆苍谌找娴貑?,基于Mobile(移動化)、Social (社交化)以及Local(本地化)等特征所整合的So Lo Mo被視作是網(wǎng)絡(luò)將來的發(fā)展走向。
Mobile被視作移動商業(yè)新范式的技術(shù)支持和載體。當(dāng)移動互聯(lián)網(wǎng)的相關(guān)技術(shù)日益發(fā)展之際,互聯(lián)網(wǎng)銷售也由個體電腦的固定化方位轉(zhuǎn)向至持續(xù)性更易的人體自身,致使移動手機(jī)的運(yùn)用模式持續(xù)性地創(chuàng)新和用戶體驗(yàn)的日益升級。智能化手機(jī)的推廣推動了即時性搜索功能的進(jìn)一步發(fā)展,直接替“本地化”的移動互聯(lián)網(wǎng)的典型化服務(wù)模式體現(xiàn)出商業(yè)性價值提供了必要的保障,也替用戶實(shí)時消費(fèi)和體驗(yàn)公享提供了對應(yīng)的載體。
Local為移動商業(yè)的新模式地理指標(biāo)的基礎(chǔ)。LBS (Location Based Service,根據(jù)方位的服務(wù)項(xiàng)目)是基于移動通信互聯(lián)網(wǎng)或是外界定位渠道獲取移動終端客戶的地理方位信息。根據(jù)GIS (Geo-graphic Information System,地理信息系統(tǒng))相應(yīng)平臺的支撐功能,替用戶提供有關(guān)服務(wù)項(xiàng)目的一類增值型業(yè)務(wù)。根據(jù)具體方位進(jìn)行服務(wù),空間應(yīng)用者不不單單能夠采用時間,同時也能夠使用地理坐標(biāo)信息來篩選商務(wù)數(shù)據(jù)信息,空間的管理人員能夠準(zhǔn)確地定位每一個需要進(jìn)行互動交流的空間使用人員。因而,由于受到Mobile技術(shù)的支持作用,商家能夠應(yīng)用客戶簽到的數(shù)據(jù)信息展開進(jìn)一步的數(shù)據(jù)信息挖掘,搜集客戶的品位嗜好、生活半徑、消費(fèi)程度與消費(fèi)習(xí)慣等一系列的信息,再據(jù)此提供和方位有關(guān)的各類信息數(shù)據(jù)服務(wù)。Social替移動商業(yè)的新范式匯聚了用戶的相關(guān)資源。SNS (Social Net work Service,社交網(wǎng)絡(luò)服務(wù))的和諧功能在于替具有一致興趣愛好以及活動的用戶構(gòu)建互聯(lián)網(wǎng)社區(qū),經(jīng)由網(wǎng)絡(luò)渠道替使用者提供聯(lián)系和溝通的交互式通路。經(jīng)由社會化互聯(lián)網(wǎng),不同用戶內(nèi)部間可以展開多向路的互動與信賴推薦,進(jìn)而達(dá)到傳遞社會化的關(guān)系鏈與共享信息內(nèi)容,商家可以達(dá)到更為準(zhǔn)確的定向式銷售目標(biāo)。
本論文所設(shè)計的系統(tǒng)總體架構(gòu)所應(yīng)用的是分層化的設(shè)計觀念,把每一層的架構(gòu)展開模塊化的設(shè)計,層和模塊之間經(jīng)由不多的接口通信確保耦合性并不高。如此設(shè)計是提高系統(tǒng)的可用特性與并發(fā)性的前提條件。O2O交易系統(tǒng)的分層與模塊化的架構(gòu)可參見圖1所示,使用的是三層式的架構(gòu)方式,具體分析如下:1)表現(xiàn)層。該層為直接和用戶進(jìn)行交互過程的前端的界面,主要有:用戶App客戶端、柜臺銷售人員的營銷互聯(lián)網(wǎng)界面以及商城管理人員的互聯(lián)網(wǎng)界面等結(jié)構(gòu);2)應(yīng)用層主要是O2O業(yè)務(wù)的邏輯實(shí)現(xiàn)層,其中包括以下的分體系:用戶體系、價格體系、推薦體系、庫存體系、產(chǎn)品體系、支付體系、購物車體系、訂單體系、結(jié)算體系、物流體系以及購物聊天體系等;3)數(shù)據(jù)層為系統(tǒng)數(shù)據(jù)以及務(wù)數(shù)據(jù)的儲存層,主要包括如下的幾個模塊:關(guān)系型數(shù)據(jù)庫、緩存、全文檢索存儲、圖片與文件儲存以及數(shù)據(jù)倉庫等。
圖1 高并發(fā)架構(gòu)的O2O交易系統(tǒng)的結(jié)構(gòu)圖示
邏輯層相應(yīng)的架構(gòu)對策有不少的備選方案。單機(jī)架構(gòu)的并發(fā)性與可用性并不高;雙機(jī)的主備范式模式相對比較不錯的可用性但是無法填補(bǔ)O2O交易系統(tǒng)對于并發(fā)性所提出的要求;集群式負(fù)載平衡模式為是使用最為頻繁的一種業(yè)務(wù)邏輯層的高并發(fā)與高度可應(yīng)用型對策。
應(yīng)用層-集群式負(fù)載平衡內(nèi)全部業(yè)務(wù)邏輯的服務(wù)器須為對等且沒有狀態(tài)的,能夠基于系統(tǒng)的容量來協(xié)調(diào)服務(wù)器的數(shù)目。全部客戶端請求經(jīng)由負(fù)載平衡器轉(zhuǎn)發(fā)至業(yè)務(wù)邏輯的服務(wù)器。較為單一性的負(fù)載平衡器出現(xiàn)單點(diǎn)事故的系統(tǒng)性風(fēng)險,出于保障系統(tǒng)所應(yīng)用的高度可用性原因,采納負(fù)載平衡器和Keepalived心跳測試器建構(gòu)主從負(fù)載平衡結(jié)構(gòu),在通常環(huán)境中,主負(fù)載平衡器經(jīng)由虛擬IP和客戶端進(jìn)行交互作用,若主負(fù)載平衡器出現(xiàn)了故障,那么Keepalived即可以在短時間內(nèi)測試到,從而會把通過負(fù)載平衡器挑選成主負(fù)載平衡器,再接管至虛擬IP,和每一個客戶端進(jìn)行直接地交互。Keepalived 須布局于每個負(fù)載平衡服務(wù)器內(nèi),并在每一臺機(jī)器上進(jìn)行對應(yīng)的配置,相關(guān)的核心配置項(xiàng)分析見下:
負(fù)載平衡器提供多元化的選擇種類,大致包括2種:軟件負(fù)載平衡器宇硬件負(fù)載平衡器。其中,前者能夠挑選Nginx、LVS與HAProxy等;后者能夠挑選A10,CitrixNetScaler與F5,Radware等。
以往營銷系統(tǒng)通常采納的是單一式種類的數(shù)據(jù)儲存,尤其是關(guān)系類型的數(shù)據(jù)儲存。MySQL、Oracle以及SQL server等即是主要的代表,這些數(shù)據(jù)庫已非常地完善,凸顯出明顯的功能特征,具有穩(wěn)定的狀態(tài),能夠與ACID理想化的事務(wù)特征相吻合。然而,就O2O交易系統(tǒng)而言,基于線上的用戶和商品的相關(guān)數(shù)據(jù)信息可知,關(guān)系型數(shù)據(jù)庫無論是儲存的靈活度、高并發(fā)性指標(biāo)上均會暴露出一定的不足之處?;旌闲蛿?shù)據(jù)儲存借助于各個數(shù)據(jù)儲存模式,把相對較為獨(dú)立性的數(shù)據(jù)集借助于恰當(dāng)?shù)那兰右詢Υ?,在確保系統(tǒng)數(shù)據(jù)信息一致性的前提下,加強(qiáng)系統(tǒng)的并發(fā)性和可用性。
本論文所設(shè)計的O2O交易系統(tǒng)的數(shù)據(jù)儲存架構(gòu)中,核心的數(shù)據(jù)庫還是關(guān)系型數(shù)據(jù)庫。因?yàn)槠浔旧硭w現(xiàn)出的穩(wěn)定性、強(qiáng)功能以及優(yōu)良的事物特點(diǎn)等,都優(yōu)于其它非關(guān)系型的數(shù)據(jù)庫或是其他類型數(shù)據(jù)儲存方式難以媲美的。至于高頻率操控的數(shù)據(jù)信息,除卻儲存于數(shù)據(jù)庫內(nèi)之外,還須儲存于緩存內(nèi),緩存一般包括2種:持久性的緩存以及換入換出的緩存。其中,前者采納的是日志來確保緩存的非易失現(xiàn)象,比如,redis主要運(yùn)用于儲存訂單與庫存等一些關(guān)涉高并發(fā)類型操控的關(guān)鍵性數(shù)據(jù);后者則屬于純內(nèi)存式的緩存,若容量處于達(dá)閾值時,通常借助于LRU等計算方法換出其中一塊較老的緩存,比如,memcached主要應(yīng)用于儲存訪問比較頻繁的商品與用戶數(shù)據(jù)。出于加快用戶檢索商品數(shù)據(jù)信息的目的,需要應(yīng)用全文搜索引擎來儲存數(shù)據(jù)和索引。至于圖片與文件等一些非結(jié)構(gòu)化的數(shù)據(jù)則采納的是的文件系統(tǒng)儲存。至于使用者所產(chǎn)生的大量歷史信息數(shù)據(jù)以及日志數(shù)據(jù)等須定期地植入到數(shù)據(jù)倉庫儲存,有利于后續(xù)數(shù)據(jù)的研究?;旌闲蛿?shù)據(jù)儲存能夠充分地使用不同儲存方式的長處,可以高效地提高系統(tǒng)的可行性與并發(fā)性。
由于O2O交易系統(tǒng)中的數(shù)據(jù)在日益遞增,單一性的數(shù)據(jù)節(jié)點(diǎn)較易變成性能上的瓶頸,并難以且容納所有的數(shù)據(jù)信息,此即需要使用到數(shù)據(jù)的分片。因而,下圖2中的所有數(shù)據(jù)儲存模塊須盡可能地設(shè)計成分布式儲存,其主要方法為分片與冗余。本論文即主要分析的是下圖2的MySQL集群板塊展開解釋。即其數(shù)據(jù)分片主要包括2種:垂直分片與水平分片。其中,前者的區(qū)分單位為表,聚合各個表的內(nèi)容至相異數(shù)據(jù)的儲存節(jié)點(diǎn)處,具體應(yīng)基于數(shù)據(jù)信息進(jìn)行業(yè)務(wù)方面的耦合度分析,從而把業(yè)務(wù)比較貼近的表區(qū)分至相同的節(jié)點(diǎn)處。后者主要是在表內(nèi)進(jìn)行區(qū)分,若表內(nèi)的數(shù)據(jù)量太大之際,則會根據(jù)若干字段,把數(shù)據(jù)分布于分散到各個分片中。分片對策包含一致性的哈希分片與范疇分片。其中,前者是把數(shù)據(jù)字段以及機(jī)器哈希安置于相同的數(shù)值范疇內(nèi),基于哈希值來界定數(shù)據(jù)所被配置的具體機(jī)器中。后者則是依照字段來取值,把各個取值區(qū)間對應(yīng)的字段分安置在各個機(jī)器中。對整個系統(tǒng)的數(shù)據(jù)庫分片所提出的對策時,須先開展垂直分片,再對表的數(shù)據(jù)量較大者進(jìn)行水平分片。至于每一個分片均制作成3個數(shù)量的冗余備份加以儲存,且達(dá)到讀寫的分離目標(biāo)。
圖2 產(chǎn)品、訂單與物流的數(shù)據(jù)分片儲存對策
讀寫分離主要指的是數(shù)據(jù)庫的讀與寫操作構(gòu)架層面的差異性處置。具體化的讀寫分離規(guī)律和系統(tǒng)對于確定數(shù)據(jù)的分片一致性所提出的要求是密切相關(guān)的。一致性主要包括以下3種:強(qiáng)、弱與最終的一致性。至于強(qiáng)一致性的相關(guān)要求數(shù)據(jù)分片分析如下:寫操作須先寫入到主數(shù)據(jù)的分片中,再通過實(shí)時的手段把主數(shù)據(jù)的分片中所具有的更新功能至從數(shù)據(jù)的分片;而讀操作則能夠從任一數(shù)據(jù)分片加以讀取。至于弱一致性要求的數(shù)據(jù)分片則分析如下:寫操作率先寫入到主數(shù)據(jù)的分片之中,再通過異步渠道把主數(shù)據(jù)分片內(nèi)的更新作功能至所用的數(shù)據(jù)庫內(nèi);讀操作能夠通過任一數(shù)據(jù)的分片加以讀取。至于最終一致性的相關(guān)要求數(shù)據(jù)分片分析如下,寫操作率先寫入到主數(shù)據(jù)的分片之中,再通過實(shí)時的渠道把主數(shù)據(jù)的分片的更新功能至部分從數(shù)據(jù)的分片之中,通過異步的渠道把主數(shù)據(jù)分片內(nèi)的更新功能至其他從數(shù)據(jù)的分片內(nèi),實(shí)時更新數(shù)據(jù)分片的數(shù)量是W個;讀操作須通過任一R個數(shù)量的數(shù)據(jù)分片加以讀取,把合并之后所讀取的結(jié)果當(dāng)做最后的結(jié)果;假定數(shù)據(jù)分片的副本總數(shù)為N,讀寫的副本總數(shù)須超出N,也就是R+W>N,有關(guān)的具體信息能夠借鑒RWN的相關(guān)協(xié)議。
至于變動并不頻繁或是模板化的數(shù)據(jù)信息、界面能夠抽象為靜態(tài)化的資源,比如對商品的詳細(xì)情況進(jìn)行描述的界面,展示商品的圖片;由于變動或是個性化的數(shù)據(jù)信息都是常態(tài)化的,對于變動比較頻繁或是個性化數(shù)據(jù)和界面者能夠抽象成實(shí)時資源,比如,商品的詳情信息中包括色澤、庫存與尺碼等一些詳細(xì)的數(shù)據(jù)信息。客戶端對于靜態(tài)資源進(jìn)行并發(fā)式訪問的功能要遠(yuǎn)遠(yuǎn)地超出服務(wù)器方面的實(shí)時資源請求?;诩軜?gòu)的層面而言,能夠把靜態(tài)的資源和動態(tài)的資源加以區(qū)別,其中,前者通常儲存于相應(yīng)的Web服務(wù)器或是CDN與客戶端內(nèi),后者通過業(yè)務(wù)邏輯服務(wù)器獲得請求,據(jù)此提升系統(tǒng)訪問功能和并發(fā)功能。其中,nginx 一般被視作負(fù)載平衡器,實(shí)時地區(qū)分動態(tài)資源與靜態(tài)資源的相關(guān)請求至確定的服務(wù)器中。將nginx動態(tài)與靜態(tài)加以分離的核心配置見下:
本論文主要研究的課題是高并發(fā)架構(gòu)的O2O交易系統(tǒng)的研究與實(shí)現(xiàn),總結(jié)了高并發(fā)架構(gòu)的O2O交易系統(tǒng)理論,包括高并發(fā)的概念與O2O電子商務(wù)平臺的相關(guān)理論,然后,對所需要設(shè)計的O2O交易系統(tǒng)展開了設(shè)計與實(shí)現(xiàn)的分析,主要依次地分析了三層式架構(gòu)-分層解耦、應(yīng)用層-集群式負(fù)載平衡以及表現(xiàn)層-靜態(tài)化的分離等內(nèi)容。本論文所提出的高并發(fā)O2O交易系統(tǒng)能夠?qū)χT如O2O交易系統(tǒng)的架構(gòu)設(shè)計和實(shí)現(xiàn)提供一定的借鑒作用。
[1]Phang C W,Tan C H,Sutanto J,et al.Leveraging O2O commerce for product promotion:An empirical investigation in mainland China[J].IEEE Transactions on Engineering Management,2014,61(4):623-632.
[2]周亞南.非線性代數(shù)方程組的一種數(shù)值解法[J].應(yīng)用數(shù)學(xué)進(jìn)展,2014(3):91-97.
[3]楊彧劍,林波.分布式存儲系統(tǒng)中一致性哈希算法的研究[J].電腦知識與技術(shù)(學(xué)術(shù)交流),2011,22(7):5295-5296.
[4]陳寶.軟件開發(fā)中的三層架構(gòu)模式[J].合作經(jīng)濟(jì)與科技,2009(6):16-17.
[5]宋英英,李東新.CDN 網(wǎng)站加速—節(jié)點(diǎn)服務(wù)器流量分析及統(tǒng)計[EB/OL].http://www.paper.edu.cn/html/releasepaper/2012/01/582/,2012-01-17.
[6]顧耀芳.綜述全文檢索系統(tǒng)[J].現(xiàn)代圖書情報技術(shù),1992(1):7-13.
[7]Hollenback P.Improving network reliability with Keepalived[EB/OL].http://www.linuxdevcenter.com/pub/a/linux/2005/09/01/keepalived.html,2015-12-6.
[8]高丹.中國銀聯(lián)互聯(lián)網(wǎng)支付業(yè)務(wù)系統(tǒng)設(shè)計與實(shí)現(xiàn)[D].大連:大連理工大學(xué),2012.
[9]閻基橋.虛擬IP 技術(shù)在Intranet中的應(yīng)用[J].微電腦世界,1997.
[10]張震波,楊鶴標(biāo),馬振華.基于LRU算法的Web 系統(tǒng)緩存機(jī)制[J].計算機(jī)工程,2006,32(19):68-70.