




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、醫(yī)療保障信息平臺(tái)應(yīng)用系統(tǒng)技術(shù)架構(gòu)規(guī)范1 范圍本規(guī)范規(guī)定了醫(yī)療保障信息平臺(tái)建設(shè)總體技術(shù)架構(gòu),給出了業(yè)務(wù)子系統(tǒng)應(yīng)用架構(gòu)分層設(shè)計(jì)、核心服務(wù)框架和云平臺(tái)適配框架設(shè)計(jì)說明,提出了框架相關(guān)技術(shù)選型、框架總體應(yīng)用要求,明確了框架版本更新機(jī)制等方面內(nèi)容。本規(guī)范適用于醫(yī)療保障信息平臺(tái)相關(guān)業(yè)務(wù)應(yīng)用子系統(tǒng)和業(yè)務(wù)中臺(tái)的建設(shè)。2 術(shù)語和定義2 .1架構(gòu)architecture有關(guān)軟件整體結(jié)構(gòu)與組件的抽象描述,用于指導(dǎo)大型軟件系統(tǒng)各個(gè)方面的設(shè)計(jì)。2.2醫(yī)療保障應(yīng)用框架HealthcareSecurityApplicationFramework(HSAF)為了實(shí)現(xiàn)醫(yī)保信息化統(tǒng)一技術(shù)架構(gòu)標(biāo)準(zhǔn)目標(biāo),為業(yè)務(wù)子系統(tǒng)提供技術(shù)架構(gòu)標(biāo)準(zhǔn)
2、所要求的基礎(chǔ)功能軟件產(chǎn)品和服務(wù)。采用分布式云架構(gòu),封裝核心左支推服務(wù)適配接口,用于實(shí)現(xiàn)云產(chǎn)品解耦設(shè)計(jì)。3 縮略語下列英文縮略語適用于本文件。HSAF醫(yī)療保障應(yīng)用框架(HealthcaxeSecurityApplicationFramework)laaS基礎(chǔ)設(shè)施即服務(wù)(Infrastructure-as-a-Service)PaaS平臺(tái)即服務(wù)(Platform-as-a-Service)Web全球廣域網(wǎng)(WorldWideWeb)API應(yīng)用程序編程接II(ApplicationProgranmingInterface)SDK軟件開發(fā)1:具包(SoftwareDevelopmentKit)SQL結(jié)
3、構(gòu)化查詢語言(StructuredQueryLanguage)TCP傳輸控制協(xié)議(TransmissionControlProtocol)HTTP超文本傳輸協(xié)議(HyperTextTransferProtocol)HTTPS超文本傳輸安全協(xié)議(HyperTextTransferProtocolSecure)XML可擴(kuò)展標(biāo)記語言(ExtensibleMarkupLanguage)JSONJava腳本對(duì)象簡(jiǎn)譜(JavaScriptObjectNotation)ORM對(duì)象關(guān)系映射(ObjectRelationalMapping)JWTJSONWeb令牌(JSONWebToken)loC控制反轉(zhuǎn)(In
4、versionofControl)DI依賴注入(DependencyInjection)XJ-B01-2019AOP面向切面編程(AspectOrientedProgramming)OLTP聯(lián)機(jī)事務(wù)處理過程(On-LineTransactionProcessing)HA高可用(HighAvailable)ECS阿里云服務(wù)器(ElasticComputeService)HSF阿里云淘寶服務(wù)框架(High-speedServiceFramework)EDAS阿里云企業(yè)級(jí)分布式應(yīng)用服務(wù)(EnterpriseDistributedApplicationService)DRDS阿里云分布式關(guān)系型數(shù)據(jù)庫服
5、務(wù)(DistributedRelationalDatabaseService)OSS阿里云對(duì)象存儲(chǔ)服務(wù)(ObjectStorageService)TSF騰訊微服務(wù)平臺(tái)(TencentServiceFreunework)CMQ騰訊云消息隊(duì)列(CloudMessageQueue)TDSQL騰訊云分布式數(shù)據(jù)庫服務(wù)(TencentDBforTDSQL)CLS騰訊云的日志服務(wù)(CloudLogService)ELKElacticsearch»Logstash和Kibana簡(jiǎn)稱RPC遠(yuǎn)程過程調(diào)用(RemoteProcedureCall)4 總體技術(shù)架構(gòu)4.1 總體技術(shù)架構(gòu)總體技術(shù)架構(gòu)參見圖1及圖
6、20系統(tǒng)總體技術(shù)架構(gòu)采用分布式云架構(gòu),在基礎(chǔ)設(shè)施層上,結(jié)合云平臺(tái),提供分布式服務(wù)支撐。通過業(yè)務(wù)中臺(tái)構(gòu)建業(yè)務(wù)中心,支持實(shí)時(shí)交易型應(yīng)用;通過數(shù)T應(yīng)用系統(tǒng)醫(yī)療保障業(yè)務(wù)系統(tǒng)據(jù)中臺(tái)實(shí)現(xiàn)數(shù)據(jù)匯聚、數(shù)據(jù)治理等,開展大數(shù)據(jù)應(yīng)用。基統(tǒng)一的應(yīng)用分層架構(gòu)建設(shè)經(jīng)辦管理類、公共服務(wù)類、智能監(jiān)管類、宏觀決策類業(yè)務(wù)子系統(tǒng)應(yīng)用。HSAF框架HSAF核心框架PAASHSAF適配框架云支撐服務(wù)分布式云架構(gòu)分布式服務(wù)分布式緩存分布式數(shù)據(jù)訪問分布式日志膘務(wù)非結(jié)構(gòu)化存儲(chǔ)消息隊(duì)列云基礎(chǔ)設(shè)施圖1總體技術(shù)架構(gòu)一概念圖國家戶0網(wǎng)信充平8技術(shù)架恂k制控異N3一處建何海F后攔:提值日|5|&1:|lyllftl上下:.;.二"短
7、全過小鼻及需aSeoice閂泥也有Seo-ice分布it臍務(wù)匚業(yè)務(wù)N理£B。?»限訪同三DA。持久化屋ORMappiflg特拒訪問代窿CDAAL節(jié)心檎K(H-UU)(£勺誄列)(*點(diǎn))RMWfil)(/t任折)(弁久化)(心幡)(帽和哂)叵叵)'(')圖2總體技術(shù)架構(gòu)邏輯圖總體技術(shù)架構(gòu)描述如下:a) 業(yè)務(wù)系統(tǒng):基廣醫(yī)療保障應(yīng)用框架(HealthcareSecurityApplicationFramework,簡(jiǎn)稱:HSAF)開發(fā)的支撐醫(yī)療保障業(yè)務(wù)運(yùn)行的應(yīng)用子系統(tǒng):b) HSAF框架:采用分布式云架構(gòu),封裝核心云支拄服務(wù)適配接口,用于實(shí)現(xiàn)云產(chǎn)品解耦設(shè)
8、計(jì),詳見4.3;c)適配層:基于HSAF的適配技術(shù),將應(yīng)用層依賴的分布式技術(shù)與具體廠商的分布式技術(shù)進(jìn)行適配,實(shí)現(xiàn)應(yīng)用層可以適配多家廠商的分布式技術(shù):d)云支掠服務(wù)層:基于云基礎(chǔ)設(shè)施,為應(yīng)用層提供通用的技術(shù)支撐服務(wù),包括分布式服務(wù)、分布式緩存、分布式數(shù)據(jù)訪問、日志服務(wù)、非結(jié)構(gòu)化存儲(chǔ)和消息隊(duì)列等;e)云基礎(chǔ)設(shè)施層:采用云架構(gòu),在物理設(shè)備基礎(chǔ)上.實(shí)現(xiàn)計(jì)算資源、存儲(chǔ)資源、網(wǎng)絡(luò)資源的動(dòng)態(tài)管理和資源調(diào)配。4. 2架構(gòu)設(shè)計(jì)思路為滿足全國醫(yī)療保障信息系統(tǒng)部署模式的可靈活選攔要求,相對(duì)傳統(tǒng)系統(tǒng)技術(shù)架構(gòu),醫(yī)療保璋信息平臺(tái)在架構(gòu)中增加了“適配層”,將應(yīng)用層依膜的分布式技術(shù)與具體廠商的分布式技術(shù)進(jìn)行適配,實(shí)現(xiàn)應(yīng)用層可
9、以適配多家廠商的分布式技術(shù)。地方可根據(jù)實(shí)際情況向各個(gè)云資源提供商(包括政務(wù)云和專有云等)租用或申請(qǐng)資源使用,也可自建數(shù)據(jù)中心。云基礎(chǔ)設(shè)施建設(shè)參見圖3。公共照務(wù)區(qū)核心業(yè)務(wù)區(qū)告市兩級(jí)部署株式省級(jí)集中部署模五公;U晚系蛻的如US阿M?幽甲MA湖的8公共修分子系疣公共事次,煙公共朝區(qū)山窮中自亞劣«T>生產(chǎn)區(qū)交校區(qū)I大數(shù)掇區(qū)iiimv'Es«ne®a?se:魯理子村-KIsnffl核心業(yè)務(wù)區(qū)云)awttUR)mnHHH1為SUE務(wù)中tf»JUftB在出分護(hù)序色腳價(jià)Ita子同t業(yè)務(wù)彈提.MM1M1改停.浜沖管H7朝管理?礎(chǔ)*RMJ業(yè)券C0B鐵心處第Mi
10、k乃中依堂分M中心JJ壬敷空同步1二二二二二二«WWrtRIfW.安ni次累大skd母于神KQ*蛀分析/(NXUNWX政務(wù)云勺-邛、專有云專有彳-8ra>7as管是彳儆公共啊/*務(wù)中卷W4Xlft«tFWttJiM1業(yè)務(wù)(仙河皿M八/'Ji:中0/,一3-£業(yè)務(wù)”務(wù)axn«,*業(yè)務(wù)(WftKKS&公募很黑S?K圖3云基礎(chǔ)設(shè)施建設(shè)在總體技術(shù)架構(gòu)設(shè)計(jì)和代碼開發(fā)時(shí),應(yīng)遵循一個(gè)重要原則:框架需滿足技術(shù)擴(kuò)展性的要求,當(dāng)前框架能適配至少三種云平臺(tái)分布式技術(shù),新的分布式技術(shù)的加入可以通過框架的擴(kuò)展實(shí)現(xiàn)。4.3應(yīng)用技術(shù)分層架構(gòu)為了保證業(yè)務(wù)子系統(tǒng)應(yīng)用
11、具有良好的橫向擴(kuò)展能力,以應(yīng)對(duì)未來業(yè)務(wù)的快速發(fā)展,整個(gè)應(yīng)用架構(gòu)采用分布式云架構(gòu)設(shè)計(jì),業(yè)務(wù)能力通過微服務(wù)框架基于高內(nèi)聚低耦合的思路實(shí)現(xiàn)。所有服務(wù)均為無狀態(tài)服務(wù),實(shí)現(xiàn)在線應(yīng)用的擴(kuò)縮容能力。應(yīng)用分層架構(gòu)參見圖4o心據(jù)訪i5后FK量ff口本地胭務(wù)Sen>ee業(yè)旁處aESnil訪問居DAON3gM持久帙我據(jù)訪問代理8DAAL分布式步馬W居聯(lián)里務(wù)Sendee圖4應(yīng)用技術(shù)分層架構(gòu)業(yè)務(wù)應(yīng)用子系統(tǒng)分為客戶端和服務(wù)器端兩大部分:a)客戶端:前端展現(xiàn)層;b)服務(wù)器端: 控制層:一一業(yè)務(wù)邏輯層: 數(shù)據(jù)訪問層; 分布式數(shù)據(jù)庫層。業(yè)務(wù)應(yīng)用子系統(tǒng)需嚴(yán)格按照該分層架構(gòu)和調(diào)用層次進(jìn)行應(yīng)用程序開發(fā)和服務(wù)調(diào)用。4.4HSAF
12、框架4.4.1 概述HSAF框架設(shè)計(jì)采用1+N模式,即1套核心框架,多套云支撐服務(wù)技術(shù)平臺(tái)適配。HSAF框架中包含控制層、業(yè)務(wù)層和持久化層接H抽象,定義了分布式服務(wù)框架、分布式緩存、分布式消息隊(duì)列、非結(jié)構(gòu)化存儲(chǔ)、日志服務(wù)等分布式中間件服務(wù)的接I?;?.2架構(gòu)設(shè)計(jì)思路,HSAF框架分為兩部分:a) HSAF核心框架,提供業(yè)務(wù)子系統(tǒng)運(yùn)行相關(guān)的基礎(chǔ)框架和服務(wù)支撐;b) HSAF適配框架,提供對(duì)不同云支撐服務(wù)技術(shù)平分的適配和可移植支摔。HSAF框架總體結(jié)構(gòu)參見圖5o定時(shí)任務(wù)核心框架圖5HSAF框架結(jié)構(gòu)c) 4.2HSAF核心框架HSAF核心框架,統(tǒng)一封裝了Spring框架相關(guān)組件、ORM持久化框架、
13、數(shù)據(jù)庫連接池組件、會(huì)話上下文、異常統(tǒng)一攔截器、操作日志攔截器、權(quán)限認(rèn)證攔截器、安全過濾攔截器等開發(fā)基礎(chǔ)服務(wù),能使業(yè)務(wù)系統(tǒng)開發(fā)人員盡可能只關(guān)注業(yè)務(wù)邏軾,而無需過多關(guān)注技術(shù)細(xì)節(jié)。它主要提供了以下功能和服務(wù):a)統(tǒng)一認(rèn)證服務(wù)(詳見6.1):XJ-B01-2019b)單點(diǎn)登錄服務(wù)(詳見6.2);c)全局ID序列服務(wù)(詳見6.3):d)事務(wù)管理(詳見6.4):e)異常管理(詳見6.5);f)定時(shí)任務(wù)(詳見6.6);g)持久化服務(wù)(詳見6.7):h)數(shù)據(jù)庫連接池服務(wù)(詳見6.8):i)報(bào)表服務(wù)(詳見6.9)。4. 4.3HSAF適配框架5. 4.3.1適配抽象層適配抽象層是時(shí)適配層中的分布式服務(wù)的具體技術(shù)
14、實(shí)現(xiàn)進(jìn)行抽象,提供了分布式緩存、遠(yuǎn)程服務(wù)調(diào)用、非結(jié)構(gòu)化存儲(chǔ)、消息隊(duì)列等PaaS層服務(wù)的抽象接【I。在代碼中,應(yīng)基干抽象接口層進(jìn)行開發(fā),而不能直接使用具體的擴(kuò)展派生類,否則代碼將綁定某種具體技術(shù)方案。適配抽象層設(shè)H詳見7.1o6. 4.3.2適配實(shí)現(xiàn)層適配實(shí)現(xiàn)層基適配抽象層,擴(kuò)展了分布式服務(wù)的具體技術(shù)實(shí)現(xiàn)。醫(yī)療保障信息平臺(tái)適配的技術(shù)實(shí)現(xiàn),已預(yù)設(shè)提供以下三套方案:阿里云專有云產(chǎn)品(詳見7.2)、騰訊云專有云產(chǎn)品(詳見7.3)、開源產(chǎn)品中的一種選型(詳見7.4)。各地醫(yī)保系統(tǒng)做技術(shù)合規(guī)選型時(shí),如采用HSAF框架預(yù)設(shè)適配實(shí)現(xiàn)技術(shù)之外的技術(shù),應(yīng)做相應(yīng)適配、開發(fā)工作。7. 5遠(yuǎn)程服務(wù)調(diào)用遠(yuǎn)程服務(wù)調(diào)用是分布
15、式服務(wù)框架的基礎(chǔ)和核心功能。目前主流的分布式服務(wù)框架使用兩種遠(yuǎn)程服務(wù)調(diào)用協(xié)議:a) RPC協(xié)議,以Dubbo、Thrift、gRPC、rpcx、Motan為代表的框架使用的協(xié)議:b) HTTP協(xié)議,以SpringCloud為代表的框架使用的協(xié)議。兩種協(xié)議在不同的分層上提供服務(wù),RPC協(xié)議是在Service層提供服務(wù),HTTP協(xié)議是在Controller層提供服務(wù)。為了兼容兩種不同的服務(wù)提供方式,實(shí)現(xiàn)一套業(yè)務(wù)代碼適配不同的分布式服務(wù)框架所使用的遠(yuǎn)程服務(wù)調(diào)用協(xié)議,如圖6所示,架構(gòu)要求如下:a)對(duì)于RPC協(xié)議,通過提供不同的服務(wù)注冊(cè)發(fā)現(xiàn)配置文件來實(shí)現(xiàn)協(xié)議的切換:b)時(shí)于HTTP協(xié)議,Service服
16、務(wù)需要額外包裝一層Controller層來實(shí)現(xiàn)服務(wù)的協(xié)議轉(zhuǎn)換。HSAF適配層設(shè)計(jì)一套核心業(yè)務(wù)代萬4多套侵人適配5應(yīng)用技術(shù)分層架構(gòu)5.1 客戶端5.1.1 概述客戶端包含PC端、移動(dòng)端、大屏幕端等類型。客戶端與服務(wù)器端之間的通訊協(xié)議為HTTP協(xié)議,交互的數(shù)據(jù)格式為JSON格式。5.1.2 前端展現(xiàn)層前端展現(xiàn)層泛指一切在客戶端直接與用戶交互的客戶界面(UI),本層是MVC架構(gòu)中的視圖層(V)。各類型客戶端使用各自的組件作為前端展現(xiàn)層的UI實(shí)現(xiàn)方式。前端展現(xiàn)層將用戶對(duì)UI的操作轉(zhuǎn)化成基于HTTP協(xié)議的JSON格式的字符串去訪問服務(wù)器,并將服務(wù)器返回的數(shù)據(jù)通過各自的組件展現(xiàn)給用戶。服務(wù)器端能響應(yīng)符介H
17、TTP/JSON的業(yè)務(wù)請(qǐng)求,客戶端應(yīng)發(fā)出符合業(yè)務(wù)要求的HTTP/JSON請(qǐng)求,由服務(wù)器端處理和響應(yīng)。HSAF框架在瀏覽器上的前端展現(xiàn)層實(shí)現(xiàn)是參考實(shí)現(xiàn)。HSAF框架提供了基于PC端的前端展現(xiàn)層實(shí)現(xiàn),其他類型客戶端部分需要開發(fā)商自行實(shí)現(xiàn)。5.2 服務(wù)器端5.2.1 概述服務(wù)器端包含控制層、業(yè)務(wù)處理邏輯層、數(shù)據(jù)訪問層和分布式數(shù)據(jù)庫層四部分。5.2.2 控制層控制層包含過濾器攔截器層、控制器層(Controller)兩部分。過波器攔截器層主要處理全局性問題,一切訪問都會(huì)經(jīng)過過濾器攔截器層處理,不會(huì)繞過過濾器攔截器直接訪問控制層。本層次提供的能力包括:XJ-B01-2019a)分布式會(huì)話管理:用戶會(huì)話信
18、息統(tǒng)一寫入分布式緩存中;b)裝我上下文信息;c)記錄操作口志;d)安全管理:通過一個(gè)過濾器徒攔截進(jìn)入的請(qǐng)求,并將這些請(qǐng)求轉(zhuǎn)給認(rèn)證和訪問決策管理器處理,從而增強(qiáng)安全性??刂破鲗迂?fù)責(zé)請(qǐng)求的全生命周期處理,包含接收一分發(fā)一調(diào)用業(yè)務(wù)視圖展現(xiàn)的全過程。HSAF的核心控制框架是困繞前端控制器(DispatcherServlet)展開的,前端控制器負(fù)費(fèi)將請(qǐng)求派發(fā)到特定的控制器。當(dāng)控制器類接收到一個(gè)請(qǐng)求時(shí),它會(huì)在自己內(nèi)部尋找一個(gè)合適的處理方法來處理請(qǐng)求??刂破髟谶x擇好適合處理請(qǐng)求的方法時(shí),傳入收到的請(qǐng)求(根據(jù)方法參數(shù)類型,可能以不同的類型傳入),并且調(diào)用該方法中的邏輯來進(jìn)行處理。方法邏輯會(huì)調(diào)用業(yè)務(wù)邏輯。業(yè)務(wù)邏
19、輯運(yùn)行完畢之后,會(huì)委派給一個(gè)視圖,由該視圖來處理方法的返回值。返回的視圖名稱會(huì)返回給前端控制器,它會(huì)根據(jù)一個(gè)視圖解析器將視圖名稱解析為一個(gè)具體的視圖實(shí)現(xiàn).5. 2.3業(yè)務(wù)邏輯層業(yè)務(wù)邏輯層包含Service、BO兩個(gè)子層次。在View、ControllerService、B0這三個(gè)層次之間通過DTO進(jìn)行業(yè)務(wù)對(duì)象的傳遞,在B0與DA0之間通過DO進(jìn)行數(shù)據(jù)對(duì)象的傳遞。Service是服務(wù)的發(fā)布層,提供府外服務(wù)的接口,并調(diào)用B0完成接II任務(wù)。B0層實(shí)現(xiàn)具體的業(yè)務(wù)邏輯。DAO層書寫數(shù)據(jù)庫訪問邏輯,調(diào)用持久化層實(shí)現(xiàn)數(shù)據(jù)庫的訪問工作。8. 2.4數(shù)據(jù)訪問層數(shù)據(jù)訪問層分為持久化層和數(shù)據(jù)訪問代理層兩部分。持久
20、化層實(shí)現(xiàn)0/RMapping的工作并調(diào)用分布式數(shù)據(jù)庫。數(shù)據(jù)訪問代理層統(tǒng)一接收數(shù)據(jù)訪問層的請(qǐng)求并對(duì)請(qǐng)求進(jìn)行解析、優(yōu)化、路由、分發(fā)給分布式數(shù)據(jù)庫,提供對(duì)分庫分表、讀寫分離的透明支持,并且提供對(duì)跨庫信息進(jìn)行合并等操作,將數(shù)據(jù)庫結(jié)果返回給數(shù)據(jù)訪問層。9. 2.5分布式數(shù)據(jù)庫層分布式數(shù)據(jù)庫層通過分布式數(shù)據(jù)訪問代理服務(wù),訪問分布式關(guān)系型數(shù)據(jù)庫,能使多個(gè)關(guān)系型數(shù)據(jù)庫工作如在同一個(gè)關(guān)系型數(shù)據(jù)庫一樣。10. 3框架層次調(diào)用11. 3.1對(duì)象模型定義分層中涉及的對(duì)象模型定義如下:a)DT0(DataTransferObject):數(shù)據(jù)傳輸對(duì)象,Service或Manager向外傳輸?shù)膶?duì)象:b)BO(Busines
21、sObject):業(yè)務(wù)對(duì)象,由Service層輸出的封裝業(yè)務(wù)邏輯的對(duì)象:c)DO(DataObject):數(shù)據(jù)時(shí)象,此對(duì)象與數(shù)據(jù)庫表結(jié)構(gòu)一一對(duì)應(yīng),可擴(kuò)展虛擬字段(如一些查詢條件、計(jì)算字段、匯總信息等),通過DAO層向上傳輸數(shù)據(jù)源對(duì)象。5.3.2調(diào)用順序框架層次調(diào)用參見圖1,框架層次調(diào)用順序如下:a)客戶端瀏覽器發(fā)起HTTP/JSON請(qǐng)求;b)服務(wù)器端過濾器過漁請(qǐng)求,做安全、編碼、session管理等處理,攔截器攔截請(qǐng)求做記錄口忐、訪問統(tǒng)計(jì)等操作,并裝我上下文信息:c)控制器接收前端傳過來的DTO對(duì)象,并調(diào)用本地服務(wù)或者遠(yuǎn)程服務(wù);d) Service分為接II與實(shí)現(xiàn)兩部分。Service服務(wù)接I
22、1接受控制層的遠(yuǎn)程或本地調(diào)用,接收DTO對(duì)象,調(diào)用本地B0中的業(yè)務(wù)邏輯,并將B0返回的業(yè)務(wù)結(jié)果(DTO對(duì)象)返回給控制層(遠(yuǎn)程或本地客戶端):e) B0分為接口與實(shí)現(xiàn)兩部分。B0服務(wù)接II接受Service的本地調(diào)用,接收DTO對(duì)象,實(shí)現(xiàn)業(yè)務(wù)邏輯,使用DO對(duì)象調(diào)用DAO來訪問數(shù)據(jù)庫,將DAO返回DO對(duì)象轉(zhuǎn)換為DTO對(duì)象,返回給Service:f) DAO層接受B0層的調(diào)用,接收DO對(duì)象,實(shí)現(xiàn)具體的SQL邏輯,訪問數(shù)據(jù)庫,并將返回的數(shù)據(jù)模型返回給B0:g)數(shù)據(jù)訪問層實(shí)現(xiàn)數(shù)據(jù)持久化工作,將數(shù)據(jù)庫的庫表結(jié)構(gòu)與java灼象做映射:h)數(shù)據(jù)訪問代理層接受持久化層的數(shù)據(jù)訪問,對(duì)數(shù)據(jù)訪問進(jìn)行數(shù)據(jù)操作的解析和
23、執(zhí)行,包括會(huì)話管理、分庫分表策略、語義解析、請(qǐng)求路由、數(shù)據(jù)合并、切換控制等,數(shù)據(jù)訪問代理層將數(shù)據(jù)操作處理后分派到具體的分布式數(shù)據(jù)庫:i)分布式數(shù)據(jù)庫層接受數(shù)據(jù)訪問代理層的訪問,進(jìn)行數(shù)據(jù)庫處理,將數(shù)據(jù)返回給數(shù)據(jù)訪問代理層。5 .3.3調(diào)用要求各層次的調(diào)用順序及對(duì)象模型的傳輸,應(yīng)遵循5.3.2所述。對(duì)象模型傳輸示意參見圖7。圖7對(duì)象模型傳輸示意圖6 核心框架設(shè)計(jì)6.1 統(tǒng)一認(rèn)證服務(wù)6.1.1 概述用戶認(rèn)證指驗(yàn)證某個(gè)用戶是否為系統(tǒng)中的合法主體,即判斷用戶能否訪問該系統(tǒng)。用戶認(rèn)證一般要求用戶提供用戶名和密碼。系統(tǒng)通過校驗(yàn)用戶名和密科來完成認(rèn)證過程。6.1.2 認(rèn)證技術(shù)HSAF框架中采用OAuth2.0
24、標(biāo)準(zhǔn)、JWT(JSONWebToken)進(jìn)行登錄認(rèn)證,使用SpringSecurity框架完成相關(guān)的認(rèn)證和授權(quán)驗(yàn)證。 OAuthOAuth是一種開放的協(xié)議,為桌面、內(nèi)成Web應(yīng)用提供了一種簡(jiǎn)單的、標(biāo)準(zhǔn)的方式去訪問需要用戶授權(quán)的API服務(wù)。XJ-B01-20190Auth2.0具有以下特點(diǎn):a)簡(jiǎn)單:不管是OAuth服務(wù)提供者還是應(yīng)用開發(fā)者,都很容易理解與使用:b)安全:沒有涉及到用戶密鑰等信息,更安全更靈活:c)開放:任何服務(wù)提供商都可以實(shí)現(xiàn)OAuth,任何軟件開發(fā)商都可以使用OAuthoOAuth2.0定義了四種授權(quán)方式:a) 授權(quán)碼模式(AuthorizationCode):
25、b)簡(jiǎn)化模式(Implicit):c)密碼模式(Password):d)客戶端模式(ClientCredentials)©OAuth2.0定義了以下幾種角色:b) ResourceOwner:資源擁仃者;c) ResourceServer:資源服務(wù)器:d) Client:第三方應(yīng)用客戶端;e) AuthorizationServer:授權(quán)服務(wù)器。 JWTJWT是一個(gè)開放標(biāo)準(zhǔn)(RFC7519),它定義了一種緊湊且獨(dú)立的方式,用于在各方之間作為JSOX對(duì)象安全地傳輸信息。此信息可以通過數(shù)字簽名進(jìn)行驗(yàn)證和信任。JWT可以使用秘密(使用HMAC算法)或使用RSA或ECDSA的公
26、鑰/私鑰對(duì)進(jìn)行簽名。6.1.2. 3SpringSecuritySpringSecurity是一個(gè)能夠?yàn)榛鵍,Spring的企業(yè)應(yīng)用系統(tǒng),提供聲明式的安全訪問控制解決方案的安全框架。它提供了一組可以在Spring應(yīng)用上下文中配置的Bean,充分利用了SpringIoC,DI和AOP功能,為應(yīng)用系統(tǒng)提供聲明式的安全訪問控制功能,減少了為企業(yè)系統(tǒng)安全控制編寫大量重復(fù)代碼的工作。6.1.3認(rèn)證服務(wù) 認(rèn)證服務(wù)場(chǎng)景認(rèn)證服務(wù)提供以下三種場(chǎng)景的認(rèn)證能力:a)內(nèi)部統(tǒng)一門戶認(rèn)證;b)客戶端應(yīng)用認(rèn)證:c)開放授權(quán)認(rèn)證。6.1.3. 2內(nèi)部統(tǒng)一門戶認(rèn)證內(nèi)部統(tǒng)一門戶子系統(tǒng)為醫(yī)保局業(yè)務(wù)經(jīng)辦工作人員提供統(tǒng)一
27、登錄入11,認(rèn)證服務(wù)能提供統(tǒng)一的身份認(rèn)證能力和單點(diǎn)登錄服務(wù)(詳見6.2)。6.1.3. 3客戶端應(yīng)用認(rèn)證公共服務(wù)子系統(tǒng)涉及移動(dòng)APP、網(wǎng)廳、短信、微信/小程序、自助終端等客戶端,認(rèn)證服務(wù)提供客戶端統(tǒng)一身份認(rèn)證能力。如圖8所示,認(rèn)證服務(wù)提供的客戶端統(tǒng)一身份認(rèn)證流程如下:a)用戶登錄客戶端;b)客戶端向認(rèn)證眼務(wù)請(qǐng)求認(rèn)證;c)認(rèn)證服務(wù)使用密碼模式進(jìn)行認(rèn)證;)zdefghi)客戶端向用戶展示結(jié)果。AP闌髡認(rèn)證服務(wù)認(rèn)證通過,生成JWT格式的access-token,返回給客戶端;客戶端存儲(chǔ)川T,返回登錄成功;用戶在客戶端進(jìn)行后續(xù)操作;客戶端攜帶JWT向API服務(wù)請(qǐng)求API接口;API服務(wù)驗(yàn)證JWT的有效
28、性,驗(yàn)證通過則執(zhí)行后續(xù)邏輯,返回結(jié)果:圖8客戶端應(yīng)用認(rèn)證流程開放授權(quán)認(rèn)證基于OAuth標(biāo)準(zhǔn),認(rèn)證服務(wù)能提供開放開發(fā)授權(quán)認(rèn)證的能力。如圖9所示,開放授權(quán)認(rèn)證流程如下:a)用戶(ResourceOwner角色)向第三方系統(tǒng)發(fā)起請(qǐng)求;b)第三方系統(tǒng)(Client角色)向用戶返回用戶授權(quán)認(rèn)證操作:c)用戶輸入平臺(tái)認(rèn)證信息,向認(rèn)證服務(wù)(AuthorizationServer角色)請(qǐng)求授權(quán)認(rèn)證;d)認(rèn)證服務(wù)認(rèn)證通過,生成code,并跳轉(zhuǎn)到授權(quán)確認(rèn)頁面;e)用戶同意授權(quán):f)認(rèn)證服務(wù)生成code并跳轉(zhuǎn)到重定向頁面:g)第三方系統(tǒng)使用code請(qǐng)求認(rèn)證服務(wù)的token接口;h)認(rèn)證服務(wù)生成JWT格
29、式的access_token并返回;i)第三方系統(tǒng)本地存儲(chǔ)access_token;j)第三方系統(tǒng)后續(xù)使用access_token向開放資源服務(wù)(ResourceServer角色)請(qǐng)求開放資源,并經(jīng)過處理后展現(xiàn)給用戶。醫(yī)療保0信息平臺(tái)夫第三方系續(xù)認(rèn)證觸務(wù)開放費(fèi)等服務(wù)2簿人平臺(tái)認(rèn)證信息,請(qǐng)求授權(quán)認(rèn)證0411111111111112.1:仇證通過01ft111EI3同意授權(quán)0A111一I11111開廣3.1:311111tfiicodeOJ11111,3.2:虢轉(zhuǎn)到玉定向地卬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開放授權(quán)認(rèn)證場(chǎng)景6.2單點(diǎn)登錄服務(wù)6.2.1實(shí)現(xiàn)方式單點(diǎn)登錄(SingleSignOn)服務(wù)是指在多個(gè)相互信任的應(yīng)用系統(tǒng)中,用戶只需要登錄一次就可以訪問所有相互信任的應(yīng)用系統(tǒng)的服務(wù)。系統(tǒng)采用Session共享方案來實(shí)現(xiàn)單點(diǎn)登錄。共享Session可謂是實(shí)現(xiàn)單點(diǎn)登錄最立接、最簡(jiǎn)單的方式。將用戶認(rèn)證信息保存于Session中,即以Sessio
31、n內(nèi)存儲(chǔ)的值為用戶憑證,這在單個(gè)站點(diǎn)內(nèi)使用是很正常也很容易實(shí)現(xiàn)的,而在用戶驗(yàn)證、用戶信息管理與業(yè)務(wù)應(yīng)用分離的場(chǎng)景下即會(huì)遇到單點(diǎn)登錄的問題,在應(yīng)用體系筒單,子系統(tǒng)很少的情況下,可以考慮采用Session共享的方法來處理這個(gè)問題。Session服務(wù)用于存儲(chǔ)與用戶相關(guān)的數(shù)據(jù),默認(rèn)由Web容器進(jìn)行管理。單機(jī)情況下,所有用戶的Session數(shù)據(jù)由一臺(tái)服務(wù)器持有,不存在Session數(shù)據(jù)不一致的情況,但在分布式情況下,用戶的前后兩次請(qǐng)求可能會(huì)轉(zhuǎn)發(fā)到不同的后端服務(wù)器上,如果不進(jìn)行Session共享會(huì)出現(xiàn)Session數(shù)據(jù)不一致的情況。因此打造一個(gè)高可用的分布式系統(tǒng),應(yīng)將Session管理從容器中獨(dú)立:出來成
32、為統(tǒng)一的脫離容器的Session存儲(chǔ)機(jī)制。ESAF框架的Session管理通過基于Redis服務(wù)器的方案來實(shí)現(xiàn)Session的共享存儲(chǔ)。6.2.2單點(diǎn)登錄流程如圖10所示,單點(diǎn)登錄流程如下:a)接收用戶認(rèn)證信息;b)將用戶認(rèn)證信息提交認(rèn)證中心進(jìn)行認(rèn)證;c)認(rèn)證成功生成有效憑證并通過用戶中心獲取對(duì)應(yīng)用戶詳細(xì)信息:d)將用戶信息寫入Session對(duì)象,保存至Session共享服務(wù)中;e)通過Session共享服務(wù)獲取認(rèn)證服務(wù)共享的Session信息,完成單點(diǎn)登錄:f)通過用戶過濾器獲取當(dāng)前登錄用戶,并將用戶信息及所屬機(jī)構(gòu)信息寫入線程對(duì)象HsafContextHolder中。1首次丑錄()必露配置為
33、相同域名圖10單點(diǎn)登錄流程6.2.3應(yīng)用要求為保證醫(yī)療保障信息平臺(tái)各個(gè)業(yè)務(wù)子系統(tǒng)Web應(yīng)用的Session共享,避免出現(xiàn)因跨域?qū)е碌腟ession不能共享問gg,各業(yè)務(wù)子系統(tǒng)Web應(yīng)用應(yīng)配置相同的域名。Session共享服務(wù)應(yīng)使用獨(dú)立的緩存服務(wù)器進(jìn)行存儲(chǔ),與業(yè)務(wù)使用的緩存服務(wù)器完全分離,互不影響。6.3全局ID序列服務(wù)全局唯一序列號(hào)生成是在設(shè)計(jì)一個(gè)分布式系統(tǒng)時(shí)常常會(huì)遇見的需求。在分布式系統(tǒng)架構(gòu)XJ-B01-2019下,尤其是數(shù)據(jù)庫使用分庫分表的時(shí)候,數(shù)據(jù)庫自增主鍵已無法保證全局唯一。HSAF框架提供了統(tǒng)一的組件,實(shí)現(xiàn)全局ID序列生成服務(wù),可被直接調(diào)用生成全局序列IDo6.4事務(wù)管理6.4.1實(shí)
34、現(xiàn)方式HSAF框架使用了Spring框架的事務(wù)管理機(jī)制。Spring支持編程式事務(wù)管理和聲明式事務(wù)管理兩種方式。聲明式事務(wù)管理是非代碼侵入式的開發(fā)方式,這是Spring所倡導(dǎo)的開發(fā)方式。聲明式事務(wù)管理也有兩種常用的方式,一種是基于tx和A0P命名空間的XML配置文件,另一種就是基JTransactional注解。6.4.2應(yīng)用要求為了方便系統(tǒng)氾活地進(jìn)行事務(wù)隔離等級(jí)、事務(wù)傳播行為、事務(wù)超時(shí)、事務(wù)回滾規(guī)則等參數(shù)的控制,應(yīng)使用基于XML配置文件的聲明式事務(wù)管理方式,不應(yīng)使用基于Transactional注解的方式。另外,根據(jù)分層設(shè)計(jì),Service是服務(wù)的發(fā)布層,B0層是具體的業(yè)務(wù)邏輯實(shí)現(xiàn)層,Ser
35、vice層提供對(duì)外服務(wù)的接I1,并調(diào)用B0層完成接II任務(wù)。架構(gòu)要求事務(wù)只能聲明在B0層。6.5異常管理6.5.1異常類設(shè)計(jì)HSAF框架統(tǒng)一異常處理,實(shí)現(xiàn)對(duì)控制層、業(yè)務(wù)處理層及數(shù)據(jù)訪問層的異常捕獲和異常信息封裝。業(yè)務(wù)開發(fā)人員只需要在各個(gè)層次中,拋出對(duì)應(yīng)的業(yè)務(wù)異常和數(shù)據(jù)訪問異常,框架會(huì)進(jìn)行統(tǒng)一攔截,不需要開發(fā)人員手動(dòng)進(jìn)行異常處理,可減少代碼量,提高開發(fā)效率,同時(shí)也實(shí)現(xiàn)了整個(gè)系統(tǒng)的異常統(tǒng)一處理和管理。異常類設(shè)計(jì)如圖11所示??蚣芩械漠惓>^承自*cn.hsa.hsaf.framework,exception.AppException'這個(gè)基類,每個(gè)業(yè)務(wù)j系統(tǒng)(或者業(yè)務(wù)中臺(tái))定義自己的異常
36、類(統(tǒng)一繼承自Busine=Excepticn1系統(tǒng)運(yùn)行過程中,在控制層(Controller),業(yè)務(wù)服務(wù)層(Service).業(yè)務(wù)邏輯層出0)、數(shù)據(jù)訪問層(DAO)如果發(fā)生業(yè)務(wù)異常(BusinessException)、數(shù)據(jù)訪問異常(DataAccessException)或擰其它運(yùn)行時(shí)異常,SpringMVC調(diào)用框架提供的HSAFExceptionHand1er對(duì)異常信息進(jìn)行統(tǒng)一攔假處理,記錄異??谥?,并將異常信息經(jīng)業(yè)務(wù)封裝后返回UI層進(jìn)行提示。圖11異常類設(shè)計(jì)6.5.2異常錯(cuò)誤碼框架采用前后端分離技術(shù),前端通過HTTP請(qǐng)求后臺(tái)服務(wù),數(shù)據(jù)統(tǒng)一使用JSO格式,服務(wù)端響應(yīng)數(shù)據(jù)使ffl統(tǒng)一的規(guī)范
37、格式和狀態(tài)碼:示例:H"type:success,"code":0,"message":”這里顯示錯(cuò)誤簡(jiǎn)短信息”,"data":)如圖12所示,為了方便問題的定位排查,以及服務(wù)質(zhì)量的統(tǒng)計(jì)分析,在HSAF框架的異?;愔卸x卒片誤碼code屬性,應(yīng)用代碼拋出異常時(shí),需要定義該屬性。publicclassAppExceptionextendsRuntimeExceptionprivatestaticfinallongserialVtrstonUlD=-7611643172712984323L;異稹巖誤碼,詳見開發(fā)指南中的錯(cuò)誤科定
38、義intcode;publicAppExcepti(xi(finalintcode)sup«r();this.code=ccxle;)publicAppExcepticxi(finalintcode,finalStringmessage)super(message);this.code=code;圖12錯(cuò)誤碼定義業(yè)務(wù)異常錯(cuò)誤碼采用六位字符串,格式為“兩位系統(tǒng)編號(hào)+兩位模塊編號(hào)+兩位異常編號(hào)”,具體的異常錯(cuò)誤碼見表lo表1錯(cuò)誤碼使用范圍說明錯(cuò)誤碼使用范圍說明0系統(tǒng)級(jí)成功-1系統(tǒng)級(jí)未知異常-2系統(tǒng)級(jí)請(qǐng)求參數(shù)異常-3系統(tǒng)級(jí)服務(wù)端請(qǐng)求超時(shí)-4系統(tǒng)級(jí)權(quán)限校驗(yàn)異常-5系統(tǒng)級(jí)無效的請(qǐng)求地址-6系統(tǒng)
39、級(jí)觸發(fā)限流lOxxxx框架級(jí)llxxxx內(nèi)部統(tǒng)一門戶12xxxx基礎(chǔ)信息管理13xxxx醫(yī)保業(yè)務(wù)基礎(chǔ)14xxxx支付方式管理15xxxx醫(yī)療服務(wù)價(jià)格管理16xxxx信用評(píng)價(jià)管理17xxxx跨省異地就醫(yī)18xxxx藥品和醫(yī)用耗材招采19xxxx公共服務(wù)20xxxx基金運(yùn)行及審計(jì)監(jiān)管21xxxx醫(yī)療保障智能監(jiān)管22xxxx運(yùn)行監(jiān)測(cè)23xxxx宏觀決策大數(shù)據(jù)應(yīng)用24xxxx內(nèi)部控制25xxxx業(yè)務(wù)中臺(tái)6. 5.3不可捕獲異常的處理HSAFExceptionHandler可以攔截處理所有應(yīng)用層抽出的AppException異常的子類,但是系統(tǒng)運(yùn)行過程中,還有一些“特殊”的異常是無法捕獲的,原因是:a)
40、AppException異常基類是繼承自RuntimeException,而java的異常根類為Throwable»Throwable的兩個(gè)子類Error和Exception,Exception的兩個(gè)子類CheckedException和RuntimeException:因此能被捕獲的實(shí)際上只是RuntimeException相關(guān)的異常(當(dāng)然這能夠處理大部分的異常情況),對(duì)j'Error以及CheckedException無法捕獲:b)正常的代碼中一般使用try.catch(AppExceptionex)。來捕獲異常,執(zhí)行過程中可能因?yàn)榫€程中斷或阻塞了,導(dǎo)致catch塊中的代
41、碼并沒有正常的執(zhí)行到。為了統(tǒng)一對(duì)不可捕獲異常的處理,HSAF框架統(tǒng)一封裝實(shí)現(xiàn)了Thread.UncaughtExceptionHandler接1I,該接II聲明了某個(gè)線程執(zhí)行過程中,對(duì)未捕獲的異常處理,如圖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所示,應(yīng)用請(qǐng)求的入口一般是Controller,因此HSAF框架通過A0P切面的方式在請(qǐng)求的入口方法處設(shè)置當(dāng)前線程的UncaughtExceptionHandler.以處理當(dāng)前線程中無法正常捕獲的各種異常。packagecn.hsa.hsafcore.fraitework.webexception;importorg.aspectj.lang.JoinPoint;iiaportorg.sp
43、rinRfraBeiMork.beans.factory.annotation.Autowired;a9ClassName:HsafUncaughtExceptionHandlerAspect* Description:不下植工導(dǎo)布的妹一處理,在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切面設(shè)置當(dāng)前線程的UncaughtExceptionHandIer6.5.4應(yīng)用要求國家或地方在開展醫(yī)療保障信息平臺(tái)建設(shè)時(shí),異常派生類應(yīng)繼承框架統(tǒng)一的異常類結(jié)構(gòu)設(shè)計(jì)(如圖11所示)。代碼開發(fā)中,除非有明確約定,否則而捕獲的異常直接拋到匕一層,由HSAF框架在控制層進(jìn)行統(tǒng)一攔截。6.6定時(shí)任務(wù)HSAF框架基于XXL-JOB擴(kuò)展定時(shí)任務(wù)組件,提供分布式定時(shí)任務(wù)支持。XXL-JOB是一個(gè)輕量級(jí)分布式任務(wù)調(diào)度平臺(tái),其核心設(shè)計(jì)目標(biāo)是開發(fā)迅速
47、、學(xué)習(xí)簡(jiǎn)單、輕量級(jí)、易擴(kuò)展?,F(xiàn)已開放源代碼并接入多家公司線上產(chǎn)品線,接入場(chǎng)景如電商業(yè)務(wù),020業(yè)務(wù)和大數(shù)據(jù)作業(yè)等,易上手,開箱即用。其設(shè)計(jì)思想為將調(diào)度行為抽象形成“調(diào)度中心”公共平臺(tái),而平臺(tái)自身并不承擔(dān)業(yè)務(wù)邏輯,“調(diào)度中心”負(fù)責(zé)發(fā)起調(diào)度請(qǐng)求。將任務(wù)抽象成分散的JobHandler,交由“執(zhí)行器”統(tǒng)一管理,“執(zhí)行器”負(fù)貨接收調(diào)度請(qǐng)求并執(zhí)行對(duì)應(yīng)的JobHandler中業(yè)務(wù)邏輯。因此“調(diào)度”和“任務(wù)”兩部分可以相互解耦,提高系統(tǒng)整體稔定性和擴(kuò)展性。1.7 持久化服務(wù)HSAF框架使用了MyBatis提供持久化服務(wù)。MyBatis是支持定制化SQL、存儲(chǔ)過程以及高級(jí)映射的優(yōu)秀的持久層框架。MyBatis
48、避免了幾乎所有的JDBC代碼和手動(dòng)設(shè)置參數(shù)以及獲取結(jié)果集。MyBatis可以對(duì)配置和原生Map使用簡(jiǎn)單的XML或注解,將接II和Java的P0J0s(PlainOldJavaObjects,普通的Java對(duì)象)映射成數(shù)據(jù)庫中的記錄。1.8 數(shù)據(jù)庫連接池服務(wù)數(shù)據(jù)庫連接是一種關(guān)鍵的、有限的、昂貴的資源,對(duì)數(shù)據(jù)庫連接的管理能顯著影響到整個(gè)應(yīng)用系統(tǒng)的伸縮性和健壯性,影響到應(yīng)用系統(tǒng)的性能指標(biāo)。為了減少數(shù)據(jù)庫連接頻繁創(chuàng)建、釋放所產(chǎn)生的開銷,應(yīng)用系統(tǒng)開發(fā)中應(yīng)采用數(shù)據(jù)庫連接池技術(shù)。數(shù)據(jù)庫連接池負(fù)貢分配、管理和耗放數(shù)據(jù)庫連接,它允許應(yīng)用系統(tǒng)重復(fù)使用一個(gè)現(xiàn)有的數(shù)據(jù)庫連接,而不是再重新建立一個(gè):釋放空閑時(shí)間超過最大
49、空閑時(shí)間的數(shù)據(jù)庫連接來避免因?yàn)闆]有釋放數(shù)據(jù)庫連接而引起的數(shù)據(jù)庫連接遺漏。這項(xiàng)技術(shù)能明顯星高對(duì)數(shù)據(jù)庫操作的性能。數(shù)據(jù)庫連接池的基本思想就是為數(shù)據(jù)庫連接建立一個(gè)“池”o預(yù)先在池中放入一定數(shù)量:的連接,當(dāng)需要建立數(shù)據(jù)庫連接時(shí),只需從“池”中取出一個(gè),使用完畢之后再放回去??赏ㄟ^設(shè)定連接池最大連接數(shù)來防止系統(tǒng)過多地與數(shù)據(jù)庫連接。6 .9報(bào)表服務(wù)報(bào)表就是用表格、圖表等形式來動(dòng)態(tài)顯示數(shù)據(jù),可以用公式表示為:“報(bào)表:多樣的格式+動(dòng)態(tài)的數(shù)據(jù)”。報(bào)表可以幫助使用者訪問、格式化數(shù)據(jù),并把數(shù)據(jù)信息以可靠和安全的方式呈現(xiàn)給使用者。報(bào)表是管理的基本措施和途徑,處應(yīng)用系統(tǒng)的基本業(yè)務(wù)要求,也是實(shí)施BI戰(zhàn)略的基礎(chǔ)??蚣苤刑峁?/p>
50、了統(tǒng)一的報(bào)表服務(wù),主要功能是提供報(bào)表資源的管理,用戶身份與權(quán)限管理,數(shù)字簽章、服務(wù)轉(zhuǎn)發(fā)及報(bào)表展現(xiàn)。報(bào)表服務(wù)管理的報(bào)表資源主要包含數(shù)據(jù)源、報(bào)表模板、報(bào)表輸出結(jié)果等。報(bào)表服務(wù)是獨(dú)立運(yùn)行的單獨(dú)服務(wù),可進(jìn)行分布式部署,模板的存儲(chǔ)采用分布式對(duì)象存儲(chǔ)(OSS),全網(wǎng)任意節(jié)點(diǎn)均可訪問。報(bào)表服務(wù)對(duì)外采用脆B和RESTful方式進(jìn)行服務(wù),WEB用于管理人員對(duì)報(bào)表進(jìn)行資源及權(quán)限配置,RESTful用于業(yè)務(wù)系統(tǒng)而接報(bào)表服務(wù)。報(bào)表服務(wù)支持多種數(shù)據(jù)導(dǎo)出格式,如PDF、Excel、圖片等進(jìn)行存儲(chǔ),亦可通過RESTful方式調(diào)用報(bào)表將結(jié)果頁面,其嵌入到業(yè)務(wù)系統(tǒng)中。報(bào)表服務(wù)還提供了嚴(yán)謹(jǐn)?shù)姆?wù)轉(zhuǎn)發(fā)設(shè)置,能為每一張報(bào)表進(jìn)行報(bào)表工
51、具配置,當(dāng)業(yè)務(wù)系統(tǒng)發(fā)起服務(wù)請(qǐng)求時(shí),報(bào)表服務(wù)會(huì)根據(jù)配置進(jìn)行轉(zhuǎn)發(fā),未配置的請(qǐng)求將會(huì)被作為非法請(qǐng)求丟棄并記錄監(jiān)控日志。報(bào)表工具具有獨(dú)立模板設(shè)計(jì)器,可視化地開發(fā)報(bào)表更方便、快捷,它具有如下特點(diǎn):a)提供拖拽式、所見即所得的報(bào)表編輯器:b)提供多樣的向?qū)砗?jiǎn)化復(fù)雜的報(bào)表設(shè)計(jì)任務(wù):c)提供多樣化的排版和格式化工具;d)報(bào)表可轉(zhuǎn)換為PDF、HTML、EXCEL等格式:e)支持?jǐn)?shù)據(jù)源調(diào)試;f)支持無限次數(shù)的撤消和重做:s)內(nèi)置超過20種的圖表支持;h)集成超過15種語言:i)提供報(bào)表模板與報(bào)表庫樣式管理;j)提供源文件的備份;k)提供文檔結(jié)構(gòu)瀏覽器。7 適配框架設(shè)計(jì)7.1 適配抽象層設(shè)計(jì)7.1.1 分布式服務(wù)
52、框架分布式服務(wù)框架是分布式系統(tǒng)架構(gòu)的基礎(chǔ)。分布式服務(wù)關(guān)鍵不僅僅是分布式服務(wù)本身,而是一套治理框架,這種框架使得分布式服務(wù)可以獨(dú)立的部署、運(yùn)行、升級(jí),還能實(shí)現(xiàn)分布式服務(wù)之間在結(jié)構(gòu)上的“松耦合”,而在功能上表現(xiàn)為一個(gè)統(tǒng)一的整體,體現(xiàn)為統(tǒng)一風(fēng)格的界面,統(tǒng)一的權(quán)限管理,統(tǒng)一的安全策略,統(tǒng)一的上線過程,統(tǒng)一的日志和審計(jì)方法,統(tǒng)一的調(diào)度方式,統(tǒng)一的訪問入口等等。分布式服務(wù)框架具備如下能力:a)RPC遠(yuǎn)程過程調(diào)用:b)服務(wù)注冊(cè)與發(fā)現(xiàn);c)服務(wù)治理:d)負(fù)載均衡:e)消息總線,輕量級(jí)的MQ或HTTP;f)鞋路跟蹤;g)配置中心。HSAF采用配置文件的方法來切換不同的分布式服務(wù)框架。7.1.2 分布式緩存緩存的
53、主要作用是降低應(yīng)用和數(shù)據(jù)庫的負(fù)我,提高系統(tǒng)性能、客戶端訪問速度。在架構(gòu)和業(yè)務(wù)設(shè)計(jì)上,可以考慮將訪問量較大、不經(jīng)常修改的,比如字典表和系統(tǒng)參數(shù),或?qū)?shù)據(jù)庫性能影響較大的杳詢的結(jié)果進(jìn)行緩存,提高系統(tǒng)整體性能。HSAF框架使用了SpringCache框架作為緩存層的抽象框架。SpringCache不是一個(gè)具體的緩存實(shí)現(xiàn)方.案,而是一個(gè)對(duì)緩存使用的抽象。HSAF框架提供了基于Redis的接I1實(shí)現(xiàn),能夠兼容不同云平臺(tái)基于Redis或提供類Redis接口服務(wù)的緩存方案。分布式緩存服務(wù)抽象類接口如圖15所示,定義cn.hsa.hsaf.core,cache.HsafCacheManager緩存統(tǒng)一管理器。
54、圖15分布式緩存服務(wù)抽象類接口7.1.3 分布式消息隊(duì)列分布式消息隊(duì)列,是分布式系統(tǒng)中重要、常用的中間件,它使用事件驅(qū)動(dòng)架構(gòu),通過在低耦合的模塊之間傳輸事件消息,以保持模塊的松散耦介,并借助事件消息的通信完成模塊間合作。HSAF引入并使用消息隊(duì)列組件作為分布式服務(wù)架構(gòu)下各個(gè)應(yīng)用之間消息通訊的中間件。分布式消息隊(duì)列服務(wù)抽象類接I如圖16所示,類設(shè)計(jì):a) 定義cn.hsa.hsaf.core.mq.MQBusinessHandler消息監(jiān)聽業(yè)務(wù)處理接II類;b) 定義cn.hsa.hsaf.core.mq.MQProducer消息隊(duì)列生產(chǎn)者接II類:c) 定義cn.hsa.hsaf.core.m
55、q.MQConsumer消息隊(duì)列消費(fèi)者接II類:d) 定義cn.hsa.hsaf.core.mq.MQMessage消息實(shí)體類。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分布式消息隊(duì)列服務(wù)抽象類接口7.1.4 分布式數(shù)據(jù)庫服務(wù)在數(shù)據(jù)量逐漸增大的情況口傳統(tǒng)數(shù)據(jù)庫存在著先天性的弊端,分布式數(shù)據(jù)訪問代埋服XJ-B01-2019務(wù)主要能使得傳統(tǒng)數(shù)據(jù)庫易于擴(kuò)展,可切分,提
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年考大連銀行面試題及答案
- 鋼架廠房吊頂施工方案
- 燈罩的檢測(cè)標(biāo)準(zhǔn)
- 4個(gè)月嬰幼兒體重身高標(biāo)準(zhǔn)
- 基坑鋼管支撐施工方案
- 2025年硅湖職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫1套
- 2025年江西司法警官職業(yè)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫審定版
- 陜西省榆林市2025屆高三下學(xué)期第三次模擬考試生物試題(原卷版+解析版)
- 三農(nóng)村電商打造區(qū)域特色品牌方案
- 三農(nóng)村居民耕地質(zhì)量保護(hù)方案
- 2025年湖南國防工業(yè)職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)傾向性測(cè)試題庫及參考答案
- 2025年湖南水利水電職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫附答案
- 2025年河南建筑職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫審定版
- 2025年湖南食品藥品職業(yè)學(xué)院?jiǎn)握新殬I(yè)傾向性測(cè)試題庫參考答案
- 2025年湖南水利水電職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫1套
- 2025年家政服務(wù)策劃免責(zé)聲明協(xié)議
- 2025新人教版語文七年級(jí)下冊(cè)《第四單元》大單元整體教學(xué)設(shè)計(jì)2022課標(biāo)
- 2024年非高危行業(yè)生產(chǎn)經(jīng)營單位主要負(fù)責(zé)人及安全管理人員安全生產(chǎn)知識(shí)和管理能力試題庫附答案
- 2024人工智能大模型技術(shù)財(cái)務(wù)應(yīng)用藍(lán)皮書
- DB51T 2572-2019 干旱河谷造林技術(shù)規(guī)程
- 2025新外研社版英語七年級(jí)下單詞默寫表
評(píng)論
0/150
提交評(píng)論