醫(yī)療保障信息平臺應用系統(tǒng)技術架構規(guī)范2020版_第1頁
醫(yī)療保障信息平臺應用系統(tǒng)技術架構規(guī)范2020版_第2頁
醫(yī)療保障信息平臺應用系統(tǒng)技術架構規(guī)范2020版_第3頁
醫(yī)療保障信息平臺應用系統(tǒng)技術架構規(guī)范2020版_第4頁
醫(yī)療保障信息平臺應用系統(tǒng)技術架構規(guī)范2020版_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、醫(yī)療保障信息平臺應用系統(tǒng)技術架構規(guī)范1 范圍本規(guī)范規(guī)定了醫(yī)療保障信息平臺建設總體技術架構,給出了業(yè)務子系統(tǒng)應用架構分層設計、核心服務框架和云平臺適配框架設計說明,提出了框架相關技術選型、框架總體應用要求,明確了框架版本更新機制等方面內容。本規(guī)范適用于醫(yī)療保障信息平臺相關業(yè)務應用子系統(tǒng)和業(yè)務中臺的建設。2 術語和定義2 .1架構architecture有關軟件整體結構與組件的抽象描述,用于指導大型軟件系統(tǒng)各個方面的設計。2.2醫(yī)療保障應用框架HealthcareSecurityApplicationFramework(HSAF)為了實現(xiàn)醫(yī)保信息化統(tǒng)一技術架構標準目標,為業(yè)務子系統(tǒng)提供技術架構標準

2、所要求的基礎功能軟件產(chǎn)品和服務。采用分布式云架構,封裝核心左支推服務適配接口,用于實現(xiàn)云產(chǎn)品解耦設計。3 縮略語下列英文縮略語適用于本文件。HSAF醫(yī)療保障應用框架(HealthcaxeSecurityApplicationFramework)laaS基礎設施即服務(Infrastructure-as-a-Service)PaaS平臺即服務(Platform-as-a-Service)Web全球廣域網(wǎng)(WorldWideWeb)API應用程序編程接II(ApplicationProgranmingInterface)SDK軟件開發(fā)1:具包(SoftwareDevelopmentKit)SQL結

3、構化查詢語言(StructuredQueryLanguage)TCP傳輸控制協(xié)議(TransmissionControlProtocol)HTTP超文本傳輸協(xié)議(HyperTextTransferProtocol)HTTPS超文本傳輸安全協(xié)議(HyperTextTransferProtocolSecure)XML可擴展標記語言(ExtensibleMarkupLanguage)JSONJava腳本對象簡譜(JavaScriptObjectNotation)ORM對象關系映射(ObjectRelationalMapping)JWTJSONWeb令牌(JSONWebToken)loC控制反轉(In

4、versionofControl)DI依賴注入(DependencyInjection)XJ-B01-2019AOP面向切面編程(AspectOrientedProgramming)OLTP聯(lián)機事務處理過程(On-LineTransactionProcessing)HA高可用(HighAvailable)ECS阿里云服務器(ElasticComputeService)HSF阿里云淘寶服務框架(High-speedServiceFramework)EDAS阿里云企業(yè)級分布式應用服務(EnterpriseDistributedApplicationService)DRDS阿里云分布式關系型數(shù)據(jù)庫服

5、務(DistributedRelationalDatabaseService)OSS阿里云對象存儲服務(ObjectStorageService)TSF騰訊微服務平臺(TencentServiceFreunework)CMQ騰訊云消息隊列(CloudMessageQueue)TDSQL騰訊云分布式數(shù)據(jù)庫服務(TencentDBforTDSQL)CLS騰訊云的日志服務(CloudLogService)ELKElacticsearch»Logstash和Kibana簡稱RPC遠程過程調用(RemoteProcedureCall)4 總體技術架構4.1 總體技術架構總體技術架構參見圖1及圖

6、20系統(tǒng)總體技術架構采用分布式云架構,在基礎設施層上,結合云平臺,提供分布式服務支撐。通過業(yè)務中臺構建業(yè)務中心,支持實時交易型應用;通過數(shù)T應用系統(tǒng)醫(yī)療保障業(yè)務系統(tǒng)據(jù)中臺實現(xiàn)數(shù)據(jù)匯聚、數(shù)據(jù)治理等,開展大數(shù)據(jù)應用?;y(tǒng)一的應用分層架構建設經(jīng)辦管理類、公共服務類、智能監(jiān)管類、宏觀決策類業(yè)務子系統(tǒng)應用。HSAF框架HSAF核心框架PAASHSAF適配框架云支撐服務分布式云架構分布式服務分布式緩存分布式數(shù)據(jù)訪問分布式日志膘務非結構化存儲消息隊列云基礎設施圖1總體技術架構一概念圖國家戶0網(wǎng)信充平8技術架恂k制控異N3一處建何海F后攔:提值日|5|&1:|lyllftl上下:.;.二"短

7、全過小鼻及需aSeoice閂泥也有Seo-ice分布it臍務匚業(yè)務N理£B。?»限訪同三DA。持久化屋ORMappiflg特拒訪問代窿CDAAL節(jié)心檎K(H-UU)(£勺誄列)(*點)RMWfil)(/t任折)(弁久化)(心幡)(帽和哂)叵叵)'(')圖2總體技術架構邏輯圖總體技術架構描述如下:a) 業(yè)務系統(tǒng):基廣醫(yī)療保障應用框架(HealthcareSecurityApplicationFramework,簡稱:HSAF)開發(fā)的支撐醫(yī)療保障業(yè)務運行的應用子系統(tǒng):b) HSAF框架:采用分布式云架構,封裝核心云支拄服務適配接口,用于實現(xiàn)云產(chǎn)品解耦設

