999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Redis緩存數據庫和Nginx負載均衡技術的購物網站性能優化

2022-08-25 09:56:54鄧秀輝余開朝
軟件導刊 2022年8期
關鍵詞:數據庫服務系統

王 歡,李 民,鄧秀輝,焦 宇,余開朝

(1.昆明理工大學機電工程學院,云南昆明 650500;2.華信咨詢設計研究院,浙江杭州 310000)

0 引言

隨著信息時代的到來,人們的生活已經越來越離不開互聯網。據第47 次《中國互聯網絡發展狀況報告》顯示,截至2020 年12 月,我國網購用戶規模已達7.82 億,較2020年3 月增長7 215 萬,占整體網民的79.1%。2020 年,我國網上零售額高達11.76 萬億元,較2019 年增長10.9%[1]。人們購物習慣的轉變極大地促進了線上經濟的發展,對網絡購物平臺提出了更高要求。開展對現有電商平臺系統的研究與優化至關重要,不僅能夠使購物系統性能得到提升,改善消費者的購物體驗,還能滿足企業長期發展的需求,促進社會經濟良好發展。

1 相關研究

傳統的網上商城系統大多采用垂直應用框架,在面對某一具體時刻眾多并發訪問請求時,存在因難以承受巨大訪問量而發生系統崩潰、用戶等待時間過長、用戶體驗差等問題。隨著企業規模的擴張以及業務種類和業務量的增加,傳統電商系統架構早已不能滿足現代消費需求。微服務架構可以幫助解決企業面臨的種種開發難題,許多學者進行了相關研究。例如,Fowler 等[2]提出微服務的概念;Lewis 等[3]基于微服務的概念首次提出微服務架構體系,并指出通過該架構可以更好地降低服務模塊間的耦合度。目前主流的微服務框架主要包括阿里的Dubbo 框架[4]和Spring社區的Spring Cloud 框架[5]。

針對高并發環境下數據查詢時間變長,在實際項目中數據查詢效率低、系統運行效能不佳的問題,許多學者提出了解決辦法。例如,聶小雄[6]通過優化傳統遺傳算法對數據庫進行分庫分表與資源優化,并重構了系統架構,有效提高了系統數據查詢性能;Peng 等[7]基于Redis 緩存數據庫的高可用性建立Dynamic cuckoo filter 系統,大大提高了海量數據的檢索速度。

為保證系統具有更高的并發性和可用性,面對請求同一服務的多個實例,如何縮短等待時間是一個亟需解決的問題。負載均衡技術為解決這一難題提供了新的思路。例如,Alakeel[8]采用動態負載均衡方法,對服務器集群中服務器節點的工作負載進行重新分配,避免其他服務器節點出現空閑狀態,縮短了服務節點的工作響應時間;張宇星[9]從Nginx 源碼著手,深入研究了其信號機制、反向代理功能和負載均衡,將C++、標準程序庫和模板轉變為對Nginx 的負載轉發并進行優化改進,測試證明改進后的負載分發性能優于改進前;吳寶花[10]提出一種基于Nginx 加權輪詢負載均衡算法的后端服務器動態負載均衡算法,可有效實現服務器資源分配的合理化。

在購物商城系統優化方面,也有不少學者進行了研究。例如,王珂[11]針對某公司委托的電子商城開發項目,運用Spring、SpringMVC、Mybatis 框架,加入Nginx 輪詢技術提高了原購物系統的并發性,數據庫采用一主一從的設計;徐光耀[12]針對擁有大規模用戶的電商企業面臨的問題,設計了基于Dubbo 架構的網上商城,與王珂的不同之處是其采用的是Dubbo 整合Spring、SpringMVC、Mybatis 框架,數據庫沒有主從設計;郭志偉[13]與徐光耀采用了同樣的系統架構,但研究重點放在了以動態調節權重的Nginx作為反向代理為基礎的系統性能優化方面。

