摘要:文章首先以微服務(wù)架構(gòu)概述及原理為出發(fā)點(diǎn),分析了微服務(wù)架構(gòu)的關(guān)鍵技術(shù)、微服務(wù)的拆分與重構(gòu)策略,提出微服務(wù)架構(gòu)應(yīng)當(dāng)考慮的問(wèn)題,最后主要介紹了微服務(wù)架構(gòu)在保險(xiǎn)行業(yè)核心業(yè)務(wù)系統(tǒng)中的應(yīng)用方法,以供保險(xiǎn)行業(yè)應(yīng)用微服務(wù)架構(gòu)的參考和借鑒。
關(guān)鍵詞:保險(xiǎn)行業(yè);核心業(yè)務(wù)系統(tǒng);微服務(wù)架構(gòu);應(yīng)用方法
一、引言
隨著互聯(lián)網(wǎng)技術(shù)和5G技術(shù)的不斷發(fā)展,保險(xiǎn)客戶對(duì)于互聯(lián)網(wǎng)的訪問(wèn)質(zhì)量和效率提出了更高的要求,基于傳統(tǒng)單體架構(gòu)設(shè)計(jì)理念的應(yīng)用模式已無(wú)法適應(yīng)當(dāng)前保險(xiǎn)“互聯(lián)網(wǎng)+”的高速發(fā)展需要。在保險(xiǎn)產(chǎn)品快速更新迭代、保險(xiǎn)客戶差異化和個(gè)性化需求、金融科技全面發(fā)展的背景下,保險(xiǎn)行業(yè)針對(duì)核心業(yè)務(wù)系統(tǒng)提出了高并發(fā)、大流量、高業(yè)務(wù)連續(xù)性及快速迭代交付的要求,傳統(tǒng)單體式架構(gòu)向著分布式的微服務(wù)架構(gòu)已成為解決核心業(yè)務(wù)系統(tǒng)問(wèn)題的首選途徑。
二、微服務(wù)架構(gòu)概述及原理
(一)微服務(wù)架構(gòu)概述
微服務(wù)架構(gòu)是指將復(fù)雜的單體應(yīng)用拆分成為多個(gè)子服務(wù)系統(tǒng)的技術(shù)架構(gòu),使用輕量的通信機(jī)制,實(shí)現(xiàn)不同子服務(wù)系統(tǒng)之間的相互通信、協(xié)調(diào)和交互。各子系統(tǒng)的應(yīng)用、數(shù)據(jù)庫(kù)均獨(dú)立部署,根據(jù)業(yè)務(wù)及服務(wù)需要而進(jìn)行通信及調(diào)用,各個(gè)子系統(tǒng)既保持相對(duì)獨(dú)立又相互配合。在通常情況下,每一個(gè)子系統(tǒng)僅代表一個(gè)獨(dú)立微小的業(yè)務(wù)模塊,通過(guò)借助全自動(dòng)部署流水線機(jī)制實(shí)現(xiàn)快速獨(dú)立部署。
(二)微服務(wù)架構(gòu)的工作原理
微服務(wù)架構(gòu)是將整個(gè)系統(tǒng)劃分成多個(gè)子服務(wù)系統(tǒng),使用分布服務(wù)的治理方式將微服務(wù)子系統(tǒng)注冊(cè)于服務(wù)注冊(cè)中心,通過(guò)負(fù)載均衡將各個(gè)子服務(wù)系統(tǒng)部署在生產(chǎn)環(huán)境中,通過(guò)路由器完成轉(zhuǎn)發(fā)請(qǐng)求,客戶端通過(guò)API網(wǎng)關(guān)進(jìn)行后臺(tái)訪問(wèn)。各個(gè)子服務(wù)系統(tǒng)之間可以根據(jù)業(yè)務(wù)需要進(jìn)行相互訪問(wèn)和數(shù)據(jù)共享,并使用服務(wù)熔斷技術(shù),處理子服務(wù)系統(tǒng)的降級(jí)及熔斷問(wèn)題,對(duì)異常服務(wù)進(jìn)行及時(shí)的降級(jí)及熔斷處理,避免整個(gè)核心業(yè)務(wù)系統(tǒng)服務(wù)鏈路出現(xiàn)服務(wù)雪崩。
三、微服務(wù)架構(gòu)的關(guān)鍵技術(shù)
(一)微服務(wù)注冊(cè)與發(fā)現(xiàn)
微服務(wù)注冊(cè)指的是將服務(wù)程序中的服務(wù)信息注冊(cè)至服務(wù)注冊(cè)中心,服務(wù)信息主要包括為服務(wù)程序所在的服務(wù)器地址、端口、協(xié)議以及服務(wù)狀態(tài)等。不同的實(shí)例都需要通過(guò)注冊(cè)中心獲得服務(wù),當(dāng)系統(tǒng)發(fā)現(xiàn)在注冊(cè)中心可以得到其他服務(wù)實(shí)例并請(qǐng)求提供對(duì)應(yīng)的服務(wù)時(shí),對(duì)于保險(xiǎn)核心業(yè)務(wù)系統(tǒng)而言,可以將承保、理賠和保單查詢等的微服務(wù)程序注冊(cè)到服務(wù)中心,實(shí)現(xiàn)保險(xiǎn)業(yè)務(wù)微服務(wù)功能的靈活調(diào)用,并使微服務(wù)處于高可用狀態(tài)。
服務(wù)注冊(cè)中心具有心跳檢測(cè)、健康檢查、異常處置等功能,如果未能檢測(cè)到節(jié)點(diǎn)在多個(gè)心跳周期內(nèi)的心跳,服務(wù)注冊(cè)中心便會(huì)主動(dòng)將其從服務(wù)節(jié)點(diǎn)中清除,以保證整個(gè)微服務(wù)系統(tǒng)調(diào)用鏈路的可靠性。微服務(wù)架構(gòu)的注冊(cè)與發(fā)現(xiàn)對(duì)于保險(xiǎn)行業(yè)來(lái)說(shuō)是一次技術(shù)上的創(chuàng)新,可以實(shí)現(xiàn)靈活的包括服務(wù)注冊(cè)、服務(wù)發(fā)現(xiàn)及服務(wù)剔除等服務(wù)治理功能。
(二)微服務(wù)網(wǎng)關(guān)
微服務(wù)網(wǎng)關(guān)是一種特殊的服務(wù),用于客戶端進(jìn)入微服務(wù)程序的統(tǒng)一入口管理,負(fù)責(zé)路由請(qǐng)求服務(wù)、組合API服務(wù)、轉(zhuǎn)換對(duì)接協(xié)議,一般位于外部Nginx集群和內(nèi)部微服務(wù)集群之間,并不直接對(duì)客戶端提供服務(wù)。在微服務(wù)架構(gòu)模式中,微服務(wù)網(wǎng)關(guān)通過(guò)服務(wù)方式,將自己注冊(cè)到服務(wù)注冊(cè)中心,并通過(guò)負(fù)載均衡將服務(wù)請(qǐng)求轉(zhuǎn)發(fā)至各服務(wù)節(jié)點(diǎn)。
在保險(xiǎn)行業(yè)核心業(yè)務(wù)系統(tǒng)中,運(yùn)用微服務(wù)網(wǎng)關(guān)統(tǒng)一管理,對(duì)保險(xiǎn)客戶及管理人員的身份認(rèn)證和安全性可以通過(guò)網(wǎng)關(guān)識(shí)別和控制;將不同服務(wù)請(qǐng)求動(dòng)態(tài)路由至微服務(wù)集群,保證了各個(gè)服務(wù)器之間的調(diào)用性能,并對(duì)請(qǐng)求進(jìn)行攔截和必要的業(yè)務(wù)邏輯處理;構(gòu)建動(dòng)態(tài)響應(yīng)處理機(jī)制,在邊緣位置處實(shí)現(xiàn)響應(yīng),降低和減少其轉(zhuǎn)發(fā)至內(nèi)部集群,進(jìn)行接口聚合,將不同的請(qǐng)求結(jié)果進(jìn)行合并返回,大幅降低了服務(wù)調(diào)用的復(fù)雜性;可以有效解決微服務(wù)應(yīng)用過(guò)程中的權(quán)限、路由、API組合、請(qǐng)求過(guò)濾等問(wèn)題。
(三)服務(wù)通信機(jī)制
在微服務(wù)架構(gòu)設(shè)計(jì)模式中,完整的應(yīng)用系統(tǒng)由一組服務(wù)構(gòu)成,為完成業(yè)務(wù)請(qǐng)求的完整流程處理,就需要這些服務(wù)之間進(jìn)行必要的請(qǐng)求協(xié)助和數(shù)據(jù)交互才能實(shí)現(xiàn)。而這些服務(wù)實(shí)例大都獨(dú)立部署在相互獨(dú)立的服務(wù)器中,需要進(jìn)行程序進(jìn)程之間的通信才能完成交互。
根據(jù)交互方式的不同,微服務(wù)中存在同步與異步兩種通信方式,其中同步通信方式使用請(qǐng)求與響應(yīng)的方式實(shí)現(xiàn)一對(duì)一交互,異步通信方式使用異步請(qǐng)求與異步相應(yīng)或單向通知的方式實(shí)現(xiàn)一對(duì)一交互、使用發(fā)布與訂閱或發(fā)布與異步響應(yīng)的方式實(shí)現(xiàn)一對(duì)多交互。同步通信的交互方式通常使用代理接口用于對(duì)通信協(xié)議進(jìn)行封裝,常用的有REST或gRPC。異步通信的交互方式多使用消息代理,較為流行的消息代理有Apache ActiveMQ、Apache Kafka及RabbitMQ等開(kāi)源軟件。
(四)微服務(wù)運(yùn)維
傳統(tǒng)的單體架構(gòu)屬于單塊應(yīng)用結(jié)構(gòu),而微服務(wù)架構(gòu)是一種多服務(wù)和多應(yīng)用的結(jié)構(gòu)。對(duì)比單體架構(gòu)模式,微服務(wù)架構(gòu)由于其運(yùn)行節(jié)點(diǎn)多、部署方式多樣化,問(wèn)題點(diǎn)往往會(huì)出現(xiàn)在不同的地方,加之服務(wù)產(chǎn)生的日志較多,因此需要在大量的日志中找到問(wèn)題的所在就會(huì)變得異常困難,需要借助完善的日志管理和服務(wù)運(yùn)行狀況監(jiān)控,從硬件層面、系統(tǒng)層面以及服務(wù)訪問(wèn)層面實(shí)現(xiàn)切入式的全鏈路管理。在保險(xiǎn)行業(yè)核心業(yè)務(wù)系統(tǒng)中應(yīng)用微服務(wù)架構(gòu),可以利用聚合監(jiān)控組件保證監(jiān)控的正常運(yùn)行,對(duì)微服務(wù)架構(gòu)技術(shù)平臺(tái)實(shí)現(xiàn)全方位、全鏈路的監(jiān)控,通過(guò)設(shè)置合理的熔斷和降級(jí)調(diào)控開(kāi)關(guān),實(shí)現(xiàn)必要的服務(wù)降級(jí)控制和服務(wù)限流控制,自動(dòng)化地調(diào)整具體的應(yīng)用運(yùn)行狀態(tài)。
四、微服務(wù)的拆分與重構(gòu)策略
(一)微服務(wù)拆分原則
微服務(wù)架構(gòu)的核心理念是對(duì)應(yīng)用系統(tǒng)拆分為高內(nèi)聚、低耦合的一組服務(wù),進(jìn)行獨(dú)立部署,實(shí)現(xiàn)獨(dú)立運(yùn)行,并通過(guò)服務(wù)間通信進(jìn)行交互。為實(shí)現(xiàn)微服務(wù)架構(gòu)設(shè)計(jì)的最佳實(shí)踐,保險(xiǎn)行業(yè)在進(jìn)行微服務(wù)拆分時(shí),可以從營(yíng)銷管理、承保服務(wù)、理賠管理、客戶服務(wù)、再保管理及風(fēng)控管理等業(yè)務(wù)能力維度入手,分析保險(xiǎn)公司運(yùn)營(yíng)管理流程、抽象出保險(xiǎn)業(yè)務(wù)能力、根據(jù)業(yè)務(wù)能力映射并定義出服務(wù);也可以從保險(xiǎn)業(yè)務(wù)領(lǐng)域的客戶投保、保單批改、報(bào)案、查勘、定損及兩核等子域入手,分析保險(xiǎn)公司運(yùn)營(yíng)管理各領(lǐng)域、抽象出保險(xiǎn)業(yè)務(wù)子域定義出服務(wù)。在定義和實(shí)現(xiàn)服務(wù)的過(guò)程中,一般以服務(wù)所承擔(dān)的業(yè)務(wù)職能盡量單一并能在一個(gè)服務(wù)中完整實(shí)現(xiàn)為原則,以達(dá)到良好的可維護(hù)、高容錯(cuò)及易部署要求。
(二)微服務(wù)重構(gòu)策略
因保險(xiǎn)行業(yè)信息化發(fā)展的歷史原因,保險(xiǎn)行業(yè)核心業(yè)務(wù)系統(tǒng)大多采用傳統(tǒng)的單體架構(gòu),存在產(chǎn)品交付慢、軟件擴(kuò)展性差及版本交付質(zhì)量低等問(wèn)題,技術(shù)債務(wù)較大,設(shè)計(jì)全新的基于微服務(wù)架構(gòu)的核心業(yè)務(wù)系統(tǒng)快速替代現(xiàn)有系統(tǒng)的成本較高,可以采用逐步替換的策略進(jìn)行微服務(wù)重構(gòu),將新需求所延伸出來(lái)的業(yè)務(wù)能力按照微服務(wù)模式進(jìn)行設(shè)計(jì),以微服務(wù)開(kāi)發(fā)新功能,并與原單體架構(gòu)應(yīng)用進(jìn)行集成,以實(shí)現(xiàn)業(yè)務(wù)需求的快速交付;劃分原單體架構(gòu)應(yīng)用的前后端邊界,進(jìn)行必要的拆分并隔離,逐步縮小其應(yīng)用范圍,并實(shí)現(xiàn)前后端的獨(dú)立開(kāi)發(fā)、部署和維護(hù)管理;主動(dòng)對(duì)原單體架構(gòu)應(yīng)用的業(yè)務(wù)能力進(jìn)行抽象和提取,按照微服務(wù)架構(gòu)模式進(jìn)行重新定義和實(shí)現(xiàn),隨著服務(wù)的不斷被提取,微服務(wù)的業(yè)務(wù)功能不斷擴(kuò)展,原單體架構(gòu)將不斷縮小,直至下線。
五、應(yīng)用微服務(wù)架構(gòu)時(shí)需要面臨的問(wèn)題
(一)運(yùn)行的可靠性
微服務(wù)架構(gòu)采用靈活、復(fù)雜的通信機(jī)制,如果網(wǎng)絡(luò)出現(xiàn)問(wèn)題或者是某一個(gè)服務(wù)節(jié)點(diǎn)出現(xiàn)故障,就會(huì)導(dǎo)致服務(wù)調(diào)用失敗,當(dāng)需要服務(wù)的對(duì)象和數(shù)量越來(lái)越多時(shí),故障點(diǎn)也會(huì)在這樣的背景之下快速增加,為了保證系統(tǒng)的穩(wěn)定、安全和可靠運(yùn)行,需要一個(gè)健全與完善的保障機(jī)制為支撐。
(二)運(yùn)維的復(fù)雜性
微服務(wù)架構(gòu)的技術(shù)棧較為豐富、多采用分布式部署、服務(wù)節(jié)點(diǎn)多、服務(wù)之間調(diào)用和交互關(guān)系復(fù)雜,為實(shí)現(xiàn)快速交付的目的,應(yīng)用自動(dòng)化的持續(xù)交付/持續(xù)部署,使得整體部署和運(yùn)行環(huán)境十分復(fù)雜,對(duì)運(yùn)維的要求較高,需要建設(shè)全域環(huán)境的自動(dòng)化管理體系,實(shí)現(xiàn)對(duì)微服務(wù)的實(shí)時(shí)監(jiān)控、服務(wù)異常的自動(dòng)處置、服務(wù)資源的彈性擴(kuò)展,以提高微服務(wù)系統(tǒng)的高可用性、業(yè)務(wù)連續(xù)性和安全性。
(三)分布式事務(wù)的一致性
隨著微服務(wù)架構(gòu)的流行與普及,過(guò)去需要在單體應(yīng)用中執(zhí)行的多個(gè)邏輯操作現(xiàn)已被拆分成了多個(gè)服務(wù)之間的遠(yuǎn)程調(diào)用,各子服務(wù)一般擁有獨(dú)立數(shù)據(jù)庫(kù),這將帶來(lái)分布式事務(wù)的一致性的問(wèn)題。對(duì)習(xí)慣于傳統(tǒng)單體架構(gòu)ACID事務(wù)的開(kāi)發(fā)團(tuán)隊(duì)而言,將會(huì)面臨很大的障礙。
六、微服務(wù)架構(gòu)在保險(xiǎn)核心業(yè)務(wù)業(yè)務(wù)系統(tǒng)中的應(yīng)用
保險(xiǎn)行業(yè)屬于金融嚴(yán)監(jiān)管行業(yè),信息化建設(shè)起步較早、力度大,保險(xiǎn)公司大多基于傳統(tǒng)單體機(jī)構(gòu)構(gòu)建了支撐業(yè)務(wù)作業(yè)管理的核心業(yè)務(wù)系統(tǒng)。但隨著保險(xiǎn)行業(yè)“互聯(lián)網(wǎng)+”的高速發(fā)展,對(duì)核心業(yè)務(wù)系統(tǒng)提出了高并發(fā)、大流量、高業(yè)務(wù)連續(xù)性及快速迭代交付的要求?,F(xiàn)有核心業(yè)務(wù)系統(tǒng)的諸多問(wèn)題逐步暴露,比如新產(chǎn)品開(kāi)發(fā)上線慢、互聯(lián)網(wǎng)保險(xiǎn)支撐能力弱、保險(xiǎn)客戶體驗(yàn)度低;而微服務(wù)架構(gòu)天然具有業(yè)務(wù)整合能力強(qiáng)、產(chǎn)品交付速度快和用戶體驗(yàn)度高的架構(gòu)能力,具有高并發(fā)、高可用和彈性擴(kuò)展等特點(diǎn),可以有效解決保險(xiǎn)核心業(yè)務(wù)系統(tǒng)所面臨突出問(wèn)題。
(一)微服務(wù)框架的技術(shù)選型
技術(shù)選型從當(dāng)前核心業(yè)務(wù)系統(tǒng)既有業(yè)務(wù)流程管理模式和技術(shù)棧入手,充分考慮核心業(yè)務(wù)的復(fù)雜程度、核心開(kāi)發(fā)團(tuán)隊(duì)能力、微服務(wù)技術(shù)積累以及技術(shù)棧轉(zhuǎn)換和遷移過(guò)程中的兼容性。目前微服務(wù)主流技術(shù)框架有第一代的Spring Cloud及Dubbo、第二代的有Istio,框架情況對(duì)比。微服務(wù)架構(gòu)的選擇必要要與保險(xiǎn)公司的業(yè)務(wù)、技術(shù)及團(tuán)隊(duì)情況相匹配,找準(zhǔn)合適切入點(diǎn),選擇合適的開(kāi)發(fā)框架;因筆者所在公司以Spring/Spring Boot框架為主,選擇基于Spring Cloud的微服務(wù)框架進(jìn)行系統(tǒng)重構(gòu)較為適宜。
(二)核心業(yè)務(wù)系統(tǒng)的重構(gòu)與實(shí)踐
圍繞Spring Cloud微服務(wù)架構(gòu),對(duì)核心業(yè)務(wù)系統(tǒng)按照業(yè)務(wù)服務(wù)職責(zé)、業(yè)務(wù)活動(dòng)域綜合分析,進(jìn)行適應(yīng)保險(xiǎn)行業(yè)運(yùn)營(yíng)管理的核心業(yè)務(wù)系統(tǒng)微服務(wù)拆分,規(guī)劃出產(chǎn)品服務(wù)、定價(jià)服務(wù)、營(yíng)銷服務(wù)、費(fèi)控服務(wù)、承保服務(wù)、批改/保全服務(wù)、保險(xiǎn)理賠、收付費(fèi)、客戶管理及智能風(fēng)控等子系統(tǒng),使其對(duì)保險(xiǎn)業(yè)務(wù)的支撐更加便捷、可靠和彈性。應(yīng)用架構(gòu)如圖2所示。
采用基于Spring Cloud微服務(wù)架構(gòu)作為保險(xiǎn)核心業(yè)務(wù)系統(tǒng)的基礎(chǔ)技術(shù)平臺(tái),落地實(shí)施保險(xiǎn)核心業(yè)務(wù)系統(tǒng)的應(yīng)用總體架構(gòu),將服務(wù)治理、配置管理、日志管理、CI/CD、全鏈路監(jiān)控等開(kāi)源組件整合起來(lái),將敏捷開(kāi)發(fā)與持續(xù)交付融合起來(lái),全面嵌入自動(dòng)化運(yùn)維當(dāng)中。
采用新業(yè)務(wù)功能以服務(wù)方式實(shí)現(xiàn)、變更運(yùn)行環(huán)境部署方式及存量業(yè)務(wù)功能轉(zhuǎn)換為服務(wù)方式的多維度、綜合的重構(gòu)策略,按照統(tǒng)一規(guī)劃的核心業(yè)務(wù)系統(tǒng)應(yīng)用架構(gòu)和技術(shù)架構(gòu),在限制原核心業(yè)務(wù)系統(tǒng)單機(jī)架構(gòu)持續(xù)擴(kuò)展的基礎(chǔ)上,逐步以微服務(wù)模式進(jìn)行持續(xù)的迭代更新,結(jié)合敏捷開(kāi)發(fā)和DevOps實(shí)踐,以實(shí)現(xiàn)核心業(yè)務(wù)需求的快速交付和循環(huán)迭代改進(jìn),最終實(shí)現(xiàn)核心業(yè)務(wù)系統(tǒng)微服務(wù)架構(gòu)整體改造,推動(dòng)其業(yè)務(wù)平臺(tái)和技術(shù)架構(gòu)的持續(xù)更新升級(jí)。
七、結(jié)束語(yǔ)
綜上所述,在保險(xiǎn)行業(yè)核心業(yè)務(wù)系統(tǒng)中的應(yīng)用微服務(wù)架構(gòu),對(duì)已有系統(tǒng)進(jìn)行重構(gòu)、整合和升級(jí),可以有效提高保險(xiǎn)產(chǎn)品和業(yè)務(wù)功能的迭代升級(jí)速度,適應(yīng)高并發(fā)、大流量及高業(yè)務(wù)連續(xù)性的要求,但也面臨著系統(tǒng)安全性、穩(wěn)定性及數(shù)據(jù)一致性等方面的高要求?;诋?dāng)前保險(xiǎn)科技快速發(fā)展的利好背景下,各項(xiàng)新技術(shù)不斷出現(xiàn)并快速應(yīng)用于保險(xiǎn)科技當(dāng)中,如何讓微服務(wù)架構(gòu)更好地應(yīng)用于核心業(yè)務(wù)系統(tǒng)的迭代建設(shè)中,是一個(gè)需要持續(xù)研究和探討的問(wèn)題。
作者單位:侯守立? ? 浙商財(cái)產(chǎn)保險(xiǎn)股份有限公司
參? 考? 文? 獻(xiàn)
[1]王方旭.基于Spring Cloud實(shí)現(xiàn)業(yè)務(wù)系統(tǒng)微服務(wù)化的設(shè)計(jì)與實(shí)現(xiàn)[J].電子技術(shù)與軟件工程,2018(08):60-61.
[2]辛園園,鈕俊,謝志軍,張開(kāi)樂(lè),毛昕怡.微服務(wù)體系結(jié)構(gòu)實(shí)現(xiàn)框架綜述[J].計(jì)算機(jī)工程與應(yīng)用,2018,54(19):10-17.
[3]克里斯·理查森(Chris Richardson).微服務(wù)架構(gòu)設(shè)計(jì)模式[M].喻勇譯.北京:機(jī)械工業(yè)出版社,2019.
[4]王麗沙. 基于微服務(wù)架構(gòu)的保險(xiǎn)核心系統(tǒng)改造[D].上海交通大學(xué),2020.