8、計,詳見4.3;c)適配層:基于HSAF的適配技術,將應用層依賴的分布式技術與具體廠商的分布式技術進行適配,實現(xiàn)應用層可以適配多家廠商的分布式技術:d)云支掠服務層:基于云基礎設施,為應用層提供通用的技術支撐服務,包括分布式服務、分布式緩存、分布式數(shù)據(jù)訪問、日志服務、非結構化存儲和消息隊列等;e)云基礎設施層:采用云架構,在物理設備基礎上.實現(xiàn)計算資源、存儲資源、網(wǎng)絡資源的動態(tài)管理和資源調配。4. 2架構設計思路為滿足全國醫(yī)療保障信息系統(tǒng)部署模式的可靈活選攔要求,相對傳統(tǒng)系統(tǒng)技術架構,醫(yī)療保璋信息平臺在架構中增加了“適配層”,將應用層依膜的分布式技術與具體廠商的分布式技術進行適配,實現(xiàn)應用層可

9、以適配多家廠商的分布式技術。地方可根據(jù)實際情況向各個云資源提供商(包括政務云和專有云等)租用或申請資源使用,也可自建數(shù)據(jù)中心。云基礎設施建設參見圖3。公共照務區(qū)核心業(yè)務區(qū)告市兩級部署株式省級集中部署模五公;U晚系蛻的如US阿M?幽甲MA湖的8公共修分子系疣公共事次,煙公共朝區(qū)山窮中自亞劣«T>生產(chǎn)區(qū)交校區(qū)I大數(shù)掇區(qū)iiimv'Es«ne®a?se:魯理子村-KIsnffl核心業(yè)務區(qū)云)awttUR)mnHHH1為SUE務中tf»JUftB在出分護序色腳價Ita子同t業(yè)務彈提.MM1M1改停.浜沖管H7朝管理?礎*RMJ業(yè)券C0B鐵心處第Mi

