精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

微服務為什么要用到API網關?

OSC開源社區 ? 來源:OSC開源社區 ? 2023-04-14 09:17 ? 次閱讀

作者程小蘭,API7.ai 技術工程師,Apache APISIX Contributor。

什么是微服務

微服務架構(通常簡稱為微服務)是指開發應用所用的一種架構形式。通過微服務,可將大型應用分解成多個獨立的組件,其中每個組件都有各自的責任領域。

在處理一個用戶請求時,基于微服務的應用可能會調用許多內部微服務來共同生成其響應。微服務是互聯網業務發展的結果,互聯網業務的飛速發展導致系統的架構也在不斷地發生變化,總體來說,系統的架構大致經歷了:單體應用架構—> SOA 架構—>微服務架構的演變,具體發展歷程和各自的優缺點如下表所示。

架構
類型
簡介 優點 缺點





將所有的功能代碼打包成一個服務。 1. 架構簡單,項目開發和維護成本低。 所有模塊耦合在一起,比較有利于小型項目的開發和維護;但是,對于大型項目來說卻存在問題,比如:
1. 項目各模塊之間過于耦合,一個模塊的性能問題可能導致整個項目的不可用;
2. 項目的擴展性差。
SOA

中文意思為 “面向服務的架構”,通常包含多個服務,
一個服務通常以獨立的形式存在于操作系統進程中,服務之間通過相互依賴或者通過通信機制來完成通信的,
最終提供一系列的功能。
1. 系統集成:站在系統的角度,解決企業系統間的通信問題,把原先散亂、無規劃的系統間的網狀結構,梳理成規整、可治理的系統間星形結構;
2. 系統的服務化:站在功能的角度,把業務邏輯抽象成可復用、可組裝的服務,通過服務的編排實現業務的快速再
3. 業務的服務化:站在企業的角度,把企業職能抽象成可復用、可組裝的服務。
1. 服務的中心化,各服務之間存在依賴關系,如果某個服務出現故障可能會造成服務的雪崩;
2. 服務之間的依賴與調用關系復雜,測試部署的困難比較大。




微服務是在 SOA 上做的升華。微服務架構重點強調的一個是"業務需要徹底的組件化和服務化",
原有的單個業務系統會拆分為多個可以獨立開發、設計、
運行的小應用。各個小應用之間,相互去協作通信,來完成一個交互和集成,這就是微服務架構。
1. 去中心化;
2. 通過服務實現組件化;
3. 按業務能力來劃分服務和開發團隊;
4. 基礎設施自動化(Devops、自動化部署)。
1. 開發的成本比較高;
2. 會引發服務的容錯性問題;
3. 會引發數據的一致性問題;
4. 會涉及分布式事務。

因此,微服務是互聯網發展的必然結果,很多傳統公司的系統架構也在逐步微服務化。但是,隨著互聯網業務的發展,API 的數量也在劇增,使用網關對API統一管理也將面臨挑戰,選擇一個更強大的 API 網關,可以有效地增強系統的監控、容災、鑒權和限流等能力。

什么是 API 網關

API 網關為客戶與服務系統之間的交互提供了統一的接口,也是管理請求和響應的中心點,選擇一個適合的 API 網關,可以有效地簡化開發并提高系統的運維與管理效率。API 網關在微服務架構中是系統設計的一個解決方案,用來整合各個不同模塊的微服務,統一協調服務。

API 網關作為一個系統訪問的切面,對外提供統一的入口供客戶端訪問,隱藏系統架構實現的細節,讓微服務使用更為友好;并集成了一些通用特性(如鑒權、限流、熔斷),避免每個微服務單獨開發,提升效率,使系統更加標準化,比如身份驗證、監控、負載均衡、限流、降級與應用檢測等功能。

為什么微服務需要 API 網關

a07a631c-d9e7-11ed-bfe3-dac502259ad0.pngArchitecture Diagram