本文設計的購物網站系統主要針對小型電商企業,尤其是創業初期資金有限、技術要求不高、顧客量較小的電商企業,與上述學者設計的不同點在于將Spring 框架替換為SpringBoot 框架,優點是SpringBoot 框架不需要考慮版本兼容和框架整合問題。本文系統采用Dubbo 整合Spring-Boot、SpringMVC、Mybatis 框架,采用“二主二從”的數據庫高可用性設計,同時采用Redis 數據緩存技術和Nginx 輪詢負載均衡技術提高系統并發性。

2 關鍵技術

2.1 Dubbo框架

Dubbo 是采用Java 編寫的開源分布式框架[12],其主要功能是使用高性能遠程調用技術進行服務的發布與應用。該框架通過統一標準將復雜的網狀結構梳理成便于管理的星型結構,當某一個服務節點出現問題時,整個系統仍然可以正常運行,較好地解決了各個服務器之間的通信問題。Dubbo 框架作為微服務架構之一,其每個服務都可以運行在獨立的進程中,具有高度的隔離性、自治性,這是傳統架構模式不能實現的,也是本文采用Dubbo 框架降低系統耦合度、提高并發性的重要原因。

圖1 為Dubbo 框架的工作原理,其執行流程簡潔清晰[14]。第一步先啟動加載配置文件,同時將自身所能提供的服務代碼調入內存;第二步啟動服務消費者,向注冊中心提交所需服務信息,注冊中心返回服務提供者IP 和端口號給服務消費者。監控中心會監控服務提供者和服務消費者在一段時間內在內存中的調用次數和時間[15]。

Fig.1 Working principle of Dubbo framework圖1 Dubbo框架工作原理

2.2 Redis緩存技術

互聯網中的數據存儲和訪問規模逐漸增大,緩存技術作為一種既經濟又高效的解決方式被廣泛運用于互聯網數據中心等系統中[16]。Redis 是當前應用最為廣泛的外部緩存產品,具有可使用數據類型豐富、運行性能高、可擴展性好、配置簡單等特點。Redis 是基于內存存儲的,所有操作均直接在內存中進行,可加快數據讀寫速度,有效緩解關系型數據庫的訪問壓力,大大縮短訪問和請求的響應時間[17]。Redis 是單線程的,在收到任務后僅按照順序性、排他性、一次性的原則執行某一隊列的一系列命令。Redis可實現一主機一從機或一主機多從機的主從復制機制,在進行主從搭建時,常采用“哨兵”機制實現緩存數據的高可用性。Redis 緩存技術的持久化策略也是其被廣泛應用的主要原因之一。Redis 按照指定配置,可定期將內存中的數據以ROB 或AOF 的模式持久化到磁盤中,當重新啟動時,Redis 會首先根據文件中的配置讀取持久化文件實現數據恢復,可很好地避免因服務器崩潰給商城帶來的經濟損失。

目前Redis 緩存技術應用十分廣泛,例如蔡宇等[16]研究了運行數據緩存的高效存儲模型、高可用管理等關鍵技術,提出了基于Redis 的數據平臺分布式緩存框架,經實驗證明該框架在可靠性、可擴展性、讀寫性等方面滿足各類業務對數據的管理與訪問要求;劉明[18]采用面對服務架構的思想設計并實現了Yogo 電子商務系統,在服務器與數據庫之間采用Redis 緩存技術,大大提高了系統對請求的響應效率;詹利群等[19]基于內存Key-Value 結構搭建Redis 數據庫集群,提出適合自動氣象站資料調用的數據存儲結構模型,并通過實驗證實了Redis 緩存技術具有較高的資料檢索效率。

2.3 Nginx負載均衡

