李艷紅,成芳,沈朋禮,劉東亮,李曉婉
(1.中國科學(xué)院國家授時中心,西安 710600;2.中國科學(xué)院精密導(dǎo)航定位與授時技術(shù)重點實驗室,西安 710600;3.中國科學(xué)院大學(xué),北京 100049)
近年來,北斗衛(wèi)星導(dǎo)航系統(tǒng)(BDS)應(yīng)用快速發(fā)展,高精度位置服務(wù)越來越多地應(yīng)用到了各行各業(yè),尤其在測繪、精準農(nóng)業(yè)、形變監(jiān)測、地震監(jiān)測、電力監(jiān)測等領(lǐng)域都被廣泛應(yīng)用[1-2]. 很多省市都抓住北斗發(fā)展機遇,大力發(fā)展位置服務(wù)產(chǎn)業(yè),北斗位置服務(wù)平臺的建設(shè)在省級、地市級逐步開展,像黑龍江省、湖北省、遼寧省、陜西省都建設(shè)了符合本地發(fā)展需求的區(qū)域位置服務(wù)平臺,這一系列區(qū)域公共服務(wù)平臺的建設(shè)改善了北斗散戶自發(fā)的粗放式應(yīng)用的局面,將其發(fā)展成區(qū)域公共服務(wù)平臺統(tǒng)一運營的增值式高效益應(yīng)用,更加有利于北斗產(chǎn)業(yè)的可持續(xù)性發(fā)展. 但這些平臺只面向區(qū)域提供服務(wù),區(qū)域與區(qū)域之間的服務(wù)平臺相對獨立,各區(qū)域平臺針對性強、適用性較低,缺少一個相對統(tǒng)一的系統(tǒng)標準,各個區(qū)域位置服務(wù)平臺之間存在重復(fù)建設(shè)的現(xiàn)象,位置服務(wù)數(shù)據(jù)存在大量冗余,計算資源和存儲資源也有很大的浪費. 目前在國內(nèi)面向全國范圍的統(tǒng)一的公共位置服務(wù)平臺暫時空白.
北斗“一帶一路”高精度位置公共服務(wù)平臺(以下簡稱高精度位置服務(wù)平臺)跨越區(qū)域限制,面向全國和“一帶一路”沿線國家提供位置服務(wù),具有規(guī)范的數(shù)據(jù)、服務(wù)、安全、存儲等技術(shù)標準. 平臺采用基于云計算概念和技術(shù)的數(shù)據(jù)中心解決方案,力求建設(shè)完成國內(nèi)最權(quán)威、架構(gòu)最完整、技術(shù)最先進、功能最強大的位置服務(wù)大數(shù)據(jù)云平臺. 目前高精度位置服務(wù)平臺集中了高精度位置服務(wù)的所有業(yè)務(wù),其信息化連續(xù)性直接關(guān)系到用戶體驗和服務(wù)質(zhì)量,隨著用戶量和業(yè)務(wù)的快速增加,平臺將會面臨越來越大的訪問壓力、計算壓力和存儲壓力. 針對這一發(fā)展的急切需求,我們提出了在廣西、泉州、成都等地建立高精度位置服務(wù)平臺分中心的發(fā)展規(guī)劃. 面對多中心的布局,如何根據(jù)高精度位置服務(wù)的不同業(yè)務(wù)特點,設(shè)計主中心與分中心之間的分布式系統(tǒng)架構(gòu),使得主中心與分中心之間能做到系統(tǒng)架構(gòu)融合互通、平臺資源相互支撐、數(shù)據(jù)資源相互共享、業(yè)務(wù)流程相互促進,則是需要迫切解決的關(guān)鍵問題,也是本文的研究意義所在.
目前已有學(xué)者在位置服務(wù)平臺以及多數(shù)據(jù)中心業(yè)務(wù)系統(tǒng)的架構(gòu)設(shè)計上進行過相關(guān)研究. 黑龍江位置服務(wù)平臺[3-4]采用分布式部署與應(yīng)用模式,在黑龍江省架設(shè)總站點,在多地區(qū)布設(shè)分站,但在平臺架構(gòu)上還是采用集中式架構(gòu),以國家“天地圖”和省(市)級節(jié)點提供的地圖服務(wù)資源為數(shù)據(jù)基礎(chǔ)[5],提供規(guī)?;?、業(yè)務(wù)化位置服務(wù). 遼寧省北斗高精度位置服務(wù)平臺[6]采用傳統(tǒng)的集中式架構(gòu),針對東北高緯度地區(qū)可見衛(wèi)星數(shù)量少,空間分布不佳導(dǎo)致的信號接收困難、定位時效性差的問題提出了多星多模數(shù)據(jù)融合定位. 湖北省BDS 高精度位置服務(wù)平臺[7]業(yè)務(wù)體系架構(gòu)分為基礎(chǔ)設(shè)施層、應(yīng)用支撐層、功能服務(wù)層、應(yīng)用層以及表現(xiàn)層,應(yīng)用支撐層為整體架構(gòu)設(shè)計的核心部分,搭建了可動態(tài)擴展的、高可靠的位置服務(wù)云平臺,平臺根據(jù)功能服務(wù)層各應(yīng)用領(lǐng)域的需求,為不同的應(yīng)用領(lǐng)域提供位置服務(wù). 上述區(qū)域位置服務(wù)平臺架構(gòu)均為集中式架構(gòu),拓展性低,集中式架構(gòu)使得整個平臺構(gòu)成過于復(fù)雜,維護成本高,同時也不適用于多中心的運行模式. 秦浩等[8]針對雙中心的客服業(yè)務(wù)系統(tǒng)采用了分布式架構(gòu),從用戶接入、服務(wù)調(diào)度和數(shù)據(jù)復(fù)制等多個方面介紹了異地雙數(shù)據(jù)中心的分布式應(yīng)用架構(gòu),實現(xiàn)了雙中心的系統(tǒng)容災(zāi)和快速切換. 姜青云等[9]針對商業(yè)銀行多中心運行模式提出了分布式異地多活的基礎(chǔ)架構(gòu),對其架構(gòu)進行介紹的同時也指出異地多活運行模式不僅能夠容災(zāi)還能高效承擔(dān)業(yè)務(wù)任務(wù). 上述學(xué)者分別對區(qū)域位置服務(wù)平臺和多中心的商業(yè)業(yè)務(wù)系統(tǒng)架構(gòu)設(shè)計進行了研究,但在異地多中心的高精度位置服務(wù)平臺分布式架構(gòu)設(shè)計上的相關(guān)研究卻是近乎空白.
本文在以上學(xué)者研究的基礎(chǔ)上,針對高精度位置服務(wù)平臺的業(yè)務(wù)特點以及異地多中心的運行模式對高精度位置服務(wù)平臺進行總體架構(gòu)設(shè)計以及分層設(shè)計,采用目前主流的技術(shù)框架結(jié)合業(yè)務(wù)模塊,構(gòu)建一個滿足功能和發(fā)展需求的高可用、高性能的分布式架構(gòu),為平臺的業(yè)務(wù)支撐提供保證.
合理利用分布式架構(gòu)的技術(shù)先進性,采用業(yè)界主流的先進技術(shù)與模式,并與高精度位置服務(wù)業(yè)務(wù)相結(jié)合,確保先進技術(shù)與業(yè)務(wù)模式的有效與適用. 從整體上提高平臺的可靠性,降低平臺對單一設(shè)備可靠性的要求,使得支撐數(shù)據(jù)中心的資源根據(jù)業(yè)務(wù)應(yīng)用需求進行彈性伸縮,實現(xiàn)系統(tǒng)的靈活擴展. 構(gòu)建一個與業(yè)務(wù)平臺相適應(yīng)的高性能、高可用分布式架構(gòu),實現(xiàn)主中心與分中心之間系統(tǒng)架構(gòu)融合互通、平臺資源相互支撐、數(shù)據(jù)資源相互共享、業(yè)務(wù)流程相互促進的目標.
高精度位置服務(wù)平臺主要實現(xiàn)對24 個國際GNSS監(jiān)測評估系統(tǒng)(iGMAS)以及廣域的北斗地基增強系統(tǒng)國內(nèi)框架網(wǎng)155 個基準站的觀測數(shù)據(jù)、廣播星歷以及狀態(tài)空間域(SSR)的實時接收,對于接收到的數(shù)據(jù)進行統(tǒng)一的管理、分發(fā)、處理和存儲,并基于這些數(shù)據(jù)為用戶提供其他位置服務(wù). 例如將接收到的實時觀測數(shù)據(jù)要進行統(tǒng)一的存儲外,觀測數(shù)據(jù)也可進行質(zhì)量分析與評估,并通過頁面展示或郵件發(fā)送數(shù)據(jù)分析評估結(jié)果,從而實現(xiàn)對用戶提供數(shù)據(jù)質(zhì)量分析服務(wù);SSR 改正數(shù)則可通過平臺向用戶直接進行播發(fā),為其精確定位提供數(shù)據(jù)支撐,同時SSR 改正數(shù)與廣播星歷也需要進一步處理生成精密軌道鐘差文件,并將其進行存儲;除此之外,接收到的實時數(shù)據(jù)可根據(jù)用戶需求用于實時動態(tài)定位和實時靜態(tài)定位以獲取精確的定位結(jié)果,存儲的數(shù)據(jù)需要為用戶提供下載服務(wù)等.
高精度位置服務(wù)平臺的主要功能設(shè)計如圖1 所示.
圖1 高精度位置服務(wù)平臺
高精度位置服務(wù)平臺用戶主要分為三類,分別是超級管理員、平臺管理人員和獲取服務(wù)的用戶. 不同角色對應(yīng)不同的權(quán)限級別,超級管理員主要是對所有用戶賬號進行管理并對用戶進行權(quán)限分配;平臺管理人員負責(zé)不斷開發(fā)和完善平臺功能以及對平臺狀態(tài)、各類基準站狀態(tài)等進行監(jiān)控和日常維護;獲取服務(wù)的用戶可在平臺進行賬號注冊和個人信息管理,根據(jù)不同應(yīng)用需求對其進行分級分類,登錄賬號后獲取相應(yīng)服務(wù),這樣以便為不同用戶提供分級分類的位置服務(wù).
高精度位置服務(wù)平臺實時數(shù)據(jù)主要來源于地基增強系統(tǒng)國內(nèi)框架網(wǎng)155 個參考站以及24 個iGMAS站. 接收的實時數(shù)據(jù)包括觀測數(shù)據(jù)、廣播星歷、SSR產(chǎn)品改正數(shù)等. 能夠?qū)崿F(xiàn)Ntrip 實時數(shù)據(jù)接收及模擬測試數(shù)據(jù)讀取,獲取實時數(shù)據(jù)流之后進行實時數(shù)據(jù)流解碼,并校驗各測站的數(shù)據(jù)完整性. 同時也可以接收用戶觀測數(shù)據(jù)以幫助用戶完成定位解算. 由于該項功能中的站點,其數(shù)據(jù)是相互獨立的,可以單獨接收、處理,因此,適用于分布式處理的方式,每個數(shù)據(jù)中心只接收、處理部分站點數(shù)據(jù).
接收到的觀測數(shù)據(jù)、廣播星歷、SSR 產(chǎn)品改正數(shù)以及用戶觀測數(shù)據(jù)均需進行存儲,以便數(shù)據(jù)的使用和數(shù)據(jù)核驗. 為保證高可用、高可靠和經(jīng)濟性,同時采用結(jié)構(gòu)化存儲和非結(jié)構(gòu)化存儲,對用戶信息、基準站信息等采用關(guān)系數(shù)據(jù)庫存儲,對于海量文件采用分布式并行存儲系統(tǒng)來存儲. 分布式并行存儲系統(tǒng)支持大量數(shù)據(jù)和文件的并發(fā)讀寫需求,同時也可以實現(xiàn)容量海量擴展、性能線性擴展,這也完全滿足了平臺數(shù)據(jù)量日益劇增和持續(xù)發(fā)展的需求.
數(shù)據(jù)產(chǎn)品的播發(fā)主要是實時數(shù)據(jù)和實時產(chǎn)品的播發(fā),將標準化為RTCM 格式的數(shù)據(jù)流以Ntrip 協(xié)議進行封裝,外部用戶作為Ntrip Client 通過發(fā)送請求報文獲取Caster 的返回數(shù)據(jù)流,以此向其他用戶提供標準的Ntrip 數(shù)據(jù)播發(fā)服務(wù).
數(shù)據(jù)下載功能是指外部用戶根據(jù)自身需要下載存儲系統(tǒng)的觀測數(shù)據(jù)、廣播星歷、事后精密產(chǎn)品等數(shù)據(jù). 平臺對外提供統(tǒng)一的服務(wù)接口,參照行業(yè)規(guī)則建立FTP 服務(wù)器,對外提供FTP 下載服務(wù),使得外部用戶可以訪問、下載平臺提供的數(shù)據(jù).
數(shù)據(jù)質(zhì)量分析主要是對各站點觀測數(shù)據(jù)進行分析,數(shù)據(jù)來源包括從基準站實時接收的數(shù)據(jù)流、數(shù)據(jù)存儲服務(wù)器的數(shù)據(jù)以及用戶上傳數(shù)據(jù)三種. 能夠通過結(jié)合廣播星歷、電離層產(chǎn)品和精密產(chǎn)品等分析觀測數(shù)據(jù)從而計算各站點衛(wèi)星系統(tǒng)位置精度因子(PDOP)、多路徑、時序圖、星下點軌跡、用戶測距誤差(URE)、用戶等效距離誤差(UERE)等,評估結(jié)果能夠通過頁面進行展示并存儲.
平臺可以實時接收廣播星歷、軌道、鐘差、電離層等實時差分改正數(shù),接收到之后除了進行實時播發(fā),也能夠處理生成可供用戶進行事后精密單點定位(PPP)的SP3、CLK、DCB 文件,并將這些精密文件進行存儲,給用戶提供事后精密產(chǎn)品下載服務(wù).
基于實時數(shù)據(jù)流以及實時SSR 改正數(shù)產(chǎn)品的接收,進行實時精密單點定位(RT-PPP)解算,從而得到米級甚至分米級的定位結(jié)果. 該功能包括多用戶并行實時數(shù)據(jù)預(yù)處理模塊、誤差模型改正模塊、多用戶并行 RT-PPP 計算模塊、多用戶并行RT-PPP 結(jié)果質(zhì)量控制模塊、多用戶并行RT-PPP 結(jié)果展示模塊,同時能夠保證萬名用戶并發(fā)訪問、并且具備事后文件輸入仿真實時計算的能力.
平臺RTK 定位功能提供完備的網(wǎng)絡(luò)RTK—虛擬參考站(VRS)定位功能,RTK 定位基于實時數(shù)據(jù)流以及用戶信息進行組網(wǎng)解算生成虛擬觀測數(shù)據(jù),結(jié)合用戶實時觀測數(shù)據(jù)進行RTK 定位解算,能夠?qū)崿F(xiàn)實時厘米級的定位精度. 該功能能夠滿足對實時性和定位精度都有要求的用戶服務(wù),同時RTK 定位是區(qū)域定位,在各分中心進行RTK 定位模塊的部署,當用戶請求RTK 定位服務(wù)時可根據(jù)用戶所在區(qū)域進行分區(qū)分域任務(wù)分配,能夠有效降低服務(wù)請求的響應(yīng)時間,提高用戶體驗.
平臺根據(jù)用戶不同的定位需求提供RT-PPP、RTK 等完備的基礎(chǔ)定位解算功能,但在是實際應(yīng)用中有多元的應(yīng)用場景,例如滑坡監(jiān)測、車輛管理、房屋監(jiān)測等,這就需要根據(jù)行業(yè)需求進行定制化服務(wù)方案. 平臺提供定制化服務(wù)接入接口,定制化解決方案可以通過該接口獲取平臺實時數(shù)據(jù)并依靠平臺計算資源進行相應(yīng)解算.
定制化方案管理即為對定制化方案接入的不同應(yīng)用場景的管理,主要記錄每一個定制化解決方案的基本信息,包括該定制化方案名稱、狀態(tài)、主要服務(wù)所在地,以及項目的創(chuàng)建時間、修改時間等,保證每一個定制化方案都能記錄在冊,方便平臺管理人員對項目的的添加、查詢與維護,將每一項平臺延伸的定制化服務(wù)都作為平臺的一部分進行統(tǒng)一的管理與維護.
狀態(tài)監(jiān)控功能主要分為兩部分,一是通過對實時流數(shù)據(jù)傳輸?shù)谋O(jiān)測從而對基準站狀態(tài)進行監(jiān)控,二是對收集平臺運行信息并監(jiān)控. 對基準站運行狀態(tài)進行監(jiān)控,出現(xiàn)異常的站點或者不在線站點以及對未接到實時流數(shù)據(jù)站點進行異常提醒,連續(xù)監(jiān)測平臺的運行狀態(tài),出現(xiàn)異常進行警示,提示平臺運維人員進行維護.
日志管理功能是平臺運行時各種信息的流水查看功能,主要提供平臺運行期間出現(xiàn)的各種日志的查看功能、平臺基礎(chǔ)服務(wù)被外圍系統(tǒng)調(diào)用的日志查看功能、平臺管理人員對平臺內(nèi)部進行的優(yōu)化、更新、維護等的日志的查看功能、用戶操作的日志查看功能等. 通過對平臺內(nèi)各種日志信息的管理有利于平臺日常管理和維護.
高精度位置服務(wù)分布式架構(gòu)方案就是針對位置服務(wù)平臺多中心異地模式,為使得主中心與分中心之間協(xié)調(diào)工作,實現(xiàn)數(shù)據(jù)資源相互共享,業(yè)務(wù)流程相互促進進而擴展設(shè)計出的一套高性能和高可用的異地多活分布式架構(gòu). 整體的分布式異地多活基礎(chǔ)架構(gòu)如圖2 所示.
圖2 分布式異地多活基礎(chǔ)架構(gòu)
分布式異地多活首先各個數(shù)據(jù)中心在地域上是分布的,而非集中的,其次數(shù)據(jù)中心在機房基礎(chǔ)設(shè)施、計算資源、存儲資源和網(wǎng)絡(luò)資源的軟硬件部署上是分布的而非集中的. 但是多個數(shù)據(jù)中心之間可以實現(xiàn)資源調(diào)度以及基于全局的運維管理,并且每個數(shù)據(jù)中心都承擔(dān)一定的業(yè)務(wù)服務(wù),相互之間協(xié)同工作. 當某一數(shù)據(jù)中心發(fā)生故障時,其他數(shù)據(jù)中心可分鐘級接管用戶流量,并對關(guān)鍵業(yè)務(wù)實現(xiàn)接管,達到互為備份和共同承擔(dān)業(yè)務(wù)的雙重效果[9].
在架構(gòu)設(shè)計上總體采用Dubbo 分布式架構(gòu)體系,該架構(gòu)體系的中文文檔在國內(nèi)開源框架中當屬一流,為后期開發(fā)提供了強大的支撐,其在國內(nèi)的應(yīng)用也已有很多成熟案例,同時Dubbo 采用RPC 服務(wù)調(diào)用方式,相比于目前市場上其他的分布式架構(gòu)體系具有更好地服務(wù)調(diào)用性能,更適合異地分中心的運行模式. 業(yè)務(wù)模塊采用微服務(wù)集群的形式組合發(fā)布,設(shè)計的平臺分布式架構(gòu)如圖3 所示,從上到下一共分為四層,分別是接入層、應(yīng)用層、服務(wù)層和數(shù)據(jù)存儲層.
圖3 平臺分布式架構(gòu)圖
接入層完成用戶訪問數(shù)據(jù)中心的第一級流量分發(fā). 用戶通過web 瀏覽器、手機APP、第三方用戶OpenAPI 等訪問網(wǎng)站請求服務(wù). 在服務(wù)請求這一過程中接入層通過域名解析(DNS)智能解析遵循就近原則將用戶定向到相應(yīng)的數(shù)據(jù)中心,完成用戶分流的同時也將用戶分配到距離自己最近的分中心(或主中心),能夠減少傳輸距離,有效降低時延,提升用戶體驗感.
應(yīng)用層主要用于定義業(yè)務(wù)的工作流程,根據(jù)平臺功能性需求分析我們可以將高精度位置服務(wù)平臺劃分成用戶管理、狀態(tài)監(jiān)控、定制化方案管理、日志管理、數(shù)據(jù)下載、數(shù)據(jù)質(zhì)量分析、RT-PPP、網(wǎng)絡(luò)RTK、定制化方案接入和提供實時產(chǎn)品十大業(yè)務(wù)模塊. 根據(jù)各項業(yè)務(wù)特點按照一定的劃分規(guī)則來將各項業(yè)務(wù)劃分到不同的數(shù)據(jù)中心,使得各數(shù)據(jù)中心能夠共同分擔(dān)訪客流量,協(xié)同工作.
為了實現(xiàn)業(yè)務(wù)內(nèi)聚保證服務(wù)實時性,我們選擇用戶區(qū)域作為劃分業(yè)務(wù)的單元,這也就是“單元化”. 把地理位置上接近的用戶、基準站劃分到同一個中心(機房),這樣用戶區(qū)域定位的整個流程在同一個機房完成,避免了跨機房調(diào)用造成的時延,這樣既符合實時數(shù)據(jù)接收的分布式處理也能在區(qū)域定位中保證最小的時延,而像廣域定位這種無需單元化的請求則直接分配在主中心完成. 依據(jù)這種劃分規(guī)則進行如下劃分:首先主中心應(yīng)具備提供所有服務(wù)的能力,分中心提供部分服務(wù),并與主中心做數(shù)據(jù)同步. 由于SSR 改正數(shù)由主中心來實時接收并播發(fā),所以RT-PPP、提供實時產(chǎn)品服務(wù)僅由主中心提供;網(wǎng)絡(luò)RTK 是區(qū)域定位,需要借助周邊基準站來實現(xiàn),所以網(wǎng)絡(luò)RTK 服務(wù)由分中心來提供;數(shù)據(jù)分析、數(shù)據(jù)下載、狀態(tài)監(jiān)控、定制化方案管理、日志管理和用戶管理等服務(wù)均由各分中心提供服務(wù),并與主中心做數(shù)據(jù)同步.
每一項業(yè)務(wù)都由一個服務(wù)器集群承載,當同時訪問同一業(yè)務(wù)模塊的用戶量激增時,或者分中心用戶訪問某一業(yè)務(wù)需要轉(zhuǎn)至主中心來完成時,需要將這些請求做負載均衡分配到集群中的每一個服務(wù)器上,從而提高平臺的整體性能,因此在應(yīng)用層引入Nginx 集群實現(xiàn)負載均衡. Nginx 作為開源軟件相較于硬件實現(xiàn)負載均衡成本更低,同時相較于LVS、HAProxy 等負載均衡軟件又具有通過配置能夠同時實現(xiàn)負載均衡和反向代理兩項功能的優(yōu)勢. 其反向代理功能可減少用戶訪問網(wǎng)站過程中由于靜態(tài)資源加載所造成時間延遲. Nginx 作為反向代理服務(wù)器將靜態(tài)資源緩存起來,當用戶發(fā)起獲取網(wǎng)頁請求時,靜態(tài)資源可以直接從反向代理服務(wù)器上獲取,加快訪問速度. 另外,可以采用Nginx+Keepalived 心跳維持組件實現(xiàn)負載均衡的高可用性. 應(yīng)用層的程序應(yīng)當是無狀態(tài)的,不保存任何的中間數(shù)據(jù),它將服務(wù)ID、函數(shù)名以及相關(guān)參數(shù)傳給服務(wù)層框架,框架再將這些參數(shù)分配到具體的服務(wù)上執(zhí)行[10].
服務(wù)層是一個服務(wù)集群,每一項服務(wù)都是相對獨立的,能獨立完成一項任務(wù),并且可以被多個應(yīng)用程序復(fù)用. 本文結(jié)合實際業(yè)務(wù)功能將高精度位置服務(wù)平臺拆分為權(quán)限管理、用戶信息管理、實時數(shù)據(jù)接收、數(shù)據(jù)產(chǎn)品播發(fā)、精密產(chǎn)品生成、RT-PPP 處理、RTK處理、數(shù)據(jù)質(zhì)量分析、數(shù)據(jù)下載、第三方接入、基準站狀態(tài)監(jiān)控、平臺運行監(jiān)控、定制化方案管理、日志管理等14 項服務(wù).
主中心服務(wù)層與分中心服務(wù)層根據(jù)所提供服務(wù)的不同在服務(wù)部署上具有一定差別. 實時數(shù)據(jù)接收和權(quán)限管理是服務(wù)層復(fù)用最多的基礎(chǔ)服務(wù). 權(quán)限管理服務(wù)是所有業(yè)務(wù)的基礎(chǔ),任何用戶的業(yè)務(wù)請求都要經(jīng)過權(quán)限管理服務(wù)的過濾,保證用戶請求的服務(wù)與其自身的權(quán)限相匹配;所有需要實時數(shù)據(jù)的業(yè)務(wù)都要調(diào)用實時接收數(shù)據(jù)服務(wù)作為數(shù)據(jù)源,服務(wù)層的服務(wù)參照應(yīng)用層各個中心業(yè)務(wù)部署進行相應(yīng)部署,其中主中心為了完成所有業(yè)務(wù)模塊需要在服務(wù)層部署所有的服務(wù),而分中心不具備提供RT-PPP 服務(wù)和提供實時產(chǎn)品服務(wù),所以在各分中心部署除RT-PPP 處理、精密產(chǎn)品生成、數(shù)據(jù)產(chǎn)品播發(fā)之外的服務(wù).
每一項服務(wù)可以由一個服務(wù)器集群支撐,避免單點故障造成多項業(yè)務(wù)不可用. 服務(wù)層的分布式服務(wù)框架是依托Dubbo+Zookeeper 的服務(wù)治理策略,實現(xiàn)服務(wù)配置的集中管理與動態(tài)更新,同時也與分布式數(shù)據(jù)庫中間件建立連接,能夠訪問數(shù)據(jù)存儲層的數(shù)據(jù)庫、緩存和文件系統(tǒng).
根據(jù)高精度位置服務(wù)平臺各類數(shù)據(jù)存儲規(guī)模和存儲需求的不同,同時選擇和采用結(jié)構(gòu)化存儲以及非結(jié)構(gòu)化存儲,結(jié)構(gòu)化存儲使用關(guān)系型數(shù)據(jù)庫MySQL,主要用于存儲用戶信息、項目信息以及基準站信息等需要持久化的重要業(yè)務(wù)數(shù)據(jù),并通過MyCAT 中間件構(gòu)建高可用、高并發(fā)的MySQL 集群;平臺持續(xù)接收的基準站數(shù)據(jù)以及高精度產(chǎn)品等非結(jié)構(gòu)化數(shù)據(jù)數(shù)據(jù)量極大,且對存儲的可靠性要求極高,本文中采用基于ParaStor 的分布式存儲系統(tǒng)進行存儲,其相比于傳統(tǒng)的HDFS 具有更高的存儲性能和更高的可靠性;在存儲層也引入遠程字典服務(wù)(Redis)緩存用于緩存用戶獲取服務(wù)期間頻繁訪問的數(shù)據(jù)和需要頻繁插入數(shù)據(jù)庫的數(shù)據(jù). 前者包括用戶的權(quán)限等級等基本信息、用戶操作記錄信息以及平臺的系統(tǒng)通用信息. 后者包括平臺接收的多個基準站的實時數(shù)據(jù),這些數(shù)據(jù)每時每刻都在接收,并且數(shù)據(jù)量很大,如果將這些數(shù)據(jù)直接存入數(shù)據(jù)庫,頻繁的插入會使得數(shù)據(jù)庫服務(wù)器面臨巨大的壓力,也會使得平臺的整體性能大大降低,所以在這里采用Redis 緩存將實時接收到的數(shù)據(jù)先緩存起來,等積累一定量的數(shù)據(jù)后再將這部分緩存起來的數(shù)據(jù)寫入到數(shù)據(jù)庫中,減少數(shù)據(jù)庫的讀寫次數(shù).
高精度位置服務(wù)平臺最核心的功能就是定位功能,通過對全球衛(wèi)星導(dǎo)航系統(tǒng)(GNSS)數(shù)據(jù)處理分析得到定位結(jié)果,從而向用戶提供相關(guān)基礎(chǔ)位置服務(wù)和定制化位置服務(wù). 在對整體功能設(shè)計有了一定了解之后,接下來通過對平臺用戶獲取服務(wù)流程以及RT-PPP 和RTK兩種定位模式的詳細分析來闡述平臺的運行邏輯.
高精度位置服務(wù)平臺在分布式異地多中心的設(shè)計模式下,同一個域名所對應(yīng)的是多個IP 地址,并且部署在異地多個數(shù)據(jù)中心,可以通過智能DNS 服務(wù)技術(shù)實現(xiàn)各中心間的訪問流量負載均衡調(diào)度[9]. 當用戶訪問平臺域名時,首先依據(jù)就近原則對設(shè)備節(jié)點的運行狀態(tài)、節(jié)點當前的負載情況、服務(wù)能力以及分布等情況進行檢測,如果節(jié)點運行狀態(tài)良好是可用節(jié)點,則將用戶請求定向到相應(yīng)的數(shù)據(jù)中心,接下來用戶的登錄等操作則在該數(shù)據(jù)中心進行;如果節(jié)點檢測結(jié)果為不可用,用戶訪問流量將不發(fā)往異常的數(shù)據(jù)中心,而是根據(jù)各節(jié)點的分布、負載情況等重新定向到可用的數(shù)據(jù)中心,這樣即使一個節(jié)點出現(xiàn)故障也可以保證平臺持續(xù)無間斷的對外提供服務(wù).
用戶訪問定向到具體數(shù)據(jù)中心后,需要完成登錄操作,系統(tǒng)將對用戶所屬的區(qū)域以及用戶賬號的狀態(tài)進行判斷,符合區(qū)域范圍以及用戶狀態(tài)健康可用的允許登錄正常訪問,不符合區(qū)域范圍以及賬號狀態(tài)異常的拒絕登錄. 通過驗證后用戶可根據(jù)頁面顯示選擇需要獲取的服務(wù),系統(tǒng)判斷是否為分中心業(yè)務(wù),是分中心業(yè)務(wù)的則提供相關(guān)服務(wù),不是分中心業(yè)務(wù)的轉(zhuǎn)發(fā)給主中心處理,從而完成主中心與分中心的調(diào)度控制,如圖4 所示.
圖4 平臺用戶獲取服務(wù)流程圖
RT-PPP 的關(guān)鍵在于實時軌道、鐘差、電離層、地球自轉(zhuǎn)參數(shù)、碼偏差、相位偏差改正數(shù)等,這些實時差分改正參數(shù)可以由第三方提供,也可以由陸態(tài)網(wǎng)進行數(shù)據(jù)處理實時生成. 高精度位置服務(wù)平臺主中心是直接實時接收外部處理生成的實時差分改正數(shù),并將實時產(chǎn)品播發(fā)給主中心用戶以及分中心,也正是因為主中心處在獲取實時差分改正數(shù)的最前端,所以在主中心完成RT-PPP 解算將會達到最小時延,定位結(jié)果達到最優(yōu). RT-PPP 的處理流程主要如圖5 所示.
圖5 RT-PPP 業(yè)務(wù)流程圖
圖中顯示了整個RT-PPP 業(yè)務(wù)模塊的處理流程,該項業(yè)務(wù)服務(wù)由主中心提供,整個流程由應(yīng)用層進行程序控制,該業(yè)務(wù)的完成需要調(diào)用服務(wù)層的三項服務(wù),分別是權(quán)限管理服務(wù)、實時數(shù)據(jù)流接收服務(wù)以及RT-PPP 處理模塊. 權(quán)限管理服務(wù)用于完成用戶權(quán)限等級的校驗,只有擁有此項服務(wù)權(quán)限的用戶才可以獲取RT-PPP 服務(wù)業(yè)務(wù);實時數(shù)據(jù)流的接收服務(wù)為數(shù)據(jù)處理過程提供數(shù)據(jù)源;RT-PPP 處理服務(wù)則是該業(yè)務(wù)模塊的核心處理流程,進行RT-PPP 解算,得出實時定位結(jié)果.
網(wǎng)絡(luò)RTK 主要采用雙差算法,雙差觀測模型可同時消除了接收機端與衛(wèi)星端的鐘差、初始相位、相位硬件延遲偏差,且可消除電離層等大部分相關(guān)誤差. 本文采用VRS 技術(shù)來實現(xiàn)動態(tài)實時定位,由于VRS 需要根據(jù)流動站概略坐標選擇附近基準站進行組網(wǎng),并根據(jù)網(wǎng)內(nèi)各基準站所采集的實時觀測數(shù)據(jù)在區(qū)域內(nèi)進行整體建模解算,通過建立精確的誤差模型(如電離層、對流層、衛(wèi)星軌道等誤差模型)來生成,所以在距離流動站更近的分中心實現(xiàn)了RTK 服務(wù),這與基準站分布式數(shù)據(jù)接收與處理完美契合.
當用戶請求網(wǎng)絡(luò)RTK 服務(wù)時,系統(tǒng)根據(jù)用戶位置定向到距離用戶最近的分中心,同時該分中心接收和處理用戶附近參考站實時觀測數(shù)據(jù),相當于整個RTK 流程都在本地完成,將時延做到了最小,定位結(jié)果達到了最優(yōu). 它的整體處理流程與RT-PPP 業(yè)務(wù)相似,都是由應(yīng)用層進行程序控制并調(diào)用服務(wù)層的相關(guān)服務(wù),通過多個服務(wù)的協(xié)調(diào)配合最終實現(xiàn)網(wǎng)絡(luò)RTK業(yè)務(wù). 具體處理流程如圖6 所示.
圖6 網(wǎng)絡(luò)RTK 業(yè)務(wù)流程圖
本文基于高精度位置服務(wù)平臺現(xiàn)有業(yè)務(wù)的特點以及異地多中心的發(fā)展規(guī)劃對平臺功能模塊以及分布式架構(gòu)進行了研究與設(shè)計. 在功能模塊設(shè)計中實現(xiàn)了從實時數(shù)據(jù)接收到數(shù)據(jù)處理、播發(fā)、存儲、管理一整套的服務(wù),同時平臺也提供第三方接入服務(wù),為平臺資源充分利用以及行業(yè)用戶定制化服務(wù)提供了可能. 在平臺架構(gòu)中采用分而治之的設(shè)計思想對整體架構(gòu)進行了分層設(shè)計,各層之間相互獨立,為平臺開發(fā)提供了便利. 通過對目前市面上存在的多種技術(shù)進行比較和選型,最終綜合考慮采用與平臺業(yè)務(wù)模式匹配度最高、性能最優(yōu)的主流技術(shù)架構(gòu)完成了高性能的負載均衡方案、服務(wù)治理框架以及數(shù)據(jù)庫架構(gòu),同時結(jié)合每項業(yè)務(wù)的特點詳細分析了服務(wù)拆分和部署情況以及分布式平臺用戶的服務(wù)獲取、基于分布式的RT-PPP 處理、基于分布式的網(wǎng)絡(luò)RTK 處理等關(guān)鍵功能流程,解決了目前所面臨的主、分中心獨立工作、業(yè)務(wù)不連續(xù)的問題,使得主中心與分中心能夠資源共享協(xié)同工作,實現(xiàn)“多活”,從整體上提高平臺性能.
平臺發(fā)展是一個長期的過程,目前只針對現(xiàn)有資源及用戶需求進行了相應(yīng)的功能設(shè)計,在分布式架構(gòu)設(shè)計中也做了有利于功能模塊擴展的設(shè)計,后期還需要不斷的完善和開發(fā),當然在系統(tǒng)架構(gòu)上也需要不斷地進行驗證和優(yōu)化. 隨著用戶需求和業(yè)務(wù)發(fā)展需求的不斷改進,服務(wù)拆分仍然是分布式架構(gòu)中的重中之重,需要充分考慮業(yè)務(wù)特點以及拆分粒度,具體情況具體分析,這也將是后續(xù)研究工作的一個重要方向.