微服務與 API 有何不同?
API 和微服務對于任何現代應用程序的開發都至關重要。雖然它們的性質不同,但有時由于很相近,兩者之間可能會混淆。
什么是微服務
微服務是一種由各個獨立服務組成的架構風格。現代應用程序依靠微服務架構來加快部署速度。微服務流行的主要原因是易于逐步開發應用程序的各個功能。較大的組織利用微服務在不同的團隊中工作,而他們之間沒有任何復雜的通信。Amazon Web Services 將微服務描述為:
微服務將一個更大的團隊細分為獨立的小型運營團隊,這些團隊完全擁有他們的服務。團隊協作工作并相互授權以縮短周期時間。
微服務的特點
每個服務都有自己獨立的代碼庫、數據庫層和 CI/CD 工具包。
保存數據是微服務的職責
每個服務都可以獨立部署和測試,而不依賴于任何其他服務。
服務之間的內部通信通過定義明確的 API 或任何輕量級通信協議進行。
每個微服務決定最適合其用例的技術堆棧、庫和框架。
如果出現網絡或系統故障,服務應實現重試功能。
什么是 API?
應用程序編程接口或 API 是允許開發人員與應用程序交互的入口。交互允許開發人員完成兩件事:訪問應用程序的數據或使用應用程序的功能。使用社交媒體帳戶在網站上進行身份驗證、從單獨的應用程序訪問谷歌地圖、觸發物聯網設備等都依賴于 API。
API 通常是為第三方用戶創建的。它們通常是公開的。隨著微服務的日益普及,越來越多的私有 API 應運而生。組織利用 API 作為單個微服務相互通信的輕量級解決方案。
用技術術語來說,API 通過 HTTP 請求發送數據。對此,API 以 JSON 的形式返回文本響應,開發人員可以根據他們的可行性使用這些響應。存在多種類型的 API,例如 REST、SOAP、GraphQL、gRPC 等。
微服務和 API 的區別
在進入更多細節之前,讓我們快速回顧一下:
API 是在微服務之間進行通信的東西。軟件 API 定義什么是可接受的請求以及如何響應請求。
微服務是一種將應用程序的功能構建成離散的、模塊化的、自包含的程序的架構方法。它允許開發人員通過分解功能輕松地創建和維護應用程序。
微服務和 API 經常耦合在一起,盡管它們是兩個不同的實體。微服務中的服務利用私有 API 相互通信。微服務的一個組件使用私有 API 來訪問同一微服務的另一個組件。這種思想類似于使用公共 API 來連接應用程序。
重要的是要記住,沒有兩個微服務是相同的,它們都以不同的方式使用 API。有些人會將許多 API 分配給單個服務,而另一些人會使用單個 API 來訪問多個服務。另一方面,API 超越了微服務。它們可以在沒有微服務實現的情況下在內部使用。