国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于微服務架構的鐵路企業(yè)年金信息系統(tǒng)研究與實現(xiàn)

2019-06-10 07:52王敬林朱韋橋
鐵路計算機應用 2019年5期
關鍵詞:網關日志架構

王敬林 ,朱韋橋

(1.中國鐵道科學研究院 研究生部,北京 100081;2.北京經緯信息技術有限公司,北京 100081;3.中國鐵道科學研究院集團有限公司 電子計算技術研究所,北京 100081)

鐵路企業(yè)面對著繁雜的企業(yè)年金經辦業(yè)務、巨額的年金基金管理和嚴格的投資監(jiān)督等日常業(yè)務管理,傳統(tǒng)的手工方式或完全依托賬管人提供的信息系統(tǒng)進行管理,已無法滿足業(yè)務發(fā)展需要,部分企業(yè)已經建設了相關企業(yè)年金信息系統(tǒng),用于企業(yè)年金業(yè)務管理,由于設計理念和開發(fā)技術的限制,多采用單體架構進行系統(tǒng)的構建[1-2],但在運行過程中暴露了一些問題:

(1)企業(yè)年金政策性強、時效要求嚴格,鐵路企業(yè)年金業(yè)務調整頻繁,具有涉及人員廣、業(yè)務操作復雜、專業(yè)性強等特點,年金系統(tǒng)需要根據(jù)業(yè)務規(guī)則的變化,進行及時迭代與更新,而傳統(tǒng)的單體架構信息系統(tǒng)可維護性和可擴展性較差,面對微小的調整,整體系統(tǒng)都需要經歷開發(fā)、測試、整體打包、停機、更新、部署、啟動等實施過程,無法適應高頻率更新升級的業(yè)務要求。

(2)年金信息系統(tǒng)涉及成員單位多、業(yè)務規(guī)則多、對口機構多且數(shù)據(jù)交互頻繁,導致子系統(tǒng)和功能模塊多,單體架構信息系統(tǒng)局部子系統(tǒng)或功能模塊的故障,將導致整體系統(tǒng)崩潰,無法滿足系統(tǒng)的高可用性。

(3)隨著鐵路云計算的發(fā)展,鐵路企業(yè)已基本實現(xiàn)資源虛擬化、系統(tǒng)集群化的生產環(huán)境,單體架構信息系統(tǒng)面臨運行瓶頸,同時,無法充分利用云計算可伸縮性、高擴展性的優(yōu)勢和特長[3]。

本文主要研究基于微服務架構構建的鐵路企業(yè)年金信息系統(tǒng)(簡稱:微服務年金系統(tǒng)),解決單體年金信息系統(tǒng)的諸多問題。

1 基于微服務架構的系統(tǒng)設計

1.1 鐵路企業(yè)年金管理需求

鐵路企業(yè)一般采用理事會受托管理模式,即鐵路企業(yè)和職工作為委托人,委托企業(yè)年金理事會(受托人)管理企業(yè)年金基金。理事會下一般會設置專門經辦機構(理事會辦公室),負責企業(yè)年金理事會日常工作。由受托人選擇一家同時具有賬戶管理、托管資質的機構作為賬戶管理人和托管人,由受托人選擇若干家具有投資管理資質的機構作為投資管理人[2],企業(yè)年金各管理機構的職責分工與信息流傳輸如圖1所示。

圖1 企業(yè)年金管理機構職責分工及信息流傳輸示意圖

鐵路企業(yè)年金業(yè)務整體可分為計劃層和成員層,其中,計劃層包括產生和存續(xù)2個階段,成員層包括產生、存續(xù)和終止3個階段。計劃層產生階段主要包含計劃建立相關流程;存續(xù)階段主要包含計劃監(jiān)督、基金運作、投資監(jiān)督和信息披露4部分。成員層產生階段主要包含單位及職工的計劃加入相關流程;存續(xù)階段主要包含單位及職工的信息變更和年金繳費2部分;終止階段主要包含計劃退出流程。需求結構,如圖2所示。

圖2 鐵路企業(yè)年金管理總體需求結構圖

1.2 微服務架構簡述

微服務架構是一系列小的、松耦合的分布式服務,這些服務圍繞業(yè)務能力劃分構建,具有組件化、通信協(xié)議輕量化、服務集中化、數(shù)據(jù)分散化的優(yōu)點,能夠使用不同的編程語言、不同的存儲技術在云平臺下獨立部署[4-6]。

1.3 系統(tǒng)總體架構

