您好,登錄后才能下訂單哦!
轉(zhuǎn)載本文需注明出處:微信公眾號EAWorld,違者必究。
引言:
根據(jù)保險行業(yè)發(fā)展趨勢,目前保險交易已經(jīng)呈現(xiàn)高頻化、碎片化、場景化等特點,對系統(tǒng)的處理能力、容量、業(yè)務(wù)連續(xù)性、需求相應(yīng)速度、運維響應(yīng)速度提出了更高的要求。業(yè)務(wù)模式創(chuàng)新重塑導(dǎo)致系統(tǒng)更新頻繁、應(yīng)用復(fù)雜度急劇升高,傳統(tǒng)架構(gòu)不堪重負(fù),敏捷開發(fā)和快速交付無從談起。
本次實施目標(biāo)為建設(shè)滿足XXX保險公司業(yè)務(wù)需求的微服務(wù)管理平臺和配套工具規(guī)范,包括:微服務(wù)開發(fā)框架,微服務(wù)登記平臺,微服務(wù)管理平臺等,能夠支撐微服務(wù)的開發(fā)、運行生命周期管理,進(jìn)而更好的支持業(yè)務(wù)與技術(shù)的發(fā)展與創(chuàng)新。
目錄:
一、項目背景與目標(biāo)
二、微服務(wù)平臺架構(gòu)設(shè)計
三、微服務(wù)調(diào)用關(guān)系
四、微服務(wù)訪問鑒權(quán)設(shè)計
根據(jù)保險行業(yè)發(fā)展趨勢,目前保險交易已經(jīng)呈現(xiàn)高頻化、碎片化、場景化等特點,對系統(tǒng)的處理能力、容量、業(yè)務(wù)連續(xù)性、需求相應(yīng)速度、運維響應(yīng)速度提出了更高的要求。業(yè)務(wù)模式創(chuàng)新重塑導(dǎo)致系統(tǒng)更新頻繁、應(yīng)用復(fù)雜度急劇升高,傳統(tǒng)架構(gòu)不堪重負(fù),敏捷開發(fā)和快速交付無從談起。
客戶面臨的問題主要是:
基于單體架構(gòu)或SOA架構(gòu)的應(yīng)用無法適應(yīng)業(yè)務(wù)模式創(chuàng)新的需要
缺乏微服務(wù)應(yīng)用的統(tǒng)一技術(shù)標(biāo)準(zhǔn)與體系架構(gòu)
微服務(wù)架構(gòu)試點項目反應(yīng)出對于服務(wù)的管控、治理亟待提升
客戶微服務(wù)平臺定制的目標(biāo),是建設(shè)滿足新形勢下保險業(yè)務(wù)需求的微服務(wù)管理平臺和配套工具規(guī)范,能夠支撐微服務(wù)的開發(fā)、運行生命周期管理,這主要包括:
微服務(wù)開發(fā)框架:一個供開發(fā)微服務(wù)的服務(wù)框架基座;
微服務(wù)登記平臺:進(jìn)行微服務(wù)設(shè)計、開發(fā)、變更、版本、訂閱、下架等全生命周期管理;
微服務(wù)管理平臺:進(jìn)行微服務(wù)運行時管理,包括服務(wù)注冊、服務(wù)發(fā)現(xiàn)、配置中心、網(wǎng)關(guān)、負(fù)載均衡、認(rèn)證鑒權(quán)、熔斷降級、監(jiān)控等功能。
基于微服務(wù)架構(gòu)的企業(yè)分布式應(yīng)用平臺,從集成開發(fā)工具、服務(wù)運行環(huán)境、應(yīng)用管理監(jiān)控、外部渠道接入等維度來劃分,其功能架構(gòu)如圖所示,包括SDK&規(guī)范、注冊中心、配置中心、監(jiān)控中心、認(rèn)證中心、API網(wǎng)關(guān)、服務(wù)運行環(huán)境、管理平臺、登記平臺等部分。
微服務(wù)平臺邏輯架構(gòu)
微服務(wù)平臺概念模型
結(jié)合客戶的實際情況,微服務(wù)平臺的概念模型定義如下:
注冊中心:支持一個環(huán)境內(nèi)所有域下所有微服務(wù)的注冊
配置中心:支持支持一個環(huán)境內(nèi)所有域下所有微服務(wù)的配置
APM:支持一個環(huán)境內(nèi)所有域下所有微服務(wù)的APM監(jiān)控
斷路器監(jiān)控中心:支持一個環(huán)境內(nèi)所有域下所有微服務(wù)的斷路器監(jiān)控,支持按每個版本查看
日志中心:支持一個環(huán)境內(nèi)所有域下所有微服務(wù)的日志收集、查看
域:對應(yīng)完整的業(yè)務(wù)域,比如車險域
網(wǎng)關(guān):網(wǎng)關(guān)分為外部網(wǎng)關(guān)和內(nèi)部網(wǎng)關(guān)。外部網(wǎng)關(guān)部署在DMZ區(qū),用于把API對外網(wǎng)暴露;內(nèi)部網(wǎng)關(guān)用于跨系統(tǒng)間的API調(diào)用
系統(tǒng):對應(yīng)實際的業(yè)務(wù)系統(tǒng),每個域有多個業(yè)務(wù)系統(tǒng)
應(yīng)用:對應(yīng)業(yè)務(wù)系統(tǒng)中的業(yè)務(wù)模塊,每個業(yè)務(wù)系統(tǒng)有多個應(yīng)用
微服務(wù):每個應(yīng)用有多個微服務(wù)
微服務(wù)版本:每個微服務(wù)可以有多個版本,其中可以有多個上線運行版本
API:每個微服務(wù)版本提供的API
實例:每個微服務(wù)版本的運行進(jìn)程
微服務(wù)之間的調(diào)用關(guān)系分為系統(tǒng)內(nèi)部和跨系統(tǒng)兩種場景:
1、系統(tǒng)內(nèi)部的微服務(wù)之間調(diào)用
采用直連方式,微服務(wù)多實例部署時,調(diào)用者采用客戶端負(fù)載均衡器(如Netflix Ribbion)。
2、跨系統(tǒng)的微服務(wù)之間調(diào)用
跨系統(tǒng)的微服務(wù)調(diào)用通過API網(wǎng)關(guān)進(jìn)行中轉(zhuǎn),服務(wù)提供者需要在API網(wǎng)關(guān)上配置路由,然后在API Store中發(fā)布API;
服務(wù)消費者通過API Store訂閱需要的API并獲得訂閱碼,然后攜帶訂閱碼調(diào)用所訂閱的API;
API Store支持訂閱審核流程,服務(wù)提供者可以對消費者的訂閱請求進(jìn)行審核。
注:API Store是為客戶定制的管理服務(wù)發(fā)布與訂閱的模塊,這里不做展開描述。
在實際業(yè)務(wù)場景中,微服務(wù)提供者運行期存在多版本共存的情況,所以API網(wǎng)關(guān)和微服務(wù)SDK支持微服務(wù)多版本路由策略:
客戶端請求頭指定調(diào)用目標(biāo)服務(wù)版本
支持灰度版本策略:可以設(shè)置針對特定的一組調(diào)用者允許或不允許訪問灰度版本(即黑白名單),即灰度版本導(dǎo)入部分客戶端流量
支持灰度版本在線熱切換成正式版本
服務(wù)的調(diào)用過程包括服務(wù)發(fā)布與服務(wù)消費的過程。
在不同的服務(wù)調(diào)用場景中,API網(wǎng)關(guān)和服務(wù)提供者需要對消費者的身份進(jìn)行認(rèn)證、對服務(wù)調(diào)用進(jìn)行鑒權(quán)。
API網(wǎng)關(guān)負(fù)責(zé)校驗客戶端訂閱碼的合法性(調(diào)用API鑒權(quán)服務(wù)進(jìn)行鑒權(quán)),支持黑白名單配置;微服務(wù)提供者(SDK)負(fù)責(zé)校驗客戶端(系統(tǒng)內(nèi)部服務(wù)或者API網(wǎng)關(guān))身份的合法性。
微服務(wù)訪問鑒權(quán)設(shè)計
1)服務(wù)消費者通過API網(wǎng)關(guān)調(diào)用服務(wù)提供者的API時,需要在請求頭中攜帶訂閱碼
2)API網(wǎng)關(guān)根據(jù)請求頭中的訂閱碼,調(diào)用鑒權(quán)服務(wù)校驗請求的合法性,鑒權(quán)失敗則拒絕非法請求
3)API網(wǎng)關(guān)鑒權(quán)成功后,刪除請求頭中的訂閱碼,避免泄露服務(wù)消費者的安全信息給服務(wù)提供者,并在請求頭中添加API網(wǎng)關(guān)標(biāo)識,然后根據(jù)當(dāng)前路由規(guī)則轉(zhuǎn)發(fā)到后端某個API服務(wù)提供者實例上
4)服務(wù)提供者接收到來自API網(wǎng)關(guān)或者系統(tǒng)內(nèi)部其他微服務(wù)的調(diào)用請求,獲取請求頭中的客戶端標(biāo)識,根據(jù)這個標(biāo)識從服務(wù)注冊中心獲取客戶端實例列表,比較此次請求的來源是否在實例列表中,驗證此次請求是否來自合法的消費者。
下面是Java客戶端調(diào)用示例,訂閱碼等調(diào)用所需的參數(shù)可以在application.yml (application.properties)或配置中心上配置,微服務(wù)SDK開發(fā)工具包中已經(jīng)封裝了請求頭關(guān)于鑒權(quán)的處理。
Java客戶端調(diào)用示例
以上便是通過某保險公司微服務(wù)平臺實施案例,分享了微服務(wù)架構(gòu)下的服務(wù)調(diào)用與鑒權(quán)的全部內(nèi)容。
精選提問:
問1:“服務(wù)的調(diào)用過程包括服務(wù)發(fā)布與服務(wù)消費的過程”,這里講了“服務(wù)消費的鑒權(quán)”,那“服務(wù)發(fā)布”有需要鑒權(quán)的么?
答:API發(fā)布的時候可以設(shè)置是否需要審批,服務(wù)消費者訂閱API的時候,API Store會根據(jù)是否需要審批的設(shè)置,判斷是否交由服務(wù)提供者進(jìn)行訂閱審批,審批通過后才算是訂閱成功,才能進(jìn)行調(diào)用。服務(wù)發(fā)布本身現(xiàn)在是通過API Store的用戶權(quán)限控制,由提供者的管理員進(jìn)行發(fā)布。
問2:系統(tǒng)A不允許訪問系統(tǒng)B的服務(wù)1,但可以訪問系統(tǒng)B的服務(wù)2,而服務(wù)2走系統(tǒng)內(nèi)部直接訪問服務(wù)1,那么:在系統(tǒng)A被授權(quán)或訪問服務(wù)2的時候,API Store或者API網(wǎng)關(guān)會提示風(fēng)險么?
答:不會提示,系統(tǒng)B的服務(wù)2調(diào)用自己系統(tǒng)內(nèi)部的服務(wù)1是不會被限制的,網(wǎng)關(guān)鑒權(quán)只關(guān)注系統(tǒng)A調(diào)用系統(tǒng)B的服務(wù)是否合法。
關(guān)于作者:李忠文,普元開發(fā)工程師,普元DevOps核心成員之一。曾參與興業(yè)銀行、上海大眾、北京海關(guān)、交行卡中心、中國銀聯(lián)等項目
關(guān)于EAWorld:微服務(wù),DevOps,數(shù)據(jù)治理,移動架構(gòu)原創(chuàng)技術(shù)分享。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。