溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

微服務(wù)架構(gòu)下的服務(wù)調(diào)用與鑒權(quán)——某保險公司微服務(wù)平臺實施案例分享

發(fā)布時間:2020-08-10 05:06:02 來源:ITPUB博客 閱讀:227 作者:EAWorld 欄目:軟件技術(shù)

微服務(wù)架構(gòu)下的服務(wù)調(diào)用與鑒權(quán)——某保險公司微服務(wù)平臺實施案例分享

轉(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è)計

一、項目背景與目標(biāo)

根據(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ā)、運行生命周期管理,這主要包括:

  1. 微服務(wù)開發(fā)框架:一個供開發(fā)微服務(wù)的服務(wù)框架基座;

  2. 微服務(wù)登記平臺:進(jìn)行微服務(wù)設(shè)計、開發(fā)、變更、版本、訂閱、下架等全生命周期管理;

  3. 微服務(wù)管理平臺:進(jìn)行微服務(wù)運行時管理,包括服務(wù)注冊、服務(wù)發(fā)現(xiàn)、配置中心、網(wǎng)關(guān)、負(fù)載均衡、認(rèn)證鑒權(quán)、熔斷降級、監(jiān)控等功能。

二、微服務(wù)平臺架構(gòu)設(shè)計

基于微服務(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ù)調(diào)用與鑒權(quán)——某保險公司微服務(wù)平臺實施案例分享

微服務(wù)平臺邏輯架構(gòu)


微服務(wù)架構(gòu)下的服務(wù)調(diào)用與鑒權(quán)——某保險公司微服務(wù)平臺實施案例分享

微服務(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)系

微服務(wù)之間的調(diào)用關(guān)系分為系統(tǒng)內(nèi)部和跨系統(tǒng)兩種場景:

1、系統(tǒng)內(nèi)部的微服務(wù)之間調(diào)用

微服務(wù)架構(gòu)下的服務(wù)調(diào)用與鑒權(quán)——某保險公司微服務(wù)平臺實施案例分享

采用直連方式,微服務(wù)多實例部署時,調(diào)用者采用客戶端負(fù)載均衡器(如Netflix Ribbion)。

2、跨系統(tǒng)的微服務(wù)之間調(diào)用

微服務(wù)架構(gòu)下的服務(wù)調(diào)用與鑒權(quán)——某保險公司微服務(wù)平臺實施案例分享

跨系統(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ù)多版本路由策略:

  1. 客戶端請求頭指定調(diào)用目標(biāo)服務(wù)版本

  2. 支持灰度版本策略:可以設(shè)置針對特定的一組調(diào)用者允許或不允許訪問灰度版本(即黑白名單),即灰度版本導(dǎo)入部分客戶端流量

  3. 支持灰度版本在線熱切換成正式版本

四、微服務(wù)訪問鑒權(quán)設(shè)計

服務(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ù)架構(gòu)下的服務(wù)調(diào)用與鑒權(quán)——某保險公司微服務(wù)平臺實施案例分享

微服務(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)的處理。

微服務(wù)架構(gòu)下的服務(wù)調(diào)用與鑒權(quán)——某保險公司微服務(wù)平臺實施案例分享

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ù)分享。

向AI問一下細(xì)節(jié)

免責(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)容。

AI