如上圖所示,API 網關作為客戶端和微服務的中間層,它可以將微服務以統一的地址對外提供服務,將外部訪問這個地址的流量,根據適當的規則路由到內部集群中正確的服務節點之上,如果沒有 API 網關,流量的出入口則不統一,客戶端就需要知道所有服務的訪問信息,微服務的意義將不復存在,所以,微服務網關在微服務系統架構中的存在是必要的。此外,API 網關在系統的可觀測性、身份鑒權認證、穩定性和服務發現等方面也會發揮重要作用。

微服務遇到的挑戰

微服務網關應該首先要具備 API 路由能力,微服務數量變多,API 數量急劇增加,網關還可以根據具體的場景作為流量過濾器來使用,以提供某些額外可選功能,因此對微服務 API Gateway 提出了更高要求,比如:

可觀測性:在以往的單體應用中,排查問題往往通過查看日志定位錯誤信息和異常堆棧;但是在微服務架構中服務繁多,出現問題時的問題定位變得非常困難;因此,如何監控微服務的運行狀況、當出現異常時能快速給出報警,這給開發人員帶來很大挑戰。

鑒權認證:而微服務架構下,一個應用會被拆分成若干個微應用,每個微應用都需要對訪問進行鑒權,每個微應用都需要明確當前訪問用戶以及其權限。尤其當訪問來源不只是瀏覽器,還包括其它服務的調用時,單體應用架構下的鑒權方式就不是特別合適了。在微服務架構下,要考慮外部應用接入的場景、用戶 - 服務的鑒權、服務 - 服務的鑒權等多種鑒權場景。

系統穩定性:若大量請求超過微服務的處理能力時,可能會將服務打垮,甚至產生雪崩效應、影響系統的整體穩定性。

服務發現:微服務的分散管理,讓微服務的負載均衡的實現也更具有挑戰性。

解決方案

API 網關作為客戶端和服務端的中間橋梁,為微服務系統提供統一的管理機制:

除了基礎的請求分發、API 管理和條件路由等功能,還包括身份驗證、監控報警、調用鏈追蹤、負載均衡、限流隔離和熔斷降級。身份認證:下圖表示的是微服務聯合 API 網關如何進行身份認證的,由圖可見所有請求都通過網關,從而有效地隱藏了微服務。

a08d7d08-d9e7-11ed-bfe3-dac502259ad0.pngArchitecture Diagram

監控報警/調用鏈追蹤:

API 作為客戶端和服務端的中間橋梁,是微服務監控的最好載體,API 網關監控功能的主要職責是及時發現網關以及后端服務器的連接異常,在 API 的監控平臺上面用戶可以隨時查看日志信息,監控信息,調用鏈等等,并且主機發生的任何異常都會自動報警到控制臺。有些網關甚至可以做到給客戶端和服務端雙向報警。

a0aaf18a-d9e7-11ed-bfe3-dac502259ad0.pngArchitecture Diagram

限流隔離/熔斷降級:

隨著互聯網業務規模的增加,系統的并發度增高,多個服務之間相互調用鏈路,一條核心鏈路往往可能調用十個服務。如果在鏈路中,某個服務的 rt(響應時間)急劇上升,上游服務不斷請求,造成惡性循環,上游等待結果線程數越多,使得更上游服務阻塞最終整條鏈路無法使用,從而導致服務雪崩,所以對入口流量進行整治管理是很有必要的,下圖表示微服務系統是如何結合 API 網關進行限流隔離和熔斷降級的。

a0caef76-d9e7-11ed-bfe3-dac502259ad0.pngArchitecture Diagram

主流網關選擇

在微服務領域,有許多開源網關實現,有 NGINX、Kong、Apache APISIX 和 Envoy 等,Java 技術棧的有 Netfilx Zuul、Spring Cloud Gateway、Soul 等。或許你會問“有了 NGINX 和 Kong,為什么還需要 Apache APISIX?” ,下面做個簡單對比。

網關 痛點 優勢
NGINX 1. 修改配置需要 Reload 才能生效,跟不上云原生的發展。 1. 老牌應用;
2. 穩定可靠,久經考驗;
3. 高性能。
Apache APISIX 1. 文檔不夠豐富和清晰,需要待改進。 1. Apache 基金會頂級項目;
2. 技術架構更貼合云原生;
3. 性能表現優秀;
4. 生態豐富;