1.3.1 微服務拆分

領域驅動設計(DDD,Domain Driven Design)是一種以領域為核心的設計方法與理念。系統(tǒng)采用DDD理念,結合鐵路企業(yè)年金管理業(yè)務,將企業(yè)年金業(yè)務領域拆分為:(1)核心域:成員領域;(2)支撐子域:年金計劃子域,成員單位子域,繳費子域,支付子域等;(3)通用子域:消息子域,文件子域,流程子域,報表子域等。

使用場景走查的方法,確認領域模型滿足領域中的業(yè)務場景和業(yè)務流程,根據(jù)每一個子域對應的邊界上下文完成服務的拆分。業(yè)務服務主要包括:年金計劃服務,成員單位服務,成員服務,年金繳費服務,年金支付服務等;公共服務包括:消息服務,文件服務,日志服務,流程服務等。

1.3.2 微服務年金系統(tǒng)總體架構

系統(tǒng)總體架構分為表現(xiàn)層、接口層、實體層、業(yè)務服務層、公共服務層、服務治理與監(jiān)督、資源層等7個部分,如圖3所示。

圖3 微服務年金系統(tǒng)總體架構圖

(1)表現(xiàn)層:使用前后端分離技術,對后臺服務進行組合,完成與用戶的交互。本系統(tǒng)中的年金日常業(yè)務管理和年金投資監(jiān)督管理等頁面功能,可以在后臺服務接口確定的情況下進行前端的獨立開發(fā)。

(2)接口層:將實體層、業(yè)務服務層、公共服務所覆蓋的內容進行聚合,按照客戶端的需求,為表現(xiàn)層提供符合展示要求的數(shù)據(jù),封裝成接口服務。如成員單位接口、成員接口、年金繳費接口、待遇支付接口、成交管理接口、投資轉換接口等。接口提供在線數(shù)據(jù)交互和數(shù)據(jù)文件導入導出2種方式。

(3)實體層:微服務架構下的實體同時為業(yè)務服務和公共服務提供支持,在接口需要的情況下也可以直接調用。系統(tǒng)中,所有的數(shù)據(jù)均將封裝為接口,方便對外提供統(tǒng)一的數(shù)據(jù)服務能力,包括計劃信息、成員單位信息、成員信息、繳費信息、支付信息模型等。

(4)業(yè)務服務層:結合企業(yè)年金的實際業(yè)務,將實體和公共服務進行封裝,為接口層提供支持。本層涵蓋本系統(tǒng)的主要業(yè)務,包括年金計劃服務、成員單位服務、成員服務、年金繳費服務、待遇支付信息服務等。

(5)公共服務:將微服務年金系統(tǒng)中多處用到的功能進行統(tǒng)一封裝,以便更好地為業(yè)務服務層提供支持,包括消息服務、文件服務、日志服務、流程服務、緩存服務等。

(6)服務監(jiān)督與治理:微服務架構下,對服務的安全、監(jiān)控、預警十分重要。服務監(jiān)督與治理貫穿公共服務層、業(yè)務服務層和接口層,主要提供服務注冊、服務監(jiān)控、服務授權、日志分析、熔斷器等功能,實現(xiàn)對微服務的治理。

(7)資源層:主要是指系統(tǒng)操作的相關資源,包括數(shù)據(jù)庫資源及各類文件資源,如計劃信息庫、成員單位信息庫、成員信息庫、繳費信息庫、待遇支付信息庫,以及相關的各類附件信息庫(業(yè)務經辦文件、指令等)。

2 系統(tǒng)關鍵技術實現(xiàn)

2.1 微服務架構技術實現(xiàn)

Spring Cloud 是一系列框架有序集合,其標準化的、全站式的技術方案構成了一個生態(tài)圈,涵蓋了眾多微服務架構實現(xiàn)所需的核心組件,例如,服務網關、服務注冊發(fā)現(xiàn)、配置中心、認證授權、容錯限流、調用鏈監(jiān)控、日志監(jiān)控等[7-8]。本系統(tǒng)微服務架構實現(xiàn)主要使用的組件如圖4所示。

圖4 微服務年金系統(tǒng)技術實現(xiàn)圖

(1)服務網關:客戶端請求通過統(tǒng)一的服務網關接入后端服務。網關使用Zuul、Ribbon和Eureka 3個組件,實現(xiàn)智能路由和負載均衡的功能。智能路由就是依據(jù)請求策略將請求網關轉發(fā)到認證授權服務,按照相應的權限分發(fā)到相應的服務實例,防止非法請求訪問后端服務,同時,Zuul為后期規(guī)劃的灰度測試創(chuàng)造了條件。