Nginx 是一個具有強大性能的Web 和反向代理服務器,具有對網絡依賴性小、安裝和配置比較簡單、可以承擔很高的負載壓力且性能穩定等多種優勢。Nginx 服務器最大的特點是可以提供負載均衡技術,即當服務器接收到具體的服務請求時,可以按照既定策略將請求轉發至不同服務器,防止出現一臺服務器過載而其他服務器閑置的情況。既定策略包括輪詢、權重、ip_hash、url_hash 等[20],其中輪詢即按照配置文件的順序依次訪問服務器;權重即“能者多勞”,安排性能較優的服務器處理較多的服務請求;ip_hash 即將用戶和某個特定的服務器進行綁定,客服端請求ip 進行hash,再通過hash 值選擇后端服務器,用于某些特定場景;url_hash 即通過請求url 進行hash,再通過hash 值選擇后端服務器,可以提高后端緩存服務器的使用效率。ip_hash 和url_hash 具有使用局限性,當后端服務器發生宕機時,不會自動跳轉至其他服務器,嚴重影響用戶體驗感。

目前Nginx 負載均衡技術應用也十分廣泛,例如伍春生[21]應用加權Nginx 負載均衡技術處理高速公路視頻云聯網平臺應用層的請求,解決了該平臺訪問能力較差的問題;張博等[22]將Nginx 反向代理與負載均衡技術以及多級緩存、水平拓展服務器等技術引入到中小型電商網站中,通過測試工具檢驗出優化后的網站系統并發訪問能力顯著提升。

3 購物網站系統設計與實現

3.1 購物網站系統工程搭建

3.1.1 開發環境

本文設計的購物網站在MacOS 環境下開發,商城集群服務器、MySQL 數據庫、Redis 緩存、Zookeeper 等部署在VMware 虛擬機的Linux系統中。開發工具如表1所示。

Table 1 Introduction to development tools表1 開發工具介紹

3.1.2 網站系統搭建

購物網站系統基于Dubbo 框架,同時整合SSM(Spring-Boot-SpringMVC-Mybatis)進行架構設計,主要由服務消費者、服務提供者、緩存層和數據層4 層組成。架構如圖2所示。

Fig.2 System architecture of a shopping website after reconstruction圖2 購物網站系統架構

網站中,服務消費者負責頁面展示并與用戶進行信息交互;服務提供者負責接收并處理服務消費者傳來的用戶請求參數。為解決該購物網站在某一時刻因并發量大而導致數據讀取速度慢的問題,采用Redis 緩存技術設置緩存層,在服務層和數據層之間對熱點數據進行緩存處理,以提高數據存儲速率和數據庫的可用性;數據層的數據庫設計采用開源MyCat 數據庫消息中間件,對外統一提供數據服務。為緩解數據庫讀寫壓力,提高數據庫可用性,MySQL 數據庫采用兩主兩從設計,同時采用MyCat 對MySQL 進行讀寫分離和雙機熱備。

該購物網站系統主要通過Redis 的哨兵機制實現緩存數據的高可用性,同時對Redis 服務器集群節點進行主從復制,從節點對主節點進行復制備份,以實現數據同步。圖3 為Redis 數據庫集群的架構示意圖,其分別由3 個主節點和3 個從節點構成。為避免Redis 服務器出現宕機情況,哨兵通過心跳檢測機制向主機實時發出心跳檢測,連續3 次未收到主機回執,則判斷該主機宕機,哨兵則通過推選機制選擇另一臺從機為新的主機,并將其他服務器改為當前主機的從機。

在服務治理與監控方面,本系統采用Dubbo+Zookeeper 應用協調服務設計。以購物車功能為例,當服務提供者啟動時,會將{服務名稱:IP 端口}寫入到Zookeeper 注冊中心,注冊中心收到消息后動態維護服務列表數據。當消費者啟動時,首先鏈接到注冊中心獲取到所有服務列表數據,并將該數據保存到消費者本地中心用于后續訪問。Zookeeper 注冊中心利用心跳檢測機制對后臺服務進行監控,判斷是否出現宕機。若出現宕機情況,注冊中心會及時更新服務列表消息,并將更新后的數據發送給消費者。

Fig.3 Architecture of Redis database cluster圖3 Redis數據庫集群架構

