建立 改進和控制微服務API的版本和契約

2022-08-14 01:30:16 字數 794 閱讀 7151

微服務的api是服務端和客戶端之間的契約。我們只能在不破壞api契約的前提下獨立地改進微服務,所以契約很重要。如果改變了契約,就會影響到客戶端應用或api 閘道器。

api的定義依賴於所用協議。例如使用(諸如amqp這類協議)訊息時,api由訊息型別組成。如果使用http和rest風格的服務,api則由url和請求以及json格式的響應組成。

然而,即便初始版本的契約已經考慮周全了,隨著時間發展,服務的api也可能需要改變。如果發生了變化,尤其是被多個客戶端應用呼叫的公共api,通常無法強制所有客戶端公升級到新的api契約。通常這需要增量部署服務的新版本,同時也要讓老版本和新版本服務契約同時執行。因此,服務的版本策略很重要。

如果api的改動較小,例如新增了屬性或引數,使用舊版api的客戶端應該能切換過來,和新版服務協同工作。我們可以為必需的屬性提供預設值,客戶端將會忽略任何額外的屬性。

但有時我們需要對服務api進行不相容的大版本更新。因為不能強制客戶端應用或服務立刻公升級到新版,服務端必須支援老版本繼續執行一段時間。如果使用基於http的機制(如rest),一種方式是把api的版本號嵌入到url或http頭部。然後可以決定是在乙個服務裡同時實現兩個版本的api,或是部署不同的服務來各自處理乙個版本的api。此時一種較好的方法是採用中介者模式(如mediatr庫)將不同版本的實現用不同的處理器來處理。

最後,如果使用rest架構,hypermedia是用來進行服務版本化和改進的最佳選擇。

其他資源

scott hanselman. 輕鬆實現asp.net core restful web api版本管理

restful web api版本管理

API和微服務閘道器工具的價值

api幫助管理程式。它們允許軟體應用程式和數字平台相互互動,從而協調具有自己體系結構的應用程式之間的請求交換。如果管理得當,api可以讓開發人員獲得整潔 簡化的體驗。面臨的挑戰是確保您在目前的it操作中正確的管理api。否則,將面臨引入 break change,使api暴露於安全漏洞以及其他可能破...

對微服務API服務閘道器的理解

目錄 微服務專字段址 目錄1.簡介 2.什麼是api閘道器 3.為什麼需要api閘道器 4.api閘道器在微服務架構體系中處於什麼位置 4.1 呼叫者眼中的api閘道器 4.2 所處的位置 5.閘道器技術實現有哪些 6.zuul閘道器工作原理是什麼樣的 6.1 整體處理流程圖 6.2 請求生命週期 ...

微服務架構中API閘道器的角色

編者的話 本文主要講述了mashape的首席技術執行官palladino對api閘道器的詳細介紹,以及api閘道器在微服務中所起的作用,同時介紹了mashape的一款開源api閘道器kong。本文講的是微服務架構中api閘道器的角色api閘道器提供商 mashape 的首席技術執行官 marco p...