10、k乃中依堂分M中心JJ壬敷空同步1二二二二二二«WWrtRIfW.安ni次累大skd母于神KQ*蛀分析/(NXUNWX政務云勺-邛、專有云專有彳-8ra>7as管是彳儆公共啊/*務中卷W4Xlft«tFWttJiM1業(yè)務(仙河皿M八/'Ji:中0/,一3-£業(yè)務”務axn«,*業(yè)務(WftKKS&公募很黑S?K圖3云基礎設施建設在總體技術架構設計和代碼開發(fā)時,應遵循一個重要原則:框架需滿足技術擴展性的要求,當前框架能適配至少三種云平臺分布式技術,新的分布式技術的加入可以通過框架的擴展實現(xiàn)。4.3應用技術分層架構為了保證業(yè)務子系統(tǒng)應用

11、具有良好的橫向擴展能力,以應對未來業(yè)務的快速發(fā)展,整個應用架構采用分布式云架構設計,業(yè)務能力通過微服務框架基于高內聚低耦合的思路實現(xiàn)。所有服務均為無狀態(tài)服務,實現(xiàn)在線應用的擴縮容能力。應用分層架構參見圖4o心據(jù)訪i5后FK量ff口本地胭務Sen>ee業(yè)旁處aESnil訪問居DAON3gM持久帙我據(jù)訪問代理8DAAL分布式步馬W居聯(lián)里務Sendee圖4應用技術分層架構業(yè)務應用子系統(tǒng)分為客戶端和服務器端兩大部分:a)客戶端:前端展現(xiàn)層;b)服務器端: 控制層:一一業(yè)務邏輯層: 數(shù)據(jù)訪問層; 分布式數(shù)據(jù)庫層。業(yè)務應用子系統(tǒng)需嚴格按照該分層架構和調用層次進行應用程序開發(fā)和服務調用。4.4HSAF

12、框架4.4.1 概述HSAF框架設計采用1+N模式,即1套核心框架,多套云支撐服務技術平臺適配。HSAF框架中包含控制層、業(yè)務層和持久化層接H抽象,定義了分布式服務框架、分布式緩存、分布式消息隊列、非結構化存儲、日志服務等分布式中間件服務的接I。基于4.2架構設計思路,HSAF框架分為兩部分:a) HSAF核心框架,提供業(yè)務子系統(tǒng)運行相關的基礎框架和服務支撐;b) HSAF適配框架,提供對不同云支撐服務技術平分的適配和可移植支摔。HSAF框架總體結構參見圖5o定時任務核心框架圖5HSAF框架結構c) 4.2HSAF核心框架HSAF核心框架,統(tǒng)一封裝了Spring框架相關組件、ORM持久化框架、

13、數(shù)據(jù)庫連接池組件、會話上下文、異常統(tǒng)一攔截器、操作日志攔截器、權限認證攔截器、安全過濾攔截器等開發(fā)基礎服務,能使業(yè)務系統(tǒng)開發(fā)人員盡可能只關注業(yè)務邏軾,而無需過多關注技術細節(jié)。它主要提供了以下功能和服務:a)統(tǒng)一認證服務(詳見6.1):XJ-B01-2019b)單點登錄服務(詳見6.2);c)全局ID序列服務(詳見6.3):d)事務管理(詳見6.4):e)異常管理(詳見6.5);f)定時任務(詳見6.6);g)持久化服務(詳見6.7):h)數(shù)據(jù)庫連接池服務(詳見6.8):i)報表服務(詳見6.9)。4. 4.3HSAF適配框架5. 4.3.1適配抽象層適配抽象層是時適配層中的分布式服務的具體技術

14、實現(xiàn)進行抽象,提供了分布式緩存、遠程服務調用、非結構化存儲、消息隊列等PaaS層服務的抽象接【I。在代碼中,應基干抽象接口層進行開發(fā),而不能直接使用具體的擴展派生類,否則代碼將綁定某種具體技術方案。適配抽象層設H詳見7.1o6. 4.3.2適配實現(xiàn)層適配實現(xiàn)層基適配抽象層,擴展了分布式服務的具體技術實現(xiàn)。醫(yī)療保障信息平臺適配的技術實現(xiàn),已預設提供以下三套方案:阿里云專有云產(chǎn)品(詳見7.2)、騰訊云專有云產(chǎn)品(詳見7.3)、開源產(chǎn)品中的一種選型(詳見7.4)。各地醫(yī)保系統(tǒng)做技術合規(guī)選型時,如采用HSAF框架預設適配實現(xiàn)技術之外的技術,應做相應適配、開發(fā)工作。7. 5遠程服務調用遠程服務調用是分布

15、式服務框架的基礎和核心功能。目前主流的分布式服務框架使用兩種遠程服務調用協(xié)議:a) RPC協(xié)議,以Dubbo、Thrift、gRPC、rpcx、Motan為代表的框架使用的協(xié)議:b) HTTP協(xié)議,以SpringCloud為代表的框架使用的協(xié)議。兩種協(xié)議在不同的分層上提供服務,RPC協(xié)議是在Service層提供服務,HTTP協(xié)議是在Controller層提供服務。為了兼容兩種不同的服務提供方式,實現(xiàn)一套業(yè)務代碼適配不同的分布式服務框架所使用的遠程服務調用協(xié)議,如圖6所示,架構要求如下:a)對于RPC協(xié)議,通過提供不同的服務注冊發(fā)現(xiàn)配置文件來實現(xiàn)協(xié)議的切換:b)時于HTTP協(xié)議,Service服

16、務需要額外包裝一層Controller層來實現(xiàn)服務的協(xié)議轉換。HSAF適配層設計一套核心業(yè)務代萬4多套侵人適配5應用技術分層架構5.1 客戶端5.1.1 概述客戶端包含PC端、移動端、大屏幕端等類型??蛻舳伺c服務器端之間的通訊協(xié)議為HTTP協(xié)議,交互的數(shù)據(jù)格式為JSON格式。5.1.2 前端展現(xiàn)層前端展現(xiàn)層泛指一切在客戶端直接與用戶交互的客戶界面(UI),本層是MVC架構中的視圖層(V)。各類型客戶端使用各自的組件作為前端展現(xiàn)層的UI實現(xiàn)方式。前端展現(xiàn)層將用戶對UI的操作轉化成基于HTTP協(xié)議的JSON格式的字符串去訪問服務器,并將服務器返回的數(shù)據(jù)通過各自的組件展現(xiàn)給用戶。服務器端能響應符介H

17、TTP/JSON的業(yè)務請求,客戶端應發(fā)出符合業(yè)務要求的HTTP/JSON請求,由服務器端處理和響應。HSAF框架在瀏覽器上的前端展現(xiàn)層實現(xiàn)是參考實現(xiàn)。HSAF框架提供了基于PC端的前端展現(xiàn)層實現(xiàn),其他類型客戶端部分需要開發(fā)商自行實現(xiàn)。5.2 服務器端5.2.1 概述服務器端包含控制層、業(yè)務處理邏輯層、數(shù)據(jù)訪問層和分布式數(shù)據(jù)庫層四部分。5.2.2 控制層控制層包含過濾器攔截器層、控制器層(Controller)兩部分。過波器攔截器層主要處理全局性問題,一切訪問都會經(jīng)過過濾器攔截器層處理,不會繞過過濾器攔截器直接訪問控制層。本層次提供的能力包括:XJ-B01-2019a)分布式會話管理:用戶會話信

18、息統(tǒng)一寫入分布式緩存中;b)裝我上下文信息;c)記錄操作口志;d)安全管理:通過一個過濾器徒攔截進入的請求,并將這些請求轉給認證和訪問決策管理器處理,從而增強安全性。控制器層負責請求的全生命周期處理,包含接收一分發(fā)一調用業(yè)務視圖展現(xiàn)的全過程。HSAF的核心控制框架是困繞前端控制器(DispatcherServlet)展開的,前端控制器負費將請求派發(fā)到特定的控制器。當控制器類接收到一個請求時,它會在自己內部尋找一個合適的處理方法來處理請求??刂破髟谶x擇好適合處理請求的方法時,傳入收到的請求(根據(jù)方法參數(shù)類型,可能以不同的類型傳入),并且調用該方法中的邏輯來進行處理。方法邏輯會調用業(yè)務邏輯。業(yè)務邏

19、輯運行完畢之后,會委派給一個視圖,由該視圖來處理方法的返回值。返回的視圖名稱會返回給前端控制器,它會根據(jù)一個視圖解析器將視圖名稱解析為一個具體的視圖實現(xiàn).5. 2.3業(yè)務邏輯層業(yè)務邏輯層包含Service、BO兩個子層次。在View、ControllerService、B0這三個層次之間通過DTO進行業(yè)務對象的傳遞,在B0與DA0之間通過DO進行數(shù)據(jù)對象的傳遞。Service是服務的發(fā)布層,提供府外服務的接口,并調用B0完成接II任務。B0層實現(xiàn)具體的業(yè)務邏輯。DAO層書寫數(shù)據(jù)庫訪問邏輯,調用持久化層實現(xiàn)數(shù)據(jù)庫的訪問工作。8. 2.4數(shù)據(jù)訪問層數(shù)據(jù)訪問層分為持久化層和數(shù)據(jù)訪問代理層兩部分。持久

20、化層實現(xiàn)0/RMapping的工作并調用分布式數(shù)據(jù)庫。數(shù)據(jù)訪問代理層統(tǒng)一接收數(shù)據(jù)訪問層的請求并對請求進行解析、優(yōu)化、路由、分發(fā)給分布式數(shù)據(jù)庫,提供對分庫分表、讀寫分離的透明支持,并且提供對跨庫信息進行合并等操作,將數(shù)據(jù)庫結果返回給數(shù)據(jù)訪問層。9. 2.5分布式數(shù)據(jù)庫層分布式數(shù)據(jù)庫層通過分布式數(shù)據(jù)訪問代理服務,訪問分布式關系型數(shù)據(jù)庫,能使多個關系型數(shù)據(jù)庫工作如在同一個關系型數(shù)據(jù)庫一樣。10. 3框架層次調用11. 3.1對象模型定義分層中涉及的對象模型定義如下:a)DT0(DataTransferObject):數(shù)據(jù)傳輸對象,Service或Manager向外傳輸?shù)膶ο螅篵)BO(Busines

21、sObject):業(yè)務對象,由Service層輸出的封裝業(yè)務邏輯的對象:c)DO(DataObject):數(shù)據(jù)時象,此對象與數(shù)據(jù)庫表結構一一對應,可擴展虛擬字段(如一些查詢條件、計算字段、匯總信息等),通過DAO層向上傳輸數(shù)據(jù)源對象。5.3.2調用順序框架層次調用參見圖1,框架層次調用順序如下:a)客戶端瀏覽器發(fā)起HTTP/JSON請求;b)服務器端過濾器過漁請求,做安全、編碼、session管理等處理,攔截器攔截請求做記錄口忐、訪問統(tǒng)計等操作,并裝我上下文信息:c)控制器接收前端傳過來的DTO對象,并調用本地服務或者遠程服務;d) Service分為接II與實現(xiàn)兩部分。Service服務接I

22、1接受控制層的遠程或本地調用,接收DTO對象,調用本地B0中的業(yè)務邏輯,并將B0返回的業(yè)務結果(DTO對象)返回給控制層(遠程或本地客戶端):e) B0分為接口與實現(xiàn)兩部分。B0服務接II接受Service的本地調用,接收DTO對象,實現(xiàn)業(yè)務邏輯,使用DO對象調用DAO來訪問數(shù)據(jù)庫,將DAO返回DO對象轉換為DTO對象,返回給Service:f) DAO層接受B0層的調用,接收DO對象,實現(xiàn)具體的SQL邏輯,訪問數(shù)據(jù)庫,并將返回的數(shù)據(jù)模型返回給B0:g)數(shù)據(jù)訪問層實現(xiàn)數(shù)據(jù)持久化工作,將數(shù)據(jù)庫的庫表結構與java灼象做映射:h)數(shù)據(jù)訪問代理層接受持久化層的數(shù)據(jù)訪問,對數(shù)據(jù)訪問進行數(shù)據(jù)操作的解析和

23、執(zhí)行,包括會話管理、分庫分表策略、語義解析、請求路由、數(shù)據(jù)合并、切換控制等,數(shù)據(jù)訪問代理層將數(shù)據(jù)操作處理后分派到具體的分布式數(shù)據(jù)庫:i)分布式數(shù)據(jù)庫層接受數(shù)據(jù)訪問代理層的訪問,進行數(shù)據(jù)庫處理,將數(shù)據(jù)返回給數(shù)據(jù)訪問代理層。5 .3.3調用要求各層次的調用順序及對象模型的傳輸,應遵循5.3.2所述。對象模型傳輸示意參見圖7。圖7對象模型傳輸示意圖6 核心框架設計6.1 統(tǒng)一認證服務6.1.1 概述用戶認證指驗證某個用戶是否為系統(tǒng)中的合法主體,即判斷用戶能否訪問該系統(tǒng)。用戶認證一般要求用戶提供用戶名和密碼。系統(tǒng)通過校驗用戶名和密科來完成認證過程。6.1.2 認證技術HSAF框架中采用OAuth2.0

24、標準、JWT(JSONWebToken)進行登錄認證,使用SpringSecurity框架完成相關的認證和授權驗證。 OAuthOAuth是一種開放的協(xié)議,為桌面、內成Web應用提供了一種簡單的、標準的方式去訪問需要用戶授權的API服務。XJ-B01-20190Auth2.0具有以下特點:a)簡單:不管是OAuth服務提供者還是應用開發(fā)者,都很容易理解與使用:b)安全:沒有涉及到用戶密鑰等信息,更安全更靈活:c)開放:任何服務提供商都可以實現(xiàn)OAuth,任何軟件開發(fā)商都可以使用OAuthoOAuth2.0定義了四種授權方式:a) 授權碼模式(AuthorizationCode):

25、b)簡化模式(Implicit):c)密碼模式(Password):d)客戶端模式(ClientCredentials)©OAuth2.0定義了以下幾種角色:b) ResourceOwner:資源擁仃者;c) ResourceServer:資源服務器:d) Client:第三方應用客戶端;e) AuthorizationServer:授權服務器。 JWTJWT是一個開放標準(RFC7519),它定義了一種緊湊且獨立的方式,用于在各方之間作為JSOX對象安全地傳輸信息。此信息可以通過數(shù)字簽名進行驗證和信任。JWT可以使用秘密(使用HMAC算法)或使用RSA或ECDSA的公

26、鑰/私鑰對進行簽名。6.1.2. 3SpringSecuritySpringSecurity是一個能夠為基J,Spring的企業(yè)應用系統(tǒng),提供聲明式的安全訪問控制解決方案的安全框架。它提供了一組可以在Spring應用上下文中配置的Bean,充分利用了SpringIoC,DI和AOP功能,為應用系統(tǒng)提供聲明式的安全訪問控制功能,減少了為企業(yè)系統(tǒng)安全控制編寫大量重復代碼的工作。6.1.3認證服務 認證服務場景認證服務提供以下三種場景的認證能力:a)內部統(tǒng)一門戶認證;b)客戶端應用認證:c)開放授權認證。6.1.3. 2內部統(tǒng)一門戶認證內部統(tǒng)一門戶子系統(tǒng)為醫(yī)保局業(yè)務經(jīng)辦工作人員提供統(tǒng)一

27、登錄入11,認證服務能提供統(tǒng)一的身份認證能力和單點登錄服務(詳見6.2)。6.1.3. 3客戶端應用認證公共服務子系統(tǒng)涉及移動APP、網(wǎng)廳、短信、微信/小程序、自助終端等客戶端,認證服務提供客戶端統(tǒng)一身份認證能力。如圖8所示,認證服務提供的客戶端統(tǒng)一身份認證流程如下:a)用戶登錄客戶端;b)客戶端向認證眼務請求認證;c)認證服務使用密碼模式進行認證;)zdefghi)客戶端向用戶展示結果。AP闌髡認證服務認證通過,生成JWT格式的access-token,返回給客戶端;客戶端存儲川T,返回登錄成功;用戶在客戶端進行后續(xù)操作;客戶端攜帶JWT向API服務請求API接口;API服務驗證JWT的有效

28、性,驗證通過則執(zhí)行后續(xù)邏輯,返回結果:圖8客戶端應用認證流程開放授權認證基于OAuth標準,認證服務能提供開放開發(fā)授權認證的能力。如圖9所示,開放授權認證流程如下:a)用戶(ResourceOwner角色)向第三方系統(tǒng)發(fā)起請求;b)第三方系統(tǒng)(Client角色)向用戶返回用戶授權認證操作:c)用戶輸入平臺認證信息,向認證服務(AuthorizationServer角色)請求授權認證;d)認證服務認證通過,生成code,并跳轉到授權確認頁面;e)用戶同意授權:f)認證服務生成code并跳轉到重定向頁面:g)第三方系統(tǒng)使用code請求認證服務的token接口;h)認證服務生成JWT格

29、式的access_token并返回;i)第三方系統(tǒng)本地存儲access_token;j)第三方系統(tǒng)后續(xù)使用access_token向開放資源服務(ResourceServer角色)請求開放資源,并經(jīng)過處理后展現(xiàn)給用戶。醫(yī)療保0信息平臺夫第三方系續(xù)認證觸務開放費等服務2簿人平臺認證信息,請求授權認證0411111111111112.1:仇證通過01ft111EI3同意授權0A111一I11111開廣3.1:311111tfiicodeOJ11111,3.2:虢轉到玉定向地卬L0T-13.2.1:使用codei8求toke除口04集成JWT格式的accesstokenf)1111

30、111111<3.2.2:-igHaccessjoken存健access_tokenO3.2.3:使用auLe”_tok,nil|求LK9X0111111111111113.2.5展現(xiàn)站果0U1<3.2.4:g-1-1行后竣邏幄0J一_/*三方圖9開放授權認證場景6.2單點登錄服務6.2.1實現(xiàn)方式單點登錄(SingleSignOn)服務是指在多個相互信任的應用系統(tǒng)中,用戶只需要登錄一次就可以訪問所有相互信任的應用系統(tǒng)的服務。系統(tǒng)采用Session共享方案來實現(xiàn)單點登錄。共享Session可謂是實現(xiàn)單點登錄最立接、最簡單的方式。將用戶認證信息保存于Session中,即以Sessio

31、n內存儲的值為用戶憑證,這在單個站點內使用是很正常也很容易實現(xiàn)的,而在用戶驗證、用戶信息管理與業(yè)務應用分離的場景下即會遇到單點登錄的問題,在應用體系筒單,子系統(tǒng)很少的情況下,可以考慮采用Session共享的方法來處理這個問題。Session服務用于存儲與用戶相關的數(shù)據(jù),默認由Web容器進行管理。單機情況下,所有用戶的Session數(shù)據(jù)由一臺服務器持有,不存在Session數(shù)據(jù)不一致的情況,但在分布式情況下,用戶的前后兩次請求可能會轉發(fā)到不同的后端服務器上,如果不進行Session共享會出現(xiàn)Session數(shù)據(jù)不一致的情況。因此打造一個高可用的分布式系統(tǒng),應將Session管理從容器中獨立:出來成

32、為統(tǒng)一的脫離容器的Session存儲機制。ESAF框架的Session管理通過基于Redis服務器的方案來實現(xiàn)Session的共享存儲。6.2.2單點登錄流程如圖10所示,單點登錄流程如下:a)接收用戶認證信息;b)將用戶認證信息提交認證中心進行認證;c)認證成功生成有效憑證并通過用戶中心獲取對應用戶詳細信息:d)將用戶信息寫入Session對象,保存至Session共享服務中;e)通過Session共享服務獲取認證服務共享的Session信息,完成單點登錄:f)通過用戶過濾器獲取當前登錄用戶,并將用戶信息及所屬機構信息寫入線程對象HsafContextHolder中。1首次丑錄()必露配置為

33、相同域名圖10單點登錄流程6.2.3應用要求為保證醫(yī)療保障信息平臺各個業(yè)務子系統(tǒng)Web應用的Session共享,避免出現(xiàn)因跨域導致的Session不能共享問gg,各業(yè)務子系統(tǒng)Web應用應配置相同的域名。Session共享服務應使用獨立的緩存服務器進行存儲,與業(yè)務使用的緩存服務器完全分離,互不影響。6.3全局ID序列服務全局唯一序列號生成是在設計一個分布式系統(tǒng)時常常會遇見的需求。在分布式系統(tǒng)架構XJ-B01-2019下,尤其是數(shù)據(jù)庫使用分庫分表的時候,數(shù)據(jù)庫自增主鍵已無法保證全局唯一。HSAF框架提供了統(tǒng)一的組件,實現(xiàn)全局ID序列生成服務,可被直接調用生成全局序列IDo6.4事務管理6.4.1實

34、現(xiàn)方式HSAF框架使用了Spring框架的事務管理機制。Spring支持編程式事務管理和聲明式事務管理兩種方式。聲明式事務管理是非代碼侵入式的開發(fā)方式,這是Spring所倡導的開發(fā)方式。聲明式事務管理也有兩種常用的方式,一種是基于tx和A0P命名空間的XML配置文件,另一種就是基JTransactional注解。6.4.2應用要求為了方便系統(tǒng)氾活地進行事務隔離等級、事務傳播行為、事務超時、事務回滾規(guī)則等參數(shù)的控制,應使用基于XML配置文件的聲明式事務管理方式,不應使用基于Transactional注解的方式。另外,根據(jù)分層設計,Service是服務的發(fā)布層,B0層是具體的業(yè)務邏輯實現(xiàn)層,Ser

35、vice層提供對外服務的接I1,并調用B0層完成接II任務。架構要求事務只能聲明在B0層。6.5異常管理6.5.1異常類設計HSAF框架統(tǒng)一異常處理,實現(xiàn)對控制層、業(yè)務處理層及數(shù)據(jù)訪問層的異常捕獲和異常信息封裝。業(yè)務開發(fā)人員只需要在各個層次中,拋出對應的業(yè)務異常和數(shù)據(jù)訪問異常,框架會進行統(tǒng)一攔截,不需要開發(fā)人員手動進行異常處理,可減少代碼量,提高開發(fā)效率,同時也實現(xiàn)了整個系統(tǒng)的異常統(tǒng)一處理和管理。異常類設計如圖11所示??蚣芩械漠惓>^承自*cn.hsa.hsaf.framework,exception.AppException'這個基類,每個業(yè)務j系統(tǒng)(或者業(yè)務中臺)定義自己的異常

36、類(統(tǒng)一繼承自Busine=Excepticn1系統(tǒng)運行過程中,在控制層(Controller),業(yè)務服務層(Service).業(yè)務邏輯層出0)、數(shù)據(jù)訪問層(DAO)如果發(fā)生業(yè)務異常(BusinessException)、數(shù)據(jù)訪問異常(DataAccessException)或擰其它運行時異常,SpringMVC調用框架提供的HSAFExceptionHand1er對異常信息進行統(tǒng)一攔假處理,記錄異??谥?,并將異常信息經(jīng)業(yè)務封裝后返回UI層進行提示。圖11異常類設計6.5.2異常錯誤碼框架采用前后端分離技術,前端通過HTTP請求后臺服務,數(shù)據(jù)統(tǒng)一使用JSO格式,服務端響應數(shù)據(jù)使ffl統(tǒng)一的規(guī)范

37、格式和狀態(tài)碼:示例:H"type:success,"code":0,"message":”這里顯示錯誤簡短信息”,"data":)如圖12所示,為了方便問題的定位排查,以及服務質量的統(tǒng)計分析,在HSAF框架的異?;愔卸x卒片誤碼code屬性,應用代碼拋出異常時,需要定義該屬性。publicclassAppExceptionextendsRuntimeExceptionprivatestaticfinallongserialVtrstonUlD=-7611643172712984323L;異稹巖誤碼,詳見開發(fā)指南中的錯誤科定

38、義intcode;publicAppExcepti(xi(finalintcode)sup«r();this.code=ccxle;)publicAppExcepticxi(finalintcode,finalStringmessage)super(message);this.code=code;圖12錯誤碼定義業(yè)務異常錯誤碼采用六位字符串,格式為“兩位系統(tǒng)編號+兩位模塊編號+兩位異常編號”,具體的異常錯誤碼見表lo表1錯誤碼使用范圍說明錯誤碼使用范圍說明0系統(tǒng)級成功-1系統(tǒng)級未知異常-2系統(tǒng)級請求參數(shù)異常-3系統(tǒng)級服務端請求超時-4系統(tǒng)級權限校驗異常-5系統(tǒng)級無效的請求地址-6系統(tǒng)

39、級觸發(fā)限流lOxxxx框架級llxxxx內部統(tǒng)一門戶12xxxx基礎信息管理13xxxx醫(yī)保業(yè)務基礎14xxxx支付方式管理15xxxx醫(yī)療服務價格管理16xxxx信用評價管理17xxxx跨省異地就醫(yī)18xxxx藥品和醫(yī)用耗材招采19xxxx公共服務20xxxx基金運行及審計監(jiān)管21xxxx醫(yī)療保障智能監(jiān)管22xxxx運行監(jiān)測23xxxx宏觀決策大數(shù)據(jù)應用24xxxx內部控制25xxxx業(yè)務中臺6. 5.3不可捕獲異常的處理HSAFExceptionHandler可以攔截處理所有應用層抽出的AppException異常的子類,但是系統(tǒng)運行過程中,還有一些“特殊”的異常是無法捕獲的,原因是:a)

40、AppException異?;愂抢^承自RuntimeException,而java的異常根類為Throwable»Throwable的兩個子類Error和Exception,Exception的兩個子類CheckedException和RuntimeException:因此能被捕獲的實際上只是RuntimeException相關的異常(當然這能夠處理大部分的異常情況),對j'Error以及CheckedException無法捕獲:b)正常的代碼中一般使用try.catch(AppExceptionex)。來捕獲異常,執(zhí)行過程中可能因為線程中斷或阻塞了,導致catch塊中的代

41、碼并沒有正常的執(zhí)行到。為了統(tǒng)一對不可捕獲異常的處理,HSAF框架統(tǒng)一封裝實現(xiàn)了Thread.UncaughtExceptionHandler接1I,該接II聲明了某個線程執(zhí)行過程中,對未捕獲的異常處理,如圖13所示。publicclassHsafUncaughtExceptionHandlerImplementirbread.Un<aughtExceptlonHandlerOverridpublicvoiduncdughtExcption(Thr"Throwbl.)打Ep出現(xiàn)異常的線舁和7常名行Systui.outprintin("捕技到異希:線程名t.getM

42、71;me()十異常名(c-*);/TODO記錄異常日志異一找的信息e.print5tdckTra<e();/T000.加樂并笈甯正需尊曾持得地理,可以在M處社正處理方法)圖13未捕獲的異常處理如圖14所示,應用請求的入口一般是Controller,因此HSAF框架通過A0P切面的方式在請求的入口方法處設置當前線程的UncaughtExceptionHandler.以處理當前線程中無法正常捕獲的各種異常。packagecn.hsa.hsafcore.fraitework.webexception;importorg.aspectj.lang.JoinPoint;iiaportorg.sp

43、rinRfraBeiMork.beans.factory.annotation.Autowired;a9ClassName:HsafUncaughtExceptionHandlerAspect* Description:不下植工導布的妹一處理,在controller人口代嗎處;梟加aop注入* author:siniu“9date:2019年8月12日* <aop:aspectj-autpgroxyproxy-target-classswtruewx/aop:aspectj-auitpprqxy><1-不可瘠決異常的統(tǒng)一攔截處理-><beanid-whsafUnc

44、aughtExceptionHandlerA$pectHclasscn.hsa.hsaf.core.fraoework.web.exception.HsafUnceughtExceptionHandlerAspect"/><«op;.c.onfjg><aop:dspectref=Mh$afUncaughtExceptionHan<ilerAspe<t-><!-切而為Controller下ff)所有為法-><aop:pointcutid=*per+ormancewexpression=t,excution(*cn.h

45、sa.hsaf.controller.)"/><aop:beforemethod="doBefore"pointcut-ref=,prformance,"/><t/.dOP:d$pect></aop.:,cpnfi<>B/publicclassHsafUncaughtLxceptionHandlerAspectAutowiredprivateHsafUncaughtExceptionHandlerhsafUncaughtLxceptionHundler;publicvoiddoBefore(JoinPoin

46、tjp)Thread.setDefaultUncaughtxceptionHaodter(hiafUnc4iughtExceptionHand1er);)圖14AOP切面設置當前線程的UncaughtExceptionHandIer6.5.4應用要求國家或地方在開展醫(yī)療保障信息平臺建設時,異常派生類應繼承框架統(tǒng)一的異常類結構設計(如圖11所示)。代碼開發(fā)中,除非有明確約定,否則而捕獲的異常直接拋到匕一層,由HSAF框架在控制層進行統(tǒng)一攔截。6.6定時任務HSAF框架基于XXL-JOB擴展定時任務組件,提供分布式定時任務支持。XXL-JOB是一個輕量級分布式任務調度平臺,其核心設計目標是開發(fā)迅速

47、、學習簡單、輕量級、易擴展?,F(xiàn)已開放源代碼并接入多家公司線上產(chǎn)品線,接入場景如電商業(yè)務,020業(yè)務和大數(shù)據(jù)作業(yè)等,易上手,開箱即用。其設計思想為將調度行為抽象形成“調度中心”公共平臺,而平臺自身并不承擔業(yè)務邏輯,“調度中心”負責發(fā)起調度請求。將任務抽象成分散的JobHandler,交由“執(zhí)行器”統(tǒng)一管理,“執(zhí)行器”負貨接收調度請求并執(zhí)行對應的JobHandler中業(yè)務邏輯。因此“調度”和“任務”兩部分可以相互解耦,提高系統(tǒng)整體稔定性和擴展性。1.7 持久化服務HSAF框架使用了MyBatis提供持久化服務。MyBatis是支持定制化SQL、存儲過程以及高級映射的優(yōu)秀的持久層框架。MyBatis

48、避免了幾乎所有的JDBC代碼和手動設置參數(shù)以及獲取結果集。MyBatis可以對配置和原生Map使用簡單的XML或注解,將接II和Java的P0J0s(PlainOldJavaObjects,普通的Java對象)映射成數(shù)據(jù)庫中的記錄。1.8 數(shù)據(jù)庫連接池服務數(shù)據(jù)庫連接是一種關鍵的、有限的、昂貴的資源,對數(shù)據(jù)庫連接的管理能顯著影響到整個應用系統(tǒng)的伸縮性和健壯性,影響到應用系統(tǒng)的性能指標。為了減少數(shù)據(jù)庫連接頻繁創(chuàng)建、釋放所產(chǎn)生的開銷,應用系統(tǒng)開發(fā)中應采用數(shù)據(jù)庫連接池技術。數(shù)據(jù)庫連接池負貢分配、管理和耗放數(shù)據(jù)庫連接,它允許應用系統(tǒng)重復使用一個現(xiàn)有的數(shù)據(jù)庫連接,而不是再重新建立一個:釋放空閑時間超過最大

49、空閑時間的數(shù)據(jù)庫連接來避免因為沒有釋放數(shù)據(jù)庫連接而引起的數(shù)據(jù)庫連接遺漏。這項技術能明顯星高對數(shù)據(jù)庫操作的性能。數(shù)據(jù)庫連接池的基本思想就是為數(shù)據(jù)庫連接建立一個“池”o預先在池中放入一定數(shù)量:的連接,當需要建立數(shù)據(jù)庫連接時,只需從“池”中取出一個,使用完畢之后再放回去??赏ㄟ^設定連接池最大連接數(shù)來防止系統(tǒng)過多地與數(shù)據(jù)庫連接。6 .9報表服務報表就是用表格、圖表等形式來動態(tài)顯示數(shù)據(jù),可以用公式表示為:“報表:多樣的格式+動態(tài)的數(shù)據(jù)”。報表可以幫助使用者訪問、格式化數(shù)據(jù),并把數(shù)據(jù)信息以可靠和安全的方式呈現(xiàn)給使用者。報表是管理的基本措施和途徑,處應用系統(tǒng)的基本業(yè)務要求,也是實施BI戰(zhàn)略的基礎。框架中提供

50、了統(tǒng)一的報表服務,主要功能是提供報表資源的管理,用戶身份與權限管理,數(shù)字簽章、服務轉發(fā)及報表展現(xiàn)。報表服務管理的報表資源主要包含數(shù)據(jù)源、報表模板、報表輸出結果等。報表服務是獨立運行的單獨服務,可進行分布式部署,模板的存儲采用分布式對象存儲(OSS),全網(wǎng)任意節(jié)點均可訪問。報表服務對外采用脆B和RESTful方式進行服務,WEB用于管理人員對報表進行資源及權限配置,RESTful用于業(yè)務系統(tǒng)而接報表服務。報表服務支持多種數(shù)據(jù)導出格式,如PDF、Excel、圖片等進行存儲,亦可通過RESTful方式調用報表將結果頁面,其嵌入到業(yè)務系統(tǒng)中。報表服務還提供了嚴謹?shù)姆辙D發(fā)設置,能為每一張報表進行報表工

51、具配置,當業(yè)務系統(tǒng)發(fā)起服務請求時,報表服務會根據(jù)配置進行轉發(fā),未配置的請求將會被作為非法請求丟棄并記錄監(jiān)控日志。報表工具具有獨立模板設計器,可視化地開發(fā)報表更方便、快捷,它具有如下特點:a)提供拖拽式、所見即所得的報表編輯器:b)提供多樣的向導來簡化復雜的報表設計任務:c)提供多樣化的排版和格式化工具;d)報表可轉換為PDF、HTML、EXCEL等格式:e)支持數(shù)據(jù)源調試;f)支持無限次數(shù)的撤消和重做:s)內置超過20種的圖表支持;h)集成超過15種語言:i)提供報表模板與報表庫樣式管理;j)提供源文件的備份;k)提供文檔結構瀏覽器。7 適配框架設計7.1 適配抽象層設計7.1.1 分布式服務

52、框架分布式服務框架是分布式系統(tǒng)架構的基礎。分布式服務關鍵不僅僅是分布式服務本身,而是一套治理框架,這種框架使得分布式服務可以獨立的部署、運行、升級,還能實現(xiàn)分布式服務之間在結構上的“松耦合”,而在功能上表現(xiàn)為一個統(tǒng)一的整體,體現(xiàn)為統(tǒng)一風格的界面,統(tǒng)一的權限管理,統(tǒng)一的安全策略,統(tǒng)一的上線過程,統(tǒng)一的日志和審計方法,統(tǒng)一的調度方式,統(tǒng)一的訪問入口等等。分布式服務框架具備如下能力:a)RPC遠程過程調用:b)服務注冊與發(fā)現(xiàn);c)服務治理:d)負載均衡:e)消息總線,輕量級的MQ或HTTP;f)鞋路跟蹤;g)配置中心。HSAF采用配置文件的方法來切換不同的分布式服務框架。7.1.2 分布式緩存緩存的

53、主要作用是降低應用和數(shù)據(jù)庫的負我,提高系統(tǒng)性能、客戶端訪問速度。在架構和業(yè)務設計上,可以考慮將訪問量較大、不經(jīng)常修改的,比如字典表和系統(tǒng)參數(shù),或對數(shù)據(jù)庫性能影響較大的杳詢的結果進行緩存,提高系統(tǒng)整體性能。HSAF框架使用了SpringCache框架作為緩存層的抽象框架。SpringCache不是一個具體的緩存實現(xiàn)方.案,而是一個對緩存使用的抽象。HSAF框架提供了基于Redis的接I1實現(xiàn),能夠兼容不同云平臺基于Redis或提供類Redis接口服務的緩存方案。分布式緩存服務抽象類接口如圖15所示,定義cn.hsa.hsaf.core,cache.HsafCacheManager緩存統(tǒng)一管理器。

54、圖15分布式緩存服務抽象類接口7.1.3 分布式消息隊列分布式消息隊列,是分布式系統(tǒng)中重要、常用的中間件,它使用事件驅動架構,通過在低耦合的模塊之間傳輸事件消息,以保持模塊的松散耦介,并借助事件消息的通信完成模塊間合作。HSAF引入并使用消息隊列組件作為分布式服務架構下各個應用之間消息通訊的中間件。分布式消息隊列服務抽象類接I如圖16所示,類設計:a) 定義cn.hsa.hsaf.core.mq.MQBusinessHandler消息監(jiān)聽業(yè)務處理接II類;b) 定義cn.hsa.hsaf.core.mq.MQProducer消息隊列生產(chǎn)者接II類:c) 定義cn.hsa.hsaf.core.m

55、q.MQConsumer消息隊列消費者接II類:d) 定義cn.hsa.hsaf.core.mq.MQMessage消息實體類。n-SerializablegMQNessagege<ld()String、w<ld($tring)void、getTimottamplllongbiXTimMtamp(long)void»getToplcOStringebietTopic(Stnng)voidgetHeadersOMap<String.Object>-$e<HeddefS(Map<S(rlr>g,Object>)void4'getCo

56、ntent!)Te%secComent(T)voidiMQConsuner-start!)voidshutdownf)voWsubscnbe<String.MOButinetsHandlerlvoidunsubscro«Stfing|voidMQBusinessKandler-doBusiness(MQMessaQe<?>>booleanMQProducerttartOvoidshutdown()void-tend(MQM(Htagt<?>>boolean圖16分布式消息隊列服務抽象類接口7.1.4 分布式數(shù)據(jù)庫服務在數(shù)據(jù)量逐漸增大的情況口傳統(tǒng)數(shù)據(jù)庫存在著先天性的弊端,分布式數(shù)據(jù)訪問代埋服XJ-B01-2019務主要能使得傳統(tǒng)數(shù)據(jù)庫易于擴展,可切分,提

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論