本文采用分布式搭建方式對該購物網站系統進行垂直拆分和水平拆分。垂直拆分是將購物網站具體的服務模塊根據服務功能的不同拆分到不同服務器中,以提高整個系統的并發能力,具體拆分情況如圖4 所示。水平拆分是根據業務代碼的層級進行項目功能的拆分,以便于后期系統的維護和升級,具體拆分情況如圖5所示。

3.2 Nginx負載均衡實現

為滿足購物網站業務量和數據量不斷增多、系統功能不斷擴展的需求,本文采用Nginx 負載均衡技術進行服務器節點的水平擴展,將海量訪問請求分配到不同服務器節點上,使每臺服務器節點都能發揮作用,減少單節點服務器的訪問壓力,提高系統吞吐量。采用輪詢方法將訪問請求分配到商品管理系統服務器的3 個節點中。Nginx 負載均衡配置信息如圖6所示。

Fig.4 Project split vertically圖4 系統垂直拆分

Fig.5 Project level split圖5 系統水平拆分

Fig.6 Nginx load balancing configuration information圖6 Nginx負載均衡配置信息

4 性能測試

將該購物商城系統部署在VMware 虛擬機的Linux 系統中,IP 地址分別為192.168.182.161,192.168.182.162,192.168.182.163,192.168.182.164,對應的端口號為8081、8082、8083、8084。實驗測試環境為MacOS10.15.5 系統、JDK1.8、MySQL8.0、Redis5.0、Tomcat8.5。

4.1 數據緩存性能

為驗證該購物網站系統的緩存性能,本文利用Post-Man 工具發出Get 請求,請求鏈接為http://localhost:8091/item/cat/list。通過比較加入Redis 緩存數據庫前后該購物網站系統的信息回顯速度,發現加入Redis 緩存數據的系統查詢時間為13ms,比原有系統直接從MySQL 數據庫中查詢快了63ms。具體結果如圖7所示。

Fig.7 Query time comparison圖7 查詢時間比較

4.2 并發性能

為驗證加入Nginx 負載均衡技術后購物網站系統的并發處理能力,運用JMeter 工具進行測試。設置用戶請求量分別為200、300、400、500,Ramp-Up Period(in seconds)為0,Loop Count 為1,通過比較系統響應時間、吞吐量、錯誤率等指標衡量系統性能。由于網絡連接問題會導致在實際測試過程中的數據出現波動,本文采用3 次測試取平均值的方式處理數據結果。表2 為Samples(用戶請求數)分別為200、300、400、500 時,未搭載Nginx 負載均衡單節點服務器與搭載Nginx 負載均衡3 節點服務器的系統測試結果比較,評價項目包括平均響應時間、50%用戶響應時間、90%用戶響應時間、錯誤率、吞吐量等。如表2 所示,no 表示無Nginx 負載均衡單節點服務器系統,yes 表示Nginx 負載均衡3 節點服務器系統。通過分析發現,隨著并發量的增大,搭載Nginx 負載均衡3 節點服務器的系統平均響應時間明顯縮短,二者吞吐量隨并發量的增加均開始減小,但有Nginx 負載均衡的系統吞吐量仍高于無Nginx 負載均衡系統。當用戶請求量分別為300、400、500 時,系統平均響應時間分別縮短了47%、26%、11%,吞吐量分別提高了74%、23%、32%。在錯誤率方面,在并發量較小時,二者的錯誤率均為0,當并發量為500 時,搭載Nginx 負載均衡的系統平均錯誤率小于無Nginx負載均衡系統。

5 結語

本文針對傳統購物網站系統存在的不足,設計并實現了以微服務技術為架構,加入Redis 緩存技術、Nginx 負載均衡技術的購物網站。通過實驗證明了Redis 緩存數據庫可以提升數據的讀取速度,Ngnix 負載均衡技術可以緩解服務器的訪問壓力,提高系統并發能力,以便企業更好地應對未來業務量增大帶來的問題,提升經濟效益。由于實驗條件限制,數據庫主備設計僅擴展到“二主二從”,距離滿足現實情況還有一定差距,但設計思想有一定的參考價值。由于本文研究重點為提升購物網站系統的整體并發性,未考慮到大型促銷活動,如“雙十一”等瞬間高并發請求給系統帶來的訪問壓力,后續需在流量削峰方面作進一步研究,擴大該系統的應用范圍。

