將Azure API管理與微服務(wù)結(jié)合使用的好處

來源:Microsoft Azure
作者:Mike Budzynski
時(shí)間:2020-08-05
2285
在此文章中,我們將探討:如何設(shè)計(jì)簡化的在線商店系統(tǒng)以實(shí)現(xiàn)上述好處。為什么以及如何在基于微服務(wù)的體系結(jié)構(gòu)中管理面向公眾的API。如何開始使用Azure API管理和微服務(wù)。

IT行業(yè)正在經(jīng)歷從單一應(yīng)用程序到基于微服務(wù)的體系結(jié)構(gòu)的轉(zhuǎn)變。這種新方法的好處包括:

獨(dú)立開發(fā)和自由選擇技術(shù)–開發(fā)人員可以同時(shí)處理不同的微服務(wù),并為他們要解決的問題選擇最佳技術(shù)。

獨(dú)立的部署和發(fā)布周期–微服務(wù)可以按自己的時(shí)間表進(jìn)行單獨(dú)更新。

粒度擴(kuò)展–單個(gè)微服務(wù)可以獨(dú)立擴(kuò)展,從而降低了總體成本并提高了可靠性。

簡便性–較小的服務(wù)更易于理解,從而加快了產(chǎn)品的開發(fā),測試,調(diào)試和發(fā)布的速度。

故障隔離–微服務(wù)的故障不必轉(zhuǎn)化為其他服務(wù)的故障。

在此博客文章中,我們將探討:

如何設(shè)計(jì)簡化的在線商店系統(tǒng)以實(shí)現(xiàn)上述好處。

為什么以及如何在基于微服務(wù)的體系結(jié)構(gòu)中管理面向公眾的API。

如何開始使用Azure API管理和微服務(wù)。

示例:使用微服務(wù)實(shí)現(xiàn)的在線商店

讓我們考慮一個(gè)簡化的在線商店系統(tǒng)。網(wǎng)站的訪問者需要能夠查看產(chǎn)品的詳細(xì)信息,下訂單,查看下訂單。

每當(dāng)下訂單時(shí),系統(tǒng)都需要處理訂單明細(xì)并發(fā)出運(yùn)輸請(qǐng)求。根據(jù)用戶方案和業(yè)務(wù)需求,系統(tǒng)必須具有以下屬性:

細(xì)粒度縮放-查看產(chǎn)品詳細(xì)信息的頻率平均比下訂單至少高1000倍。

簡便性–明確定義了獨(dú)立的用戶操作,這種分離需要反映在系統(tǒng)的體系結(jié)構(gòu)中。

故障隔離–運(yùn)輸功能的故障不會(huì)影響查看產(chǎn)品或下訂單。

他們暗示將通過三種微服務(wù)來實(shí)施該系統(tǒng):

1、使用公共GET和POST API的訂單-負(fù)責(zé)查看和下訂單。

2、具有公共GET API的產(chǎn)品-負(fù)責(zé)查看產(chǎn)品的詳細(xì)信息。

3、由事件在內(nèi)部觸發(fā)的裝運(yùn)–負(fù)責(zé)處理和裝運(yùn)訂單。

為此,Azure將使用易于實(shí)現(xiàn)和管理的Azure功能。它們的事件驅(qū)動(dòng)性質(zhì)意味著它們將在交互上執(zhí)行并為其付費(fèi)。當(dāng)商店流量不可預(yù)測時(shí),此功能將非常有用。在沒有流量的情況下,基礎(chǔ)架構(gòu)會(huì)縮減為零。在市場營銷活動(dòng)如病毒般傳播或在購物假期(例如美國的黑色星期五)期間負(fù)載增加的情況下,它還可以提供大量流量。

為了保持縮放粒度,確保簡單性并保持發(fā)布周期獨(dú)立,每個(gè)微服務(wù)都應(yīng)在單獨(dú)的Function App中實(shí)現(xiàn)。

ia_2000000003.png

在單個(gè)功能應(yīng)用程序中實(shí)現(xiàn)微服務(wù)的流程圖

訂單和產(chǎn)品微服務(wù)是帶有HTTP觸發(fā)器的外部函數(shù)。運(yùn)輸微服務(wù)由訂單微服務(wù)間接觸發(fā),該訂單微服務(wù)在Azure Service Bus中創(chuàng)建一條消息。例如,當(dāng)您訂購商品時(shí),網(wǎng)站會(huì)發(fā)出POST Order API調(diào)用來執(zhí)行訂購功能。接下來,您的訂單在Azure Service Bus實(shí)例中作為消息排隊(duì),然后觸發(fā)運(yùn)送功能進(jìn)行處理。

