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

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

3天內不再提示

企業怎么選擇API網關

dyquk4xk2p3d ? 來源:良許Linux ? 2023-05-23 11:05 ? 次閱讀

一、API網關的用處

API網關我的分析中會用到以下三種場景。

1、Open API

企業需要將自身數據、能力等作為開發平臺向外開放,通常會以rest的方式向外提供。最好的例子就是淘寶開放平臺、騰訊公司的QQ開發平臺、微信開放平臺。

Open API開放平臺必然涉及到客戶應用的接入、API權限的管理、調用次數管理等,必然會有一個統一的入口進行管理,這正是API網關可以發揮作用的時候。

2、微服務網關

微服務的概念最早在2012年提出,在Martin Fowler的大力推廣下,微服務在2014年后得到了大力發展。

在微服務架構中,有一個組件可以說是必不可少的,那就是微服務網關,微服務網關處理了負載均衡,緩存,路由,訪問控制,服務代理,監控,日志等。

API 網關在微服務架構中正是以微服務網關的身份存在。

3、API服務管理平臺

上述的微服務架構對企業來說有可能實施上是困難的,企業有很多遺留系統,要全部抽取為微服務改動太大,對企業來說成本太高。

但是由于不同系統間存在大量的API服務互相調用,因此需要對系統間服務調用進行管理,清晰地看到各系統調用關系,對系統間調用進行監控等。

API網關可以解決這些問題,我們可以認為如果沒有大規模的實施微服務架構,那么對企業來說微服務網關就是企業的API服務管理平臺。

基于 Spring Boot + MyBatis Plus + Vue & Element 實現的后臺管理系統 + 用戶小程序,支持 RBAC 動態權限、多租戶、數據權限、工作流、三方登錄、支付、短信、商城等功能

項目地址:https://github.com/YunaiV/ruoyi-vue-pro

視頻教程:https://doc.iocoder.cn/video/

二、API網關在企業架構中的地位

一個企業隨著信息系統復雜度的提高,必然出現外部合作伙伴應用、企業自身的公網應用、企業內網應用等。

在架構上應該將這三種應用區別開,三種應用的安排級別、訪問方式也不一樣。

因此在我的設計中將這三種應用分別用不同的網關進行API管理,分別是:API網關(OpenAPI合伙伙伴應用)、API網關(內部應用)、API網關(內部公網應用)。

如下圖所示:

7ded4912-f8ab-11ed-90ce-dac502259ad0.jpg

基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 實現的后臺管理系統 + 用戶小程序,支持 RBAC 動態權限、多租戶、數據權限、工作流、三方登錄、支付、短信、商城等功能

項目地址:https://github.com/YunaiV/yudao-cloud

視頻教程:https://doc.iocoder.cn/video/

三、企業中如何應用API網關

1、 對于OpenAPI使用的API網關來說,一般合作伙伴要以應用的形式接入到OpenAPI平臺,合作伙伴需要到 OpenAPI平臺申請應用。

因此在OpenAPI網關之外,需要有一個面向合作伙伴的使用的平臺用于合作伙伴,這就要求OpenAPI網關需要提供API給這個用戶平臺進行訪問。

如下架構:

7e15c6d0-f8ab-11ed-90ce-dac502259ad0.jpg

當然如果是在簡單的場景下,可能并不需要提供一個面向合作伙伴的門戶,只需要由公司的運營人員直接添加合作伙伴應用id/密鑰等,這種情況下也就不需要合作伙伴門戶子系統。

2、 對于內網的API網關,在起到的作用上來說可以認為是微服務網關,也可以認為是內網的API服務治理平臺。

當企業將所有的應用使用微服務的架構管理起來,那么API網關就起到了微服務網關的作用。

而當企業只是將系統與系統之間的調用使用rest api的方式進行訪問時使用API網關對調用進行管理,那么API網關起到的就是API服務治理的作用。

架構參考如下:

7e316430-f8ab-11ed-90ce-dac502259ad0.jpg

3、 對于公司內部公網應用(如APP、公司的網站),如果管理上比較細致,在架構上可能由獨立的API網關來處理這部分內部公網應用

如果想比較簡單的處理,也可以是使用面向合作伙伴的API網關。

如果使用獨立的API網關,有以下的好處:

面向合作伙伴和面向公司主體業務的優先級不一樣,不同的API網關可以做到業務影響的隔離。

內部API使用的管理流程和面向合作伙伴的管理流程可能不一樣。

內部的API在功能擴展等方面的需求一般會大于OpenAPI對于功能的要求。

基于以上的分析,如果公司有能力,那么還是建議分開使用合作伙伴OPEN API網關和內部公網應用網關。

四、API網關有哪些競爭方案

1、 對于Open API平臺的API網關,我分析只能選擇API網關作為解決方案.

業界沒有發現比較好的可以用來作為Open API平臺的入口的其他方案。

