在正文開始以前,咱們來看一個平常生活場景,咖啡自動售賣機: 編程
第一排,是四個選項:美式、拿鐵、摩卡、白咖啡;網絡
第二排,單位是ml,表明產出咖啡的量;架構
第三排,是否加糖;框架
第四排,是否加奶。運維
輸入以上這四個參數後,自動售賣的咖啡機便會按照要求提供所需的咖啡。固然售賣機仍是會根據操做者的人臉或掃碼肯定其身份信息,作出相應的扣款,或是先付款後操做等處理。這就是一臺咖啡機所提供的服務,機身上提供了操做的說明,根據提示輸入類型、口味等信息,製造出對應的咖啡。微服務
微服務與 API
咖啡機提供的是生活服務,而咱們一直以來的話題:「微服務」,則提供的是軟件服務。一個軟件服務的使用,須要輸入參數:如第一個參數表明了類型,第二個參數表明了返回的數量,第三個、第四個參數表明了是否須要加某些規則;同時也須要身份信息:如報頭加入消費者名稱,加入認證信息等;固然還須要有返回,也就是計算或者處理的結果返回。這就是軟件服務提供的能力,也是軟件服務的API。性能
在微服務的架構提出以前,行業內首先提出的是服務化,畢竟服務能力的封裝、自運行,可比本身編碼實現要快捷、低廉不少。在服務化的基礎上纔有了微服務,微服務就是其基於服務化將應用程序構造爲一組鬆散耦合的服務。測試
所以,微服務基於 API 做爲服務能力的提供,也是服務間消費的規則和方式。信息標識認證的方式、參數傳遞的類型,格式返回的方式,這都是API定義的。編碼
API
API 的定義是應用程序編程接口,而在服務化的場景中,API 是應用程序間的訪問接口,即服務提供的行爲合同。那麼在微服務的場景中,API就是微服務間獲取信息的契約。spa
微服務架構中服務間調用關係錯綜複雜,程序提供的服務能力能夠被其餘任意服務消費和使用,這也是建設微服務的一個優點。服務能力的複用,能夠在某個業務領域內被消費,也能夠被網絡區域外的服務所依賴,也能夠是總體企業對外的能力開放,其本質歸根結底都是 API 的調用。
固然,還有調用中的信息認證,調用容許/拒絕的控制,應對大流量時限流控制,熔斷控制,批處理方式等等,全都是 API 管理內容。有了這麼細則的控制,對於 API 的監控也尤其重要,由於不少控制的數據皆是從監控記錄而來。
所以,API 纔是微服務化建設中最爲核心的管理對象,並且從總體微服務化建設的角度出發,在開發態、運維態、運行態均須要關注對 API 的管理。
開發態:API 管理
以前提過微服務的建設,從橫向上看,跨越微服務的開發態、運維態、運行態,那麼在開發態,API 設計是先於服務開發的,所以 API 管理應該在開發態就已經開始記錄和調試。
API 包括請求方法(GET、POST等)、請求參數(請求頭、請求體)、響應內容等信息,對於 API 接口文檔的管理,應該是當作微服務間調用的契約,在服務調用中,指導消費服務的使用。
API 管理可能在不一樣的階段會有不一樣的運用,在開發階段能夠幫助開發人員快速的對 API 進行設計和調整,在測試階段方便測試人員查看 API 的用法,也更有利於知識傳遞和工做交接;在運行階段,API 的說明也會便於其餘應用或系統對該服務的調用。
運維態:API 變動
微服務場景下,敏捷是第一要務。所以,服務可能會常常升級、變動,也不免會有 API 的變更和更改。既然 API 是微服務間的契約,那麼 API 的變動也就如同契約的變動,將會對全部消費者產生影響。
所以 API 的變動須要慎重,變動以後也須要作詳細的變動說明以供消費者參閱,甚至須要有固定的流程審批。
固然這裏也給 API 管理提供了一個要求,就是要支持多版本的管理,以知足持續集成、持續發佈,以及變動的信息。
運行態:API 治理
運行態下,對於 API 的治理算是細粒度的微服務治理。畢竟微服務化的建設,是企業服務化中臺建設的第一步,可不僅是調調微服務框架那麼簡單。
將來在服務化中臺中,服務能力均以 API 的方式提供,全部的管理粒度都是 API 接口。所以,對於 API 的治理,纔是微服務治理的重點,如 API 粒度的訪問控制,API粒度的限流、降級、熔斷,API 級別的性能監控信息,API 的調用依賴關係。API 的鏈路節點信息等等。
固然除了服務間的 API 治理之外,伴隨微服務逐漸走進人們視線的 API 網關,更是對 API 的南北向調用的管理和控制。API 網關提供 API 的統一對外能力輸出,在真實環境中,也不僅是對外能力,也表如今跨網絡域、兼容異構框架等等方面,但都是針對 API 粒度的管控和觀測。
總結
微服務的建設其管理的核心對象是比服務更細粒度的 API,管理內容包括 API 接口信息的管理,變動的影響,運行的監控,以及流量控制等各個方面。
固然還未提到存量的業務系統,由於非微服務架構提供的接口也非標準協議,這類的系統也是以 API 接口形式提供,並在適當的位置作好協議、報文的轉換。存量老舊系統的兼容,將會在下一期文章中作詳細介紹和分享。