在基于微服務(wù)的架構(gòu)中管理外部API通信的主要理由

所提出的體系結(jié)構(gòu)具有一個(gè)基本問題,即處理來自外部的通信的方式。

客戶端應(yīng)用程序耦合到內(nèi)部微服務(wù)。當(dāng)您希望拆分,合并或重寫微服務(wù)時(shí),這尤其麻煩。

API不在同一域或IP地址下出現(xiàn)。

通用API規(guī)則無法輕松地跨微服務(wù)應(yīng)用。

管理API更改和引入新版本很困難。

盡管Azure Functions代理提供了統(tǒng)一的API平面,但在其他情況下它們還是不足的。應(yīng)該通過在Azure函數(shù)之前使用Azure API管理來解決這些限制,現(xiàn)在可以在無服務(wù)器的消費(fèi)層中使用。

ia_2000000004.png

流程圖顯示Azure API Managemnet到Azure Functions的前沿

API管理從其實(shí)現(xiàn)中抽象出API,并將它們托管在相同的域或靜態(tài)IP地址下。它使您可以將客戶端應(yīng)用程序與內(nèi)部微服務(wù)分離。Azure API管理中的所有API共享一個(gè)主機(jī)名和一個(gè)靜態(tài)IP地址。您也可以分配自定義域。

使用APIManagement通過在Azure API Management中聚集API來確保API的安全,而不是直接公開您的微服務(wù)。這可以幫助您減少潛在攻擊的表面積。您可以使用訂閱密鑰,JWT令牌,客戶端證書或自定義標(biāo)頭來驗(yàn)證API請(qǐng)求。流量只能過濾到受信任的IP地址。

使用APIManagement,還可以在API上執(zhí)行規(guī)則。您可以按API或按API操作全局定義傳入請(qǐng)求和傳出響應(yīng)的API策略。幾乎有50種策略,例如身份驗(yàn)證方法,限制,緩存和轉(zhuǎn)換。通過訪問我們的文檔“API管理政策”了解更多信息。

API管理簡化了不斷變化的API。從設(shè)計(jì)階段到引入新版本或修訂版,您都可以在API的整個(gè)生命周期中進(jìn)行管理。與修訂版本相反,版本應(yīng)包含重大更改,例如刪除API操作或更改身份驗(yàn)證。

可以在使用API管理時(shí)監(jiān)視API,在Azure API管理實(shí)例中查看使用情況指標(biāo),在Azure Application Insights中記錄API調(diào)用以創(chuàng)建圖表,監(jiān)視實(shí)時(shí)流量并簡化調(diào)試。

API管理使向外部開發(fā)人員發(fā)布API變得容易。Azure API管理提供了一個(gè)開發(fā)人員門戶,該門戶是一個(gè)自動(dòng)生成的,完全可自定義的網(wǎng)站,訪問者可以在其中發(fā)現(xiàn)API,學(xué)習(xí)如何使用它們,以交互方式試用它們,下載其OpenAPI規(guī)范并最終注冊(cè)以獲取API密鑰。

如何通過微服務(wù)使用API管理

Azure API管理最近已在新的定價(jià)層中可用。通過按執(zhí)行計(jì)費(fèi),消費(fèi)層特別適合基于微服務(wù)的體系結(jié)構(gòu)和事件驅(qū)動(dòng)的系統(tǒng)。例如,對(duì)于我們假設(shè)的在線商店而言,這將是一個(gè)不錯(cuò)的選擇。

對(duì)于更高級(jí)的系統(tǒng),API管理的其他層提供了更豐富的功能集。

立即登錄,閱讀全文
原文鏈接:點(diǎn)擊前往 >
文章來源:Microsoft Azure
版權(quán)說明:本文內(nèi)容來自于Microsoft Azure,本站不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。文章內(nèi)容系作者個(gè)人觀點(diǎn),不代表快出海對(duì)觀點(diǎn)贊同或支持。如有侵權(quán),請(qǐng)聯(lián)系管理員(zzx@kchuhai.com)刪除!
優(yōu)質(zhì)服務(wù)商推薦
更多
掃碼登錄
打開掃一掃, 關(guān)注公眾號(hào)后即可登錄/注冊(cè)
加載中
二維碼已失效 請(qǐng)重試
刷新
賬號(hào)登錄/注冊(cè)
個(gè)人VIP
小程序
快出海小程序
公眾號(hào)
快出海公眾號(hào)
商務(wù)合作
商務(wù)合作
投稿采訪
投稿采訪
出海管家
出海管家