2、 對于作為微服務網關的API網關,業界的選擇可以選擇的解決方案比較多,也取決于微服務器的實現方案,有一些微服務架構的實現方案是不需要微服務網關的。

(1)Service Mesh

這是新興的基于無API網關的架構,通過在客戶端上的代理完成屏蔽網絡層的訪問,這樣達到對應用層最小的改動

當前Service Mesh的產品還正在開發中,并沒有非常成熟可直接應用的產品。發展最迅速的產品是Istio。建議大家密切關注相關產品的研發、業務使用進展。

7e4d0488-f8ab-11ed-90ce-dac502259ad0.jpg

(2)基于duboo架構

在這個架構中通常是不需要網關的,是由客戶端直接訪問服務提供方,由注冊中心向客戶端返回服務方的地址。

7e7bfdce-f8ab-11ed-90ce-dac502259ad0.jpg

五、API網關解決方案

私有云開源解決方案如下:

Kong kong是基于Nginx+Lua進行二次開發的方案:

https://konghq.com/

Netflix Zuul,zuul是spring cloud的一個推薦組件:

https://github.com/Netflix/zuul

orange,這個開源程序是國人開發的:

http://orange.sumory.com/

公有云解決方案:

Amazon API Gateway:

https://aws.amazon.com/cn/api-gateway/

阿里云API網關:

https://www.aliyun.com/product/apigateway/

騰訊云API網關:

https://cloud.tencent.com/product/apigateway

自開發解決方案:

基于Nginx+Lua+ OpenResty的方案,可以看到Kong,orange都是基于這個方案

基于Netty、非阻塞IO模型。通過網上搜索可以看到國內的宜人貸等一些公司是基于這種方案,是一種成熟的方案。

基于Node.js的方案。這種方案是應用了Node.js天生的非阻塞的特性。

基于java Servlet的方案。zuul基于的就是這種方案,這種方案的效率不高,這也是zuul總是被詬病的原因。

六、企業怎么選擇API網關

如果要選擇一款已有的API網關,需要從以下幾個方面去考慮。

1、性能與可用性

如果一旦采用了API網關,那么API網關就會作為企業應用核心,因此性能和可用性是必須要求的。

從性能上來說,需要讓網關增加的時間消耗越短越好,個人覺得需要10ms以下。

系統需要采用非阻塞的IO,如epoll,NIO等,網關和各種依賴的交互也需要是非阻塞的,這樣才能保證整體系統的高可用性,如:Node.js的響應式編程和基于java體現的RxJava和Future。

網關必須支持集群部署,任務一臺服務器的crash都應該不影響整體系統的可用性。

多套網關應該支持同一管理平臺和同一監控中心。如:一個企業的OpenAPI網關和內部應用的多個系統群的不同的微服務網關可以在同一監控中心進行監控。

2、可擴展性、可維護性

一款產品總有不能滿足生產需求的地方,因此需求思考產品在如何進行二次開發和維護,是否方便公司團隊接手維護產品。

3、需求匹配度

需要評估各API網關在需求上是否能滿足。

比如:如果是OpenAPI平臺需要使用API網關,那么需要看API網關在合作伙伴應用接入、合作伙伴門戶集成、訪問次數限額等OpenAPI核心需求上去思考產品是否能滿足要求。

如果是微服務網關,那么要從微服務的運維、監控、管理等方面去思考產品是否足夠強大。

4、是否開源?公司是否有自開發的能力?

現有的開源產品如kong,zuul,orange都有基礎的API網關的核心功能,這些開源產品大多離很好的使用有一定的距離

比如:沒有提供管理功能的UI界面、監控功能弱小,不支持OpenAPI平臺,沒有公司運營與運維的功能等。

當然開源產品能獲取源代碼,如果公司有比較強的研發能力,能hold住這些開源產品,經過二次開發kong、zuul應該還是適應一些公司,不過需求注意以下一些點:

kong是基于ngnix+lua的,從公司的角度比較難于找到能去維護這種架構產品的人。需求評估當前公司是否有這個能力去維護這個產品。

zuul因為架構的原因在高并發的情況下性能不高,同時需要去基于研究整合開源的適配zuul的監控和管理系統。

orange由于沒有被大量使用,同時是國內個人在開源,在可持續性和社區資源上不夠豐富,出了問題后可能不容易找到人問。

另外kong提供企業版本的API網關,當然也是基于ngnix+lua的,企業版本可以購買他們的技術支持、培訓等服務、以及擁有界面的管理、監控等功能。

5、公有云還是私有云

現在的亞馬遜、阿里、騰訊云都在提供基礎公有云的API網關,當然這些網關的基礎功能肯定是沒有問題,但是二次開發,擴展功能、監控功能可能就不能滿足部分用戶的定制需求了。

另外很多企業因為自身信息安全的原因,不能使用外網公有網的API網關服務,這樣就只有選擇私有云的方案了。

在需求上如果基于公有云的API網關只能做到由內部人員為外網人員申請應用,無法做到定制的合作伙伴門戶,這也不適合于部分企業的需求。

