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