(2)服務注冊發(fā)現(xiàn):Eureka是一個基于REST的服務注冊中心。在微服務架構中,服務需要集中化管理,因此,基礎服務、公共服務和通用服務需要通過服務治理實現(xiàn)自動化注冊和發(fā)現(xiàn)。服務注冊中心是網關服務路由信息存儲倉庫,也是服務之間進行交互的媒介,發(fā)揮著服務注冊和發(fā)現(xiàn)的作用。Eureka支持服務續(xù)約和服務下線,方便用戶定位服務問題以及提供中間層服務器的故障轉移。

(3)配置中心:Spring Cloud Config結合Git實現(xiàn)配置中心的搭建和配置信息的統(tǒng)一管理。配置服務通過注冊中心注冊到Eureka Server,企業(yè)年金服務可以通過注冊中心發(fā)現(xiàn)配置服務,企業(yè)年金服務從而獲取所需要的配置信息。

(4)認證授權:Spring Security、OAuth2和JWT實現(xiàn)微服務年金系統(tǒng)的認證授權??蛻舳苏埱笸ㄟ^網關路由到認證鑒權服務,獲取用戶登錄信息和權限信息,客戶端攜帶Token支持跨程序調用。微服務年金系統(tǒng)存在異構系統(tǒng),利用JWT實現(xiàn)單點登錄。

(5)容錯限流:Hystrix實現(xiàn)微服務架構的服務可靠性,Hystrix服務延遲和容錯庫可用來隔離服務故障,確保系統(tǒng)穩(wěn)健運行。各個服務獨立部署,且服務與服務之間存在相互依賴關系,因此,服務訪問失敗的原因和場景非常復雜,容錯限流服務可以實現(xiàn)服務隔離、服務降級和服務熔斷,從而阻止聯(lián)動故障的發(fā)生。

(6)調用鏈監(jiān)控:Spring Cloud Sleuth結合Zipkin構建微服務的調用鏈監(jiān)控,客戶端每一個請求在調用過程需要多個服務,每個服務獨立部署在不同物理機器和不同數(shù)據(jù)存儲之間,調用鏈監(jiān)控可以跟蹤一個或多個事務,然后,拼接出服務運行的全鏈路。通過Zipkin可以查看跨多個事務的事務流。

(7)日志監(jiān)控:日志監(jiān)控通過ELK(Elastic Search、Logstash、Kibana)和Kafka實現(xiàn)日志收集與監(jiān)控,分布在不同服務器的日志收集組件,通過消息中間件Kafka傳遞給Logstash,進行過濾分析后將數(shù)據(jù)存儲在Elastic Search,通過Kibana查看所有的日志數(shù)據(jù)。

2.2 前端實現(xiàn)

微服務年金系統(tǒng)采用前后端分離,前端使用Angular和Typescript開發(fā),實現(xiàn)MVC劃分和通道、路由等設計。前端應用部署在Nginx組合的服務器上,通過反向代理轉發(fā)頁面請求到后端服務器,同時Nginx實現(xiàn)前端的負載均衡[9]。

應用整體界面采用完全的響應式編程,使得數(shù)據(jù)驅動、局部刷新容易實現(xiàn);采用Bootstrap兼容可擴展框架,通過頁面柵格自適應各種分辨率的顯示器,實現(xiàn)更好的用戶體驗。

2.3 認證授權實現(xiàn)

通常,微服務架構的認證授權采用Spring Security、OAuth2和JWT的組合,該認證授權框架雖然具有一次獲取Token可以多次使用的優(yōu)勢,即不需要每次都到認證授權服務去獲取用戶信息和權限信息,但是,如果用戶權限發(fā)生改變,Token存儲的信息不能及時變更,就會造成業(yè)務的漏洞,微服務年金系統(tǒng)通過引入緩存數(shù)據(jù)庫(Redis)技術,用于存儲Token信息,當用戶權限更改時,將會自動刪除存在Redis的Token,請求再次經過網關時,驗證Token不存在,提示用戶重新登錄。

微服務年金系統(tǒng)授權認證過程,如圖5所示。

(1)客戶端發(fā)送請求到服務網關后,網關會根據(jù)請求路徑過濾請求[9]。如果該路徑是登錄并獲取Token操作的路徑則直接放行,請求直接到達認證授權服務進行登錄操作;

