周海軍 朱軍紅 李軍
[摘 要]移動(dòng)應(yīng)用的普及,對系統(tǒng)應(yīng)用架構(gòu)設(shè)計(jì)提出了新的要求,反向代理技術(shù)、分布式數(shù)據(jù)庫技術(shù)、NoSQL技術(shù)、內(nèi)存數(shù)據(jù)庫、全文檢索、人工智能各項(xiàng)技術(shù)已成為架構(gòu)設(shè)計(jì)者的必備知識(shí),只有掌握了這些技術(shù)才能設(shè)計(jì)出滿足上億用戶量的應(yīng)用系統(tǒng)。
[關(guān)鍵詞]云時(shí)代;反向代理;數(shù)據(jù)庫;事務(wù)管理;人工智能
doi:10.3969/j.issn.1673 - 0194.2020.02.072
[中圖分類號(hào)]F239.1[文獻(xiàn)標(biāo)識(shí)碼]A[文章編號(hào)]1673-0194(2020)02-0-02
1? ? ?云時(shí)代信息系統(tǒng)開發(fā)的特點(diǎn)
進(jìn)入云時(shí)代云平臺(tái)可以提供各種解決方案供用戶選擇使用,開發(fā)軟件時(shí)有很多的設(shè)計(jì)者不再考慮系統(tǒng)運(yùn)行的硬件環(huán)境配置,不用考慮系統(tǒng)的運(yùn)行維護(hù),軟件出資方只需要付費(fèi)就可得到想要的服務(wù),應(yīng)用開發(fā)人員可將精力主要關(guān)注于軟件功能實(shí)現(xiàn)上。這種時(shí)代特色給人們帶來了便利,忽視系統(tǒng)架構(gòu)設(shè)計(jì)的思潮也在現(xiàn)實(shí)中逐漸蔓延。然而對架構(gòu)設(shè)計(jì)不了解者開發(fā)出的軟件不能在實(shí)際應(yīng)用中靈活多變,在系統(tǒng)用戶量大,并發(fā)用戶多,業(yè)務(wù)數(shù)據(jù)跨部門、跨企業(yè)、跨系統(tǒng)多,系統(tǒng)要求“7×24小時(shí)”可用,希望能夠有效利用歷史數(shù)據(jù)進(jìn)行大數(shù)據(jù)運(yùn)算為商業(yè)提供決策依據(jù)實(shí)現(xiàn)商業(yè)利益最大化的今天,設(shè)計(jì)一個(gè)需要廣泛與應(yīng)用的信息系統(tǒng)利用云平臺(tái)提供的功能顯然不能滿足業(yè)務(wù)擴(kuò)充的需要,設(shè)計(jì)者必須具備分布式應(yīng)用、微服務(wù)架構(gòu)等理念應(yīng)用多種技術(shù)。
2? ? ?云時(shí)代應(yīng)用的技術(shù)
2.1? ?反向代理技術(shù)
在家里或是在野外,人們通過路由器或一個(gè)手機(jī)熱點(diǎn)可以實(shí)現(xiàn)多臺(tái)設(shè)備同時(shí)上網(wǎng),這個(gè)過程中使用了正向代理技術(shù),多個(gè)客戶機(jī)連接一臺(tái)代理服務(wù)器將連接互聯(lián)網(wǎng)的需求提交到了代理服務(wù)器,然后有代理服務(wù)器將需求轉(zhuǎn)發(fā)到網(wǎng)絡(luò)服務(wù)器,網(wǎng)絡(luò)服務(wù)器將客戶需求的資源發(fā)給代理服務(wù)器,代理服務(wù)器再將收到的信息發(fā)送給客戶機(jī)。在正向代理過程中,代理服務(wù)器的前端是多客戶后端的單服務(wù)器,解決的是IP地址不夠用的問題。但是一個(gè)全球幾十億人都能訪問的熱門網(wǎng)站如何保證系統(tǒng)能夠流暢,同時(shí)滿足每個(gè)訪問者的瀏覽需求,就使用了反向代理技術(shù),一個(gè)網(wǎng)站對外公開一個(gè)域名所用的訪問者都可通過該域名訪問網(wǎng)站,在客戶看來,一個(gè)網(wǎng)站就是一個(gè)地址,其實(shí)在公開的域名背后采用了反向代理技術(shù),使用多臺(tái)的服務(wù)器通過反向代理服務(wù)器與互聯(lián)網(wǎng)相連接,反向代理服務(wù)器將眾多用戶需求分配到了不同的服務(wù)器上,使用多臺(tái)服務(wù)器為用戶提供網(wǎng)絡(luò)服務(wù)。反向代理服務(wù)器是為提高系統(tǒng)效率與系統(tǒng)可用性設(shè)計(jì)的,最為出名的反向代理服務(wù)器是俄羅斯的Nginx,利用Nginx可實(shí)現(xiàn)網(wǎng)站對外提供一個(gè)虛擬服務(wù)器地址,然后通過多臺(tái)服務(wù)器與Nginx連接,Nginx可以將客戶訪問負(fù)載分配到不同的服務(wù)器以實(shí)現(xiàn)高效率系統(tǒng)運(yùn)行。反向代理技術(shù)是負(fù)載均衡的一種,為了適應(yīng)海量并發(fā)訪問,在網(wǎng)絡(luò)各層中都有不同的負(fù)載均衡解決方案,其中在IP層應(yīng)用的硬件設(shè)備F5就是其中的一種,作為應(yīng)用系統(tǒng)開發(fā)結(jié)構(gòu)的設(shè)計(jì)者,理解應(yīng)用相關(guān)負(fù)載均衡技術(shù)對設(shè)計(jì)高可用性系統(tǒng)非常有益。
2.2? ?分布式數(shù)據(jù)庫技術(shù)
高并發(fā)的系統(tǒng)中,單一的數(shù)據(jù)庫已不能滿足系統(tǒng)負(fù)載需求,Oracle提供了分布式的解決方案,但是高昂的價(jià)格讓人望而卻步,國內(nèi)的淘寶網(wǎng)為了適應(yīng)日益增長的業(yè)務(wù)需求,開發(fā)了自己的數(shù)據(jù)庫中間件,采用了SQL攔截技術(shù)將訪問數(shù)據(jù)庫的各類查詢語句(Select,Update,Insert)通過中間件攔截,然后將語句分配在不同的數(shù)據(jù)庫服務(wù)中進(jìn)行查詢運(yùn)算,并通過中間件將查詢結(jié)果合并發(fā)送給客戶機(jī)。通過數(shù)據(jù)庫中間件不但可以實(shí)現(xiàn)數(shù)據(jù)庫分布化管理,還可以提供數(shù)據(jù)備份實(shí)現(xiàn)系統(tǒng)故障下的系統(tǒng)自動(dòng)切換,保證系統(tǒng)的高可用性。數(shù)據(jù)庫中間件在此推薦使用Mycat,目前國內(nèi)采用該方案的應(yīng)用解決方案越來越多,Mycat能夠?qū)崿F(xiàn)目前流行的數(shù)據(jù)庫Oracle,Mysql,SQL Server,Mongodb的分布式管理。
2.3? ?關(guān)系數(shù)據(jù)與NoSQL的融合
目前,各類應(yīng)用需求的發(fā)展關(guān)系數(shù)據(jù)庫已不能滿足實(shí)際需求,大量的音像視頻與文檔資料需要在數(shù)據(jù)庫中管理與應(yīng)用,關(guān)系數(shù)據(jù)庫中存放大的文件或者在關(guān)系數(shù)據(jù)庫中存放文件路徑的管理模式,已不能適應(yīng)快速的資源檢索,近年來興起的非關(guān)系數(shù)據(jù)庫已經(jīng)成為關(guān)系數(shù)據(jù)庫的重要補(bǔ)充,Mongodb就是一個(gè)不錯(cuò)的開源非關(guān)系數(shù)據(jù)庫代表,Mongodb不但是開源,而且是一個(gè)分布式的數(shù)據(jù)庫,基于文件目錄管理的管理理念可將分布在不同服務(wù)器上的數(shù)據(jù)納入一個(gè)數(shù)據(jù)庫中進(jìn)行管理,NoSQL數(shù)據(jù)庫為訪問檢索數(shù)據(jù)提供了高效便捷的訪問接口,目前在各種應(yīng)用系統(tǒng)中都采用關(guān)系數(shù)據(jù)庫與非關(guān)系數(shù)據(jù)庫系統(tǒng)結(jié)合應(yīng)用的解決方案。管理圖片、視頻及文檔資料采用NoSQL數(shù)據(jù)庫,管理其他信息采用關(guān)系數(shù)據(jù)庫。
2.4? ?內(nèi)存數(shù)據(jù)庫技術(shù)
為了應(yīng)對秒殺搶購這種短時(shí)間內(nèi)完成很多事物處理的應(yīng)用場景,克服數(shù)據(jù)庫訪問磁盤數(shù)據(jù)效率低下的問題,近年來興起了內(nèi)存數(shù)據(jù)庫技術(shù),典型的內(nèi)存數(shù)據(jù)庫有Redis Memcached,內(nèi)存數(shù)據(jù)庫大都支持分布式,可將數(shù)據(jù)存放在不同機(jī)器的內(nèi)存中供應(yīng)用訪問,但是內(nèi)存數(shù)據(jù)庫一般都采用簡單的key-value結(jié)構(gòu)。內(nèi)存數(shù)據(jù)庫系統(tǒng)將對數(shù)據(jù)庫的修改暫時(shí)存放在內(nèi)存中,然后定時(shí)(時(shí)間間隔很短)的將數(shù)據(jù)寫入磁盤做長期保存,在開發(fā)實(shí)時(shí)性要求較高的系統(tǒng)時(shí)設(shè)計(jì)者采用內(nèi)存數(shù)據(jù)庫技術(shù)。
2.5? ?最終一致性的事務(wù)管理
云時(shí)代環(huán)境下一個(gè)業(yè)務(wù)應(yīng)用跨越一個(gè)以上數(shù)據(jù)庫的業(yè)務(wù)處理隨處可見,分布式的數(shù)據(jù)管理可造成同一數(shù)據(jù)庫的不同數(shù)據(jù)表存放在不同的服務(wù)器上,一個(gè)交通違章處理業(yè)務(wù)就需要修改公安局違章數(shù)據(jù)庫的罰分信息,同時(shí)還要修改駕駛員的銀行賬戶信息以及公安局開戶行的銀行信息。這樣一個(gè)普通的業(yè)務(wù)至少要修改3個(gè)不在同一地方的數(shù)據(jù)庫。過去對一個(gè)數(shù)據(jù)操作通過數(shù)據(jù)庫事務(wù)確保業(yè)務(wù)成功完成或徹底失敗的業(yè)務(wù)處理顯然已不再可用,為了保證系統(tǒng)的高可用性及數(shù)據(jù)的一致性,系統(tǒng)設(shè)計(jì)必須采用新的機(jī)制確保業(yè)務(wù)提交正常完成。通常確保系統(tǒng)高可用、數(shù)據(jù)一致的可行做法是采用消息通信日志管理,消息通信可以直接使用操作系統(tǒng)的消息隊(duì)列進(jìn)行信息傳遞。日志管理則是設(shè)計(jì)者自行設(shè)計(jì)一套日志系統(tǒng),在提交業(yè)務(wù)的同時(shí)記錄其他聯(lián)動(dòng)數(shù)據(jù)操作的日志,然后再查詢聯(lián)動(dòng)數(shù)據(jù)操作是否正常修改,正常修改則確定整個(gè)業(yè)務(wù)完成,刪除對應(yīng)的日志信息;如果沒有正常修改則再利用日志信息在聯(lián)動(dòng)的數(shù)據(jù)庫上執(zhí)行補(bǔ)救性的修改,如果補(bǔ)救性修改不能完成則進(jìn)行業(yè)務(wù)回滾。
2.6? ?全文檢索技術(shù)
目前,站內(nèi)搜索,全文搜索的需求在與日俱增,大型搜索引擎Google、 Baidu等采用的技術(shù)對外沒有公開,一般的應(yīng)用使用不到其中的技術(shù),但是采用Java5開發(fā)的Solr卻是一個(gè)觸手可及的全文搜索服務(wù)器,性能高,提供了層面搜索、命中醒目顯示并且支持多種輸出格式(包括XML/XSLT和JSON格式),易于安裝和配置,附帶了一個(gè)基于HTTP的管理界面。Solr已經(jīng)在眾多大型的網(wǎng)站中使用,較為成熟和穩(wěn)定。
2.7? ?人工智能技術(shù)
目前,人工智能已經(jīng)廣泛應(yīng)用在了各個(gè)領(lǐng)域,利用大數(shù)據(jù)進(jìn)行機(jī)器學(xué)習(xí)以及深度機(jī)器學(xué)習(xí)可以找出商業(yè)運(yùn)行規(guī)律,可以提高企業(yè)的經(jīng)濟(jì)效益,美國一家證券公司采用人工智能技術(shù)開發(fā)了自動(dòng)的股票交易系統(tǒng),該公司的交易完全由人工智能系統(tǒng)自動(dòng)完成,結(jié)果一年后該公司的收益達(dá)到了整個(gè)行業(yè)的3倍。當(dāng)前用于人工智能開發(fā)的框架很多,其中知名度最高的是Google的TensorFlow,然而簡捷好用的則是PyTorch框架。
3? ? ?分布式系統(tǒng)運(yùn)行架構(gòu)
為了實(shí)現(xiàn)系統(tǒng)的高并發(fā),海量數(shù)據(jù)存儲(chǔ),確保系統(tǒng)24小時(shí)可用,大型應(yīng)用系統(tǒng)采用負(fù)載均衡技術(shù)滿足現(xiàn)實(shí)需求,本結(jié)構(gòu)中使用了10臺(tái)應(yīng)用服務(wù)器,通過反向Nginx代理服務(wù)器對外提供服務(wù),在網(wǎng)絡(luò)層利用F5實(shí)現(xiàn)了IP負(fù)載均衡。來自網(wǎng)絡(luò)的服務(wù)請求首先通過F5負(fù)載載均衡器,Nginx服務(wù)器負(fù)責(zé)將需求分解到具體的服務(wù)器上進(jìn)行數(shù)據(jù)處理,然后將處理結(jié)果發(fā)送給數(shù)據(jù)請求者,這是一個(gè)典型的三層負(fù)載均衡的架構(gòu),如圖1所示。
主要參考文獻(xiàn)
[1]鄒華.基于云計(jì)算的高校信息管理系統(tǒng)的設(shè)計(jì)研究[J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2015(2).
[2]馬永鋒,陸鍵,項(xiàng)喬君,等.省域公路出行者信息服務(wù)系統(tǒng)架構(gòu)設(shè)計(jì)研究[J].公路交通科技,2007(10).
[3]左冰,周光濤,唐雄燕.未來互聯(lián)網(wǎng)實(shí)驗(yàn)服務(wù)系統(tǒng)架構(gòu)設(shè)計(jì)研究報(bào)告[J].科技創(chuàng)新導(dǎo)報(bào),2016(11).
[4]崔嘉,洪貝.基于云智慧的設(shè)備遠(yuǎn)程監(jiān)測系統(tǒng)架構(gòu)設(shè)計(jì)研究[J].儀表技術(shù),2016(6).
[5]易瑜.基于云計(jì)算養(yǎng)豬信息化管理系統(tǒng)的架構(gòu)設(shè)計(jì)[J].職教與經(jīng)濟(jì)研究,2014(3).
[6]劉燕.基于云計(jì)算信息處理系統(tǒng)體系結(jié)構(gòu)設(shè)計(jì)[J].科技通報(bào),2012(8).