如果作為微服務網關,大多數情況下是希望網關服務器和服務提供方服務器是要在內網的,在這里情況下也只有私有云的API網關才能滿足需求。

綜合上面的分析,基礎公有云的API網關只有滿足一部分簡單客戶的需求,對于很多企業來說私有云的API網關才是正確的選擇。

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

    關注

    9

    文章

    3343

    瀏覽量

    50189
  • API
    API
    +關注

    關注

    2

    文章

    1416

    瀏覽量

    61132
  • 開源
    +關注

    關注

    3

    文章

    3026

    瀏覽量

    41780

原文標題:為什么大中型企業需要API網關?

文章出處:【微信號:良許Linux,微信公眾號:良許Linux】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

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

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

    10分鐘上線 - API網關 + 函數計算實現圖片處理服務

    字符串返回結合API 網關,開發者可以方便地將自己的函數以 HTTP 的方式提供給別人使用。關于 API 網關和 FC 的交互協議細節,可參考這篇文章。下圖是圖片拼接和
    發表于 03-13 16:00

    架起線上線下存儲橋梁,云存儲網關開放性能型文件網關及塊網關公測

    摘要: 云存儲網關支持行業標準的文件和塊存儲協議,可以通過在本地緩存經常訪問的數據來提供低延遲高性能, 讓企業或個人安全地將數據存儲在阿里云OSS中,最新發布的“性能型文件網關”和“塊網關
    發表于 06-13 16:33

    如何選擇一個API?

    如何選擇一個API?
    發表于 02-09 07:33

    什么是API網關為什么需要API網關

    API網關可以看做系統與外界聯通的入口,我們可以在網關進行處理一些非業務邏輯的邏輯,比如權限驗證,監控,緩存,請求路由等等。
    發表于 12-23 09:57 ?1.2w次閱讀
    什么是<b class='flag-5'>API</b><b class='flag-5'>網關</b>為什么需要<b class='flag-5'>API</b><b class='flag-5'>網關</b>

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

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

    什么是API網關

    API應用編程接口(Application Programming Interface)是一組用于構建和集成應用軟件的定義和協議。
    的頭像 發表于 07-03 09:37 ?2531次閱讀

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

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

    物聯網網關廠家哪家好?怎么選擇網關廠家?

    物聯網網關廠家選擇非常重要,它不僅關系到物聯網網關的質量,而且還關系到物聯網網關的可靠性和安全性。因此,在選擇物聯網
    發表于 03-03 17:30 ?397次閱讀
    物聯網<b class='flag-5'>網關</b>廠家哪家好?怎么<b class='flag-5'>選擇</b><b class='flag-5'>網關</b>廠家?

    邊緣計算網關怎么選擇?邊緣計算網關設備推薦

    邊緣計算網關是一種物聯網設備,它可以將復雜的計算任務遷移到邊緣設備上,以實現更快的數據處理和更低的成本。由于邊緣計算網關的廣泛應用,越來越多的企業開始考慮使用邊緣計算網關來實現更快速、
    發表于 03-16 17:55 ?781次閱讀
    邊緣計算<b class='flag-5'>網關</b>怎么<b class='flag-5'>選擇</b>?邊緣計算<b class='flag-5'>網關</b>設備推薦

    API 網關詳細介紹(上)

    業界有很多流行的 API 網關,開源的有 Nginx、Netflix Zuul、Kong 等。當然 Kong 還有商業版,類似的商業版網關還有 GoKu API Gateway 和 T
    的頭像 發表于 05-04 17:28 ?1273次閱讀
    <b class='flag-5'>API</b> <b class='flag-5'>網關</b>詳細介紹(上)

    API 網關詳細介紹(下)

    業界有很多流行的 API 網關,開源的有 Nginx、Netflix Zuul、Kong 等。當然 Kong 還有商業版,類似的商業版網關還有 GoKu API Gateway 和 T
    的頭像 發表于 05-04 17:28 ?632次閱讀
    <b class='flag-5'>API</b> <b class='flag-5'>網關</b>詳細介紹(下)

    為什么需要 API 網關?

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

    生產企業如何選擇適合自己的工業網關?

    生產安全性。然而,面對市場上眾多的工業網關品牌和類型,生產企業如何選擇適合自己的工業網關呢? 一、工業網關的選型要點 硬件性能:根據需求分析
    的頭像 發表于 10-12 17:12 ?407次閱讀

    api網關 kong 教程入門

    統一權限控制、接口請求訪問日志統計 安全,是保護內部服務而設計的一道屏障 開源-最大好處 當然也有一個很大的缺點,api-gw很可能成為性能瓶頸,因為所有的請求都經過這里,可以通過橫向擴展和限流解決這個問題。 在眾多API GATEWAY框架中,Mashape開源的高性
    的頭像 發表于 11-10 11:39 ?359次閱讀
    <b class='flag-5'>api</b><b class='flag-5'>網關</b> kong 教程入門
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>