楊濤 南京蘇寧軟件技術有限公司
高并發電子商務系統的設計與實現
楊濤 南京蘇寧軟件技術有限公司
本文主要從多線程處理、優化數據庫、增加系統可用資源三個方面對高并發電子商務系統的設計與實現進行簡要闡述,以提高系統資源利用率、提高系統處理速度為目的,滿足用戶的訪問量、平臺的請求量,保證電商系統響應的準確性和流暢性。
高并發 電子商務系統 設計
隨著信息化的快速發展,電子商務系統的設計技術也在蓬勃發展,人們的購物方式從之前面對面的錢貨方式慢慢轉變為多元化的交易方式,例如網上購物,這種購物方式以保證客戶購物安全為前提、為客戶提供豐富的商品選擇、而且足不出戶的購物方式也為客戶提供一個安全、便捷、性價比高的購物渠道。但在購物狂歡節如雙11、雙12這種節日時,交易平臺的訪問量較大、商品查詢次數較多等問題極易導致商品刷新慢、無法付款、甚至服務器崩潰等現象、為用戶帶來極大的不便,所以將高并發技術應用到電子商務系統的設計,保證系統響應的準確性和流暢性,滿足用戶的購物需求、也使得購物平臺的用戶量不斷增加。
在用戶訪問高峰期時,電子商務平臺因訪問量大、頻次多,使得平臺響應時間長、反應慢、服務器超負荷運轉甚至出現死機等現象,將高并發的技術需求應用到電子商務系統中,對整個系統進行設計,保證系統響應的準確性和流暢性,滿足用戶的購物需求,本文主要從三個方面進行簡要闡述。
(1)多線程處理:當用戶向服務器發送請求時、傳輸的信息主要以多進程方式、異步方式、多線程方式進行處理,通過分析比較,多線程處理方式可提高服務器的利用率、減少空閑時間。與多進程方式相比,一個進程由多個線程組成、且線程間可共享用戶要求的部分資源,所以線程占用空間較小、且處理效率較高。如圖1所示,采用多線程處理方式處理用戶提交訂單的信息,當用戶發出提交訂單的信息,系統會自動調出商品與用戶的信息,然后驗證商品是否有貨及相關配送問題等、同時也驗證用戶是否有權限、ID是否被禁用等,當兩者都驗證通過時、訂單才會被認為提交成功,采用多線程處理方式處理、對商品及用戶信息的驗證是同時進行的(非順序驗證)、若有一項不符合該訂單顯示提交失敗,這種處理方式可提高處理效率。

圖1 添加多線程處理的流程圖
(2)優化數據庫:完善DAO層,讀寫分離,有效的減輕數據庫和io壓力,同時保證數據一致性;合理使用數據庫索引,哈希索引實現數據的快速存取;對常用又很少變更的數據使用Redis存儲,Redis擁有豐富的數據類型,高效的讀寫速度,所有操作都是原子性,可大幅度提高系統處理效率;分布式部署,針對特殊的業務場景,如秒殺和搶購,需要控制商品發放數量,采用隊列和樂觀鎖的方案,通過MQ或Kafka先進先出的隊列方式處理請求,當商品數量足夠時,通過樂觀鎖去扣除商品數量,樂觀鎖通過數據庫版本號實現加鎖,更新失敗時,商品數量已經被搶購完,后續請求可以直接返回搶購失敗,提高系統的響應速度;
(3)增加系統可用資源:當電商平臺訪問量較多、請求量較大時,單個服務器因負載大而反應緩慢、采用多個服務器進行處理、提高處理效率,采用Nginx作為負載均衡服務器、只接收并向其他服務器轉發請求,當一臺服務器沒有響應時、系統會自動地重新進行全面映射、使得負載均衡并滿足平臺的處理請求。業務層采用成熟的NIO通訊框架,支撐高并發吞吐量的請求。同時,對于web系統來說,圖片,css,JavaScript,Html等靜態資源的資源消耗比較大,將靜態資源和應用服務器分別部署在不同的服務器上,通過Nginx管理靜態資源服務器和后端服務器的請求,可以使后端應用更加服務化,減輕后端服務器壓力,提高靜態資源訪問速度。
為保證電商系統響應的準確性和流暢性,滿足用戶的訪問量、平臺的請求量,本文主要從多線程處理、優化數據庫、增加系統可用資源三個方面對高并發電子商務系統的設計與實現進行簡要闡述,提高系統資源利用率、提高系統處理速度,來不斷滿足在用戶高峰期時電子商務系統的使用。
[1]徐偉恒.高并發電子商務系統的設計與實現[D].哈爾濱工業大學,2016.
[2]彭沖.面向農產品的電子商務平臺設計與實現[D].湘潭大學,2016.
楊濤,1990.05,男,漢,江蘇南京,本科,助理工程師,目前從事軟件工程方面的工作。