5. 除了支持 Lua 開發插件外,還支持 Java、Go、Python、Node 等語言插件。
Kong 1. 默認使用 PostgreSQL 或 Cassandra 數據庫,使得整個架構非常臃腫,并且會帶來高可用的問題;
2. 路由使用的是遍歷查找,當網關內有超過上千個路由時,它的性能就會出現比較急劇的下降;
3. 一些重要功能是需要付費的。
1. 開源 API 網關的鼻祖,用戶數眾多;
2. 性能滿足大部分用戶的需求;
3. 生態豐富;
4. 支持 Lua 和 Go 開發插件。
Envoy 1. 使用 C++,二次開發難度大;
2. 除了 C++ 開發 filter 外,還支持 WASM 和 Lua。
1. CNCF 畢業項目 更適合服務網格場景多語言架構部署。
Spring Cloud Gateway 1. 雖然 Spring 社區成熟,但是 Gateway 資源缺乏。 1. 內置了非常多的開箱即用功能,并且都可以通過 SpringBoot 配置或者手工編碼鏈式調用來使用;
2. Spring 系列可擴展性強,易配置,可維護性好;
3. Spring 社區成熟;
4. 簡單易用;
5. 對于 Java 技術棧來說方便。

總結

隨著互聯網的發展,互聯網企業的業務也在不斷的飛速發展,進而導致系統的架構也在不斷的發生著變化,微服務架構已經在眾多公司得到廣泛應用。隨著微服務的數據越來越多,API 的數量也越來越多,對于大流量的治理,選擇一個優秀的 API 網關是至關重要的。

本文列舉了常見網關,并進行對比,列出各自的優缺點,如果你正在做 API 網關的技術選型,或者你的微服務系統出現了性能問題,再或者你想搭建一個高效穩定的微服務系統,希望本文可以帶給你一定的啟發。


審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 互聯網
    +關注

    關注

    54

    文章

    11105

    瀏覽量

    103009
  • 網關
    +關注

    關注

    9

    文章

    4304

    瀏覽量

    50943
  • API
    API
    +關注

    關注

    2

    文章

    1484

    瀏覽量

    61810
  • SOA
    SOA
    +關注

    關注

    1

    文章

    283

    瀏覽量

    27424
  • 微服務
    +關注

    關注

    0

    文章

    134

    瀏覽量

    7328

原文標題:微服務為什么要用到API網關?