Table 2 Multi node server test result with or without Nginx load balancing表2 有無Nginx負載均衡的多節點服務器測試結果

猜你喜歡
數據庫服務系統
Smartflower POP 一體式光伏系統
工業設計(2022年8期)2022-09-09 07:43:20
WJ-700無人機系統
ZC系列無人機遙感系統
北京測繪(2020年12期)2020-12-29 01:33:58
服務在身邊 健康每一天
今日農業(2019年12期)2019-08-15 00:56:32
服務在身邊 健康每一天
今日農業(2019年10期)2019-01-04 04:28:15
服務在身邊 健康每一天
今日農業(2019年16期)2019-01-03 11:39:20
連通與提升系統的最后一塊拼圖 Audiolab 傲立 M-DAC mini
招行30年:從“滿意服務”到“感動服務”
商周刊(2017年9期)2017-08-22 02:57:56
數據庫
財經(2017年2期)2017-03-10 14:35:35
數據庫
財經(2016年15期)2016-06-03 07:38:02
主站蜘蛛池模板: 国产午夜福利片在线观看| 久久窝窝国产精品午夜看片| 国产自在线拍| 亚洲AV无码精品无码久久蜜桃| 国产精品久久久久久久伊一| 日韩视频免费| 久久国产精品77777| 国产精品美人久久久久久AV| 中文字幕日韩久久综合影院| 国产精品免费电影| 欧美在线视频a| 91精品久久久久久无码人妻| 女人18一级毛片免费观看| 久久久精品久久久久三级| 日韩欧美国产三级| 一级高清毛片免费a级高清毛片| 五月天综合网亚洲综合天堂网| 91免费国产在线观看尤物| 日韩免费毛片视频| 国产精品毛片一区视频播| 五月丁香在线视频| 亚洲性日韩精品一区二区| 国产在线麻豆波多野结衣| 激情综合五月网| 制服丝袜国产精品| 国产欧美日韩va另类在线播放| 欧美啪啪网| 亚洲毛片在线看| 免费jizz在线播放| 欧美日韩一区二区三区四区在线观看| 国产成人精品一区二区不卡| 欧洲极品无码一区二区三区| 日韩无码黄色网站| 在线欧美国产| 国产成人福利在线| 999在线免费视频| 成·人免费午夜无码视频在线观看 | 亚洲资源在线视频| 亚洲第一成网站| 日韩精品专区免费无码aⅴ| 国产嫖妓91东北老熟女久久一| 国产精品一老牛影视频| 欧美午夜理伦三级在线观看| 天堂成人在线| 亚洲日韩精品无码专区| 91精品人妻一区二区| 91青青在线视频| 91小视频版在线观看www| 综1合AV在线播放| 国产丝袜一区二区三区视频免下载| 色婷婷久久| 日韩经典精品无码一区二区| 日韩精品亚洲人旧成在线| 国产99精品久久| 无码福利视频| 亚洲视频色图| 久久亚洲AⅤ无码精品午夜麻豆| a色毛片免费视频| 国产精品乱偷免费视频| 国产特一级毛片| 久久一级电影| 久久综合亚洲鲁鲁九月天| 亚洲三级a| 欧美A级V片在线观看| 精品欧美一区二区三区久久久| 91九色国产porny| 97久久人人超碰国产精品| 毛片网站观看| 99色亚洲国产精品11p| 最新痴汉在线无码AV| 日韩精品一区二区三区大桥未久| 欧美在线中文字幕| www.日韩三级| 综合色亚洲| 国产网站免费| 人妖无码第一页| 伊人久热这里只有精品视频99| 欧美日韩国产综合视频在线观看 | 国产亚洲精品91| 亚洲av无码牛牛影视在线二区| 国产午夜精品鲁丝片| 亚洲 成人国产|