陳澤川,寧騰飛,李 智,余文福,王 超
(佛山科學(xué)技術(shù)學(xué)院 數(shù)學(xué)與大數(shù)據(jù)學(xué)院,廣東 佛山 528000)
近年來,隨著互聯(lián)網(wǎng)行業(yè)的高速發(fā)展,人們的日常生活開始離不開它,導(dǎo)致互聯(lián)網(wǎng)訪問量飛速上漲,數(shù)據(jù)量龐大。面對海量的數(shù)據(jù),如果沒有完善的高并發(fā)技術(shù)能力,服務(wù)器就可能會承受過大壓力,致使系統(tǒng)崩潰。如果數(shù)據(jù)庫沒有采用大數(shù)據(jù)優(yōu)化的方式存儲數(shù)據(jù),也會使數(shù)據(jù)庫超負荷,這也是導(dǎo)致系統(tǒng)崩潰的原因之一。這種訪問量暴增的情況經(jīng)常會引發(fā)數(shù)據(jù)丟失、網(wǎng)站崩潰,造成不可估量的損失。由此,分布式微服務(wù)架構(gòu)系統(tǒng)應(yīng)運而生。分布式微服務(wù)架構(gòu)的興起是互聯(lián)網(wǎng)發(fā)展的趨勢,它使得軟件應(yīng)用架構(gòu)具有靈活多變、低耦合、高擴展的特點,能適應(yīng)高并發(fā)環(huán)境[1-4]。面對海量數(shù)據(jù),結(jié)合大數(shù)據(jù)技術(shù),本文開展了Hadoop集群的云存儲模型設(shè)計,創(chuàng)造了HDFS文件系統(tǒng),對HBase保存的數(shù)據(jù)使用MapReduce并行式計算模型的運行環(huán)境,打造了網(wǎng)站信息存儲條件。在算法上,采用基于動態(tài)優(yōu)先級負載均衡調(diào)度算法的節(jié)點均衡負載算法是本次研究的一個重要創(chuàng)新點,以此實現(xiàn)了對Hadoop的優(yōu)化。在大數(shù)據(jù)背景下,使用各種推薦分析算法實現(xiàn)了對海量數(shù)據(jù)的分析和特征化匹配,這是十分有必要的,達到了智能推薦的效果。
Spring Cloud Alibaba框架是一套微服務(wù)架構(gòu)解決方案,包含開發(fā)分布式應(yīng)用微服務(wù)的必要組件,方便開發(fā)者通過編程模型使用這些組件來開發(fā)分布式應(yīng)用服務(wù),只需要添加少量的注解和配置就能簡便快速地搭建起分布式的應(yīng)用,主要有服務(wù)注冊與發(fā)現(xiàn)、服務(wù)限流降級功能、分布式配置和管理、分布式任務(wù)調(diào)度等[5-7]。對比早期各個組件更好用,比如Nacos組件集注冊中心、分布式配置、路由于一身,利用它可以解決多個功能,而且可視化界面也比較流行,功能清晰明了?;诜植际娇蚣艿母鹘M件完整架構(gòu)如圖1所示。
圖1 Spring Cloud Alibaba組件架構(gòu)
Hadoop分布式集群繼承了HDFS、MapReduce、HBase,在此架構(gòu)上實現(xiàn)了大數(shù)據(jù)存儲,數(shù)據(jù)的存儲、計算、分析以及任務(wù)的分解(Map)與結(jié)果的匯總(Reduce)是其主要思想[8-10]。大數(shù)據(jù)技術(shù)在實際應(yīng)用中更加可靠,解決了很多企業(yè)數(shù)據(jù)量大的痛點。其中,HDFS是Hadoop分布式文件系統(tǒng),為分布式計算存儲提供了底層支持;MapReduce用于大規(guī)模數(shù)據(jù)集群的分布式運算;HBase是一個大數(shù)據(jù)型的應(yīng)用數(shù)據(jù)庫。集群Hadoop系統(tǒng)的安裝、部署和配置如圖2所示。
圖2 Hadoop生態(tài)技術(shù)
網(wǎng)站系統(tǒng)主要采用前后端分離的技術(shù),在前端中Nginx負責(zé)請求的負載均衡和反向代理,能夠提高系統(tǒng)的訪問性能,使得在對系統(tǒng)進行訪問時只需要加載Web的動態(tài)資源。前端服務(wù)主要功能是設(shè)計界面和提供API;后端只需要調(diào)用API接口就可以實現(xiàn)相關(guān)業(yè)務(wù)邏輯操作、對數(shù)據(jù)進行增刪改查,進而更新到數(shù)據(jù)庫。后端的數(shù)據(jù)緩存在Redis中或者保存在HBase中。數(shù)據(jù)的計算處理由數(shù)據(jù)計算集群負責(zé)。使用分布式框架將系統(tǒng)垂直切分為10個獨立的業(yè)務(wù)服務(wù):注冊微服務(wù)、網(wǎng)關(guān)微服務(wù)、第三方微服務(wù)、商品微服務(wù)、會員微服務(wù)、檢索微服務(wù)、庫存微服務(wù)、購物車微服務(wù)、訂單微服務(wù)和秒殺微服務(wù)。
訪問網(wǎng)站時所有的微服務(wù)通過Nacos進行注冊,在客戶端對網(wǎng)站進行訪問時先由Gateway網(wǎng)關(guān)進行攔截,再由Nginx負載均衡到指定的微服務(wù),在Nginx上進行動靜分離,減少性能的開銷,各個服務(wù)之間的遠程調(diào)用通過Feign進行連接,使用Sentinel對每個服務(wù)進行熔斷降級,保證網(wǎng)站的可用性;再通過Sleuth集成Zipkin進行全局服務(wù)鏈路追蹤,方便定位和解決問題。使用Redis進行緩存,減少關(guān)系型數(shù)據(jù)庫的壓力;采用RabbitMq消息隊列解決遠程服務(wù)調(diào)用的網(wǎng)絡(luò)問題,保證數(shù)據(jù)的最終一致性。使用Canal訂閱訪問記錄表和商品服務(wù)表的binlog后,通過基于協(xié)同過濾的推薦算法計算出異構(gòu)系統(tǒng)用戶推薦表并展示給用戶。
為了解決系統(tǒng)的網(wǎng)站商品和用戶匹配稀疏性問題,使用了一種基于聚類的協(xié)同過濾推薦算法。該算法依據(jù)兼職項目的特征和用戶對系統(tǒng)的訪問程度,生成基于用戶項目-特征興趣矩陣;使用生成的用戶項目-特征興趣矩陣對用戶進行聚類,將同類用戶對項目的平均感興趣崗位作為同類項目的估計填充用戶-項目評分矩陣,再計算項目相似度并產(chǎn)生推薦結(jié)果。通過實驗證明,在選取不同最近鄰數(shù)量的條件下,提出的基于聚類的協(xié)同過濾推薦算法相比傳統(tǒng)算法,其推薦精度和準確度有一定程度的提高。
在復(fù)雜場景下采用多特征融合的特征匹配算法時,特征匹配是目標識別的基礎(chǔ)。針對特征描述子在多變復(fù)雜場景中的自適應(yīng)問題,從特征向量的低維度、高穩(wěn)健、易計算三個方面,結(jié)合核主成分降維、匹配核的空間映射以及Power-Law歸一化等特征處理方法,提出一種面向復(fù)雜變換環(huán)境的集成低維度的特征匹配算法。首先,采用線性內(nèi)積核將特征向量映射至高維空間提取特征主成分,然后通過Hellinger匹配核完成主成分空間到RootSIFT的映射轉(zhuǎn)換,最后對特征向量進行中心化和Power-Law歸一化,形成新的穩(wěn)健特征向量。實驗證明,該算法簡單易行,特征維度得到了大幅度降低,且在復(fù)雜變換的場景中匹配精度優(yōu)于同類其他算法。在實際的應(yīng)用中將發(fā)揮很大作用。
本文在基于分布式微服務(wù)和Hadoop集群系統(tǒng)的研究中,選擇分布式電商項目作為載體,主要因為淘寶、京東等電商平臺為大家所熟知并且在日常生活中經(jīng)常使用,用戶對電商產(chǎn)品和業(yè)務(wù)較熟悉。其次,該電商項目由多個微服務(wù)模塊組成并聯(lián)通,具有一定的綜合性和復(fù)雜度,適合作為分布式微服務(wù)和高并發(fā)場景下的項目進行落地實現(xiàn)。在“雙11”等大型活動中用戶訪問量巨大,涉及到秒殺服務(wù)等大量數(shù)據(jù)同時訪問同一個請求,非??简烅椖康男阅?,需要針對性地對項目進行優(yōu)化,各個子系統(tǒng)都需要采用分布式框架來進行構(gòu)建。
在進行開發(fā)之前,首先進行需求分析,了解整個項目的需求、整體架構(gòu)的部署、團隊成員之間的分工,以此確定系統(tǒng)需要實現(xiàn)的功能。對于實現(xiàn)一個功能通常有多種方案,要通過多次測試和對比進行性能檢測并不斷優(yōu)化,以便選擇最優(yōu)的方案。使用git進行團隊開發(fā)部署,規(guī)范流程,協(xié)作開發(fā)。由于電商后臺是邏輯和業(yè)務(wù)很繁重的系統(tǒng),十分考驗數(shù)據(jù)庫設(shè)計的能力,所以在數(shù)據(jù)庫設(shè)計這方面需要花費很大的精力。在開發(fā)過程中,各個微服務(wù)之間的開發(fā)雖然是獨立的,但是各個服務(wù)之間的開發(fā)進度往往是并行的,因此需要自己根據(jù)接口情況來完成開發(fā)中的自測。在各個子系統(tǒng)開發(fā)完成之后,團隊成員之間進行系統(tǒng)聯(lián)調(diào),通過相互協(xié)作解決這些問題。在系統(tǒng)開發(fā)后,要對系統(tǒng)進行性能評估,部署到服務(wù)器,做好后期的運維質(zhì)保。
本文運用分布式微服務(wù)架構(gòu)思想,將電商系統(tǒng)切分為10個獨立的微服務(wù)模塊,各微服務(wù)之間通過Nacos實現(xiàn)服務(wù)注冊與發(fā)現(xiàn)、服務(wù)配置,通過輕量級Feign實現(xiàn)各服務(wù)之間的遠程通信和服務(wù)調(diào)用。系統(tǒng)使用Nginx做動靜分離、負載均衡,采用Gateway做API網(wǎng)關(guān)轉(zhuǎn)發(fā)請求,使用Sentinel對每個服務(wù)進行熔斷降級,保證網(wǎng)站的可用性;再通過Sleuth集成Zipkin進行全局服務(wù)鏈路追蹤。在計算數(shù)據(jù)集群中部署安裝了Hadoop平臺以及Kafka、Flink、Zookeeper等組件對資源進行計算和管理。使用基于聚類的協(xié)同過濾推薦算法和多特征融合的特征匹配算法實現(xiàn)了智能推薦和匹配。