(2)進行JWT私鑰加密,生成Token存儲到Redis;

(3)返回給客戶端。如果是其他請求,將會到Redis驗證Token是否存在,若不存在,則返回客戶端重新登錄;若Token存在,則進行Token私鑰解密校驗:如果token被篡改或者失效,則直接拒絕訪問并返回錯誤信息;如果驗證成功,經過路由到達請求的年金業(yè)務服務,請求服務響應并返回數(shù)據(jù)。

圖5 微服務年金系統(tǒng)授權認證過程圖

2.4 數(shù)據(jù)存儲實現(xiàn)

微服務年金系統(tǒng)將數(shù)據(jù)和服務分開,保證服務的獨立性。由于鐵路企業(yè)數(shù)據(jù)要求集中管理,數(shù)據(jù)存儲采用集中式的數(shù)據(jù)管理方式再實現(xiàn)數(shù)據(jù)的獨立性[10-11]。系統(tǒng)針對每個業(yè)務服務劃分專門的獨立空間,從邏輯上與其他服務相隔離,如圖6所示??缙髽I(yè)年金業(yè)務的數(shù)據(jù)存儲依據(jù)BASE思想,即基本可用(Basically Available)、軟狀態(tài)(Soft state)和最終一致性(Eventually consistent)的TCC模式實現(xiàn)分布式事務。

圖6 微服務年金系統(tǒng)數(shù)據(jù)存儲實現(xiàn)圖

3 應用效果

微服務年金系統(tǒng)已上線運行,應用效果顯著。系統(tǒng)實現(xiàn)了鐵路企業(yè)內部成員、年金資金、年金業(yè)務規(guī)則等基礎數(shù)據(jù)統(tǒng)一管理,與相關系統(tǒng)數(shù)據(jù)交換和信息共享,信息流、資金流全程監(jiān)控,為年金基金管理和投資監(jiān)督提供了保障。企業(yè)年金政策調整、業(yè)務管理變化后,利用微服務架構的優(yōu)勢,系統(tǒng)具有橫向擴展、快速更新升級的能力,為企業(yè)年金日常經辦提供了時效保證,提高了用戶體驗。通過微服務架構改造的系統(tǒng)業(yè)務相對獨立,服務集群部署,日志監(jiān)控全面,運維定位迅速,為系統(tǒng)的高可用提供了技術支撐。

4 結束語

本文分析使用單體架構進行鐵路企業(yè)年金系統(tǒng)構建的問題,介紹了微服務架構的概念和關鍵特性,并將微服務架構的理念引入到鐵路企業(yè)年金信息化建設的系統(tǒng)設計中,實現(xiàn)了鐵路企業(yè)年金業(yè)務流程貫通及全過程信息化管理,提高了系統(tǒng)的負載能力、可擴展性和獨立性。

該系統(tǒng)需要進一步研究的內容有:

(1)雖然按照領域驅動設計進行了服務拆分,但是,隨著日常業(yè)務的開展,服務拆分策略的合理性依然值得探討,后續(xù)繼續(xù)研究鐵路企業(yè)年金業(yè)務特點,優(yōu)化服務拆分;

(2)微服務年金系統(tǒng)服務可靠性的設計仍不夠全面,服務訪問的雪崩效應、服務失敗應對策略、服務容錯、服務隔離、服務限流、服務降級等問題沒有完全解決,需要繼續(xù)研究服務可靠性方案,進一步完善方案。

猜你喜歡
網關日志架構
基于FPGA的RNN硬件加速架構
基于FPGA的工業(yè)TSN融合網關設計
一名老黨員的工作日志
一種主從冗余網關的故障模式分析與處理
功能架構在電子電氣架構開發(fā)中的應用和實踐
扶貧日志
構建富有活力和效率的社會治理架構
雅皮的心情日志
雅皮的心情日志
天地一體化網絡地面軟網關技術及其應用
丰顺县| 仙居县| 陆河县| 武鸣县| 铜陵市| 临夏市| 武川县| 蓝田县| 曲周县| 方城县| 曲麻莱县| 泰安市| 松潘县| 保山市| 阳高县| 稷山县| 北辰区| 金华市| 巴林右旗| 辽源市| 新闻| 合江县| 大渡口区| 米易县| 姜堰市| 灵台县| 天柱县| 松阳县| 大理市| 惠安县| 吴忠市| 临清市| 馆陶县| 古田县| 永修县| 洞口县| 丁青县| 洪洞县| 治多县| 万源市| 武鸣县|