文章出處:【微信號:OSC開源社區,微信公眾號:OSC開源社區】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    API信息全掌控,方便你的日志管理——阿里云推出API網關打通日志服務

    摘要: 近日,阿里云API網關對接了日志服務,可以輸出用戶在API網關產生的API調用日志,目前
    發表于 02-06 15:24

    微服務網關gateway的相關資料推薦

    目錄微服務網關 gateway 概述[路由器網關 Zuul 概述]嵌入式 Zuul 反向代理微服務網關 gateway 概述1、想象一下一個購物應用程序的產品詳情頁面展示了指定商品的信息:2、若是
    發表于 12-23 08:19

    微服務可靠性設計

    微服務化之后,系統分布式部署,傳統單個流程的本地API調用被拆分成多個微服務之間的跨網絡調用,由于引入了網絡通信、序列化和反序列化等操作,系統發生故障的概率提高了很多。微服務故障,有些
    的頭像 發表于 02-09 09:21 ?3894次閱讀
    <b class='flag-5'>微服務</b>可靠性設計

    微服務、SOA 和 API三大架構優勢對比

    在對比微服務架構和面向服務的架構(SOA)時,幾乎不可能在它們彼此的關系上達成一致意見。如果應用程序編程接口(API) 再加入混戰,就會讓理解它們的差異變得更加困難。一些人可能會說這些概念
    發表于 05-04 16:29 ?1.2w次閱讀
    <b class='flag-5'>微服務</b>、SOA 和 <b class='flag-5'>API</b>三大架構優勢對比

    微服務、SOA 和 API是敵是友?

    在對比微服務架構和面向服務的架構(SOA)時,幾乎不可能在它們彼此的關系上達成一致意見。如果應用程序編程接口(API) 再加入混戰,就會讓理解它們的差異變得更加困難。一些人可能會說這些概念
    的頭像 發表于 05-06 11:01 ?4703次閱讀
    <b class='flag-5'>微服務</b>、SOA 和 <b class='flag-5'>API</b>是敵是友?

    基于API 網關微服務治理方案

    API網關層實現這些安全機制,不但提高安全性,也簡化了應用服務的開發。使開發人員專注于業務應用、業務服務的研發,不再考慮基礎能力基礎組件,提升開發部署的效率,從而提升收益率。
    的頭像 發表于 02-01 01:05 ?5379次閱讀
    基于<b class='flag-5'>API</b> <b class='flag-5'>網關</b>的<b class='flag-5'>微服務</b>治理方案

    什么是微服務架構_微服務架構的優缺點及應用

    什么是微服務架構 簡單地說,微服務是系統架構上的一種設計風格, 它的主旨是將一個原本獨立的系統拆分成多個小型服務,這些小型服務都在各自獨立的進程中運行,
    的頭像 發表于 06-02 10:03 ?1.7w次閱讀
    什么是<b class='flag-5'>微服務</b>架構_<b class='flag-5'>微服務</b>架構的優缺點及應用

    實施微服務架構:用于構建下一代云應用程序

      外部接口是用戶/應用程序與微服務交互的入口。實現 API 網關,為來自客戶端的所有服務請求啟用單個入口點。API
    的頭像 發表于 12-08 16:51 ?709次閱讀

    關于API網關策略的知識分享

    近些年隨著云原生和微服務架構的日趨發展,API 網關以流量入口的角色在技術架構中扮演著越來越重要的作用。API 網關主要負責接收所有請求的流
    的頭像 發表于 02-11 10:45 ?1156次閱讀

    基于Traefik自研的微服務網關

    數據平面主要功能是接入用戶的HTTP請求和微服務被拆分后的聚合。使用微服務網關統一對外暴露后端服務API和契約,路由和過濾功能正是網關的核
    的頭像 發表于 04-16 11:08 ?2568次閱讀

    5種主流API網關技術選型

    微服務近幾年非常火,圍繞微服務的技術生態也比較多,比如微服務網關、Docker、Kubernetes等。
    的頭像 發表于 04-17 10:45 ?1317次閱讀

    為什么需要 API 網關

    API 網關API 全生命周期管理的關鍵基礎組件,負責生產環境中 API 的配置、發布、版本回滾、安全、負載均衡等。API
    的頭像 發表于 05-04 17:47 ?745次閱讀
    為什么需要 <b class='flag-5'>API</b> <b class='flag-5'>網關</b>?

    企業怎么選擇API網關

    、騰訊公司的QQ開發平臺、微信開放平臺。 Open API開放平臺必然涉及到客戶應用的接入、API權限的管理、調用次數管理等,必然會有一個統一的入口進行管理,這正是API網關可以發揮作
    的頭像 發表于 05-23 11:05 ?634次閱讀
    企業怎么選擇<b class='flag-5'>API</b><b class='flag-5'>網關</b>

    Spring Cloud :打造可擴展的微服務網關

    Spring Cloud Gateway是一個基于Spring Framework 5和Project Reactor的反應式編程模型的微服務網關。它提供了豐富的功能,包括動態路由、請求限流、集成安全性等,使其成為構建微服務架構的理想選擇。
    的頭像 發表于 10-22 10:03 ?498次閱讀
    Spring Cloud :打造可擴展的<b class='flag-5'>微服務網關</b>

    設計微服務架構的原則

    微服務是一種軟件架構策略,有利于改善整體性能和可擴展性。你可能會想,我的團隊需不需要采用微服務,設計微服務架構有哪些原則?本文會給你一些靈感。文章速覽:微服務設計的要素
    的頭像 發表于 11-26 08:05 ?559次閱讀
    設計<b class='flag-5'>微服務</b>架構的原則