用友雲開放平臺之API網關

本文介紹選擇API網關應考慮的幾方面內容,API網關在微服務框架中的做用,API網關如何選型,用友雲開放平臺的API網關能夠作什麼。java

  隨着互聯網的快速發展,當前已步入移動互聯、物聯網時代。企業內部系統,企業與客戶,企業供應鏈上下游之間,甚至於社會化公共數據的共享都對系統架構提出了新的需求。nginx

  微服務框架的強勢崛起,使更多企業迅速的完成了企業內部的API化,但在企業供應鏈和社會化開放數據和能力的強烈需求下,安全,隔離,共享成爲剛性需求,因此API網關就成爲了企業開放的必備產品。git

  不少互聯網平臺已基於網關的設計思路,構建自身平臺的API網關,國內主要有京東、攜程、惟品會等,國外主要有Netflix、Amazon等。github

一.如何選擇本身的API網關?後端

  無論用已有仍是自研的API網關  咱們都須要從如下幾個方面去考慮。安全

  一、安全與防禦restful

  大型企業都把網絡安全當作信息化的重中之重,做爲企業數據和服務的對外出口,API網關要自 帶基本的安全防禦功能,可以防注入,防重放,防篡改,防必定規模的DDOS攻擊,自定義規則對非 法流量進行過濾。網絡

  二、性能與穩定性架構

  API網關就會做爲企業應用核心,性能和可用性是最基本的需求要求。併發

  (1)從性能上來講,須要讓網關增長的時間消耗越短越好,我的以爲須要10ms如下。 系統須要採用非阻塞的IO,如epoll,NIO等。網關和各類依賴的交互也須要是非阻塞的,這樣才能保證總體系統的高性能。

  (2)網關必須支持集羣部署和高可用,可以橫行擴展,支撐高併發和大流量,同時任何一個節點down掉都不能影響總體的可用性。

  (3)儘量多套網關應該支持同一管理平臺和同一監控中心。 如: 一個企業的OpenAPI網關和內部應用的多個系統羣的不一樣的微服務網關能夠在同一監控中心進行監控。

  三、可擴展性、可維護性

  企業的需求是多樣化的並且不斷變化,做爲基礎平臺的核心組件,要提供二次開發能力,方便擴展以及和其餘基礎平臺之間流程打通

  四、需求匹配度

  須要評估各API網關在需求上是否能知足,如: 若是是OpenAPI平臺須要使用API網關,那麼須要看API網關在合做夥伴應用接入、合做夥伴門戶集成、訪問次數限額等OpenAPI核心需求上去思考產品是否能知足要求。 若是是微服務網關,那麼要從微服務的運維、監控、管理等方面去思考產品是否足夠強大。

二.API網關在微服務框架中的做用?

 

  1.企業安全隔離

  企業內部系統在對公有云或者外部系統集成時,須要一個明顯的邊界去保證本身企業的業務數據安全及權限的統一控制與管理,API網關在對外開放數據和提供能力時須要提供各類通用的安全認證標準。

  2.統一管理,全局入口

  在微服務架構之下,服務被拆的很是零散,下降了耦合度的同時也給服務的統一管理增長了難度,

  缺少對外開放能力的全局視圖管理及監控能力,API網關要完成全局開放流量入口的分析與管理。

  3.跨平臺,跨語言,易集成,方便擴展

  用友雲平臺是基於JAVA語言開發的微服務治理平臺,在JAVA語言調用時很方便,可是PHP,C系列等其它語言調用微服務時須要開發SideCar ,這就形成集成的複雜度,API網關提供標準的restful接口給產品在集成時提供很大便利。

三.API網關如何選型? 爲何是Nginx+Lua+c?

  如今開源的API網關主要基於Nginx、ZUUL、Spring Cloud  Gateway、Linkerd等開源項目,可是各有特色:

  Linkerd也是一個很是有前途的項目,是基於Scala實現的、目前市面上僅有的生產級別的Service Mesh,可是資料少,學習成本高,二次開發和功能擴展困難, 總體開發生態還沒創建起來。

  Spring Cloud  Gateway 是Spring Cloud建立了一個嵌入式Zuul代理,因此二者實質上都是Netflix Zuul, Zuul的性能不錯,Zuul 2.0 自己採用了Netty 的NIO,複雜度提升了,但性能更增強悍,Zuul1.0和Spring 框架也原生集成,基於JAVA開發語言,能夠和Eureka,Ribbon,Hystrix等配件組合:很容易實現 身份認證,監 控,動態路由,壓力測試,負載分配,靜態響應等功能,Zuul 1.0已開源6年多,很易用,在實戰中也獲得了檢驗,zuul 2.0 在超大型互聯應用中還有坑要趟,但總體來講,在強大的java生態中zuul是一個很不錯的技術選型方向。

  Nginx生態的Nginx+Lua+c,主要表明產品有kong等開源產品。kong 自2015年在github開源之後,已有1.69萬+的star,其核心價值在於穩定,高性能,易擴展;基於nginx+c的Tengine在阿里巴巴集團內還在大量使用,尚在壯年;  京東更是用nginx+lua這套技術框架證明了億萬流量的最佳實踐。雖然開發效率比較低,好在網關的邏輯足夠簡單,穩定,因此這個技術組合對這樣一個業務場景尤爲合適。用友雲API網關核心部分就是基於這套框架開發的。

四.用友雲開放平臺的API網關能夠作什麼?

  API網關(API Gateway)提供了API的全生命週期管理。輔助用戶簡單、快速、低成本、低風險的將數據、業務邏輯或功能安全可靠的開放出來,用以實現自身系統集成、以及與合做夥伴的業務鏈接。目前已成功應用於用友雲開放平臺,APILink。

  產品特性:

  1.安全防禦

  支持安全認證,自定義流量過濾,黑白名單,服務降級,流量限制,熔斷等基本功能。

  2.API 生命週期管理

  提供 API 建立、維護、發佈、運行、下線等操做的全生命週期管理。覆蓋API定義、測試、發佈用以部署API.同時提供便捷的平常管理、版本管理、支持在先版本升級和快速回滾。節約因 API 管理而形成的工做量與人力。

  3.請求管理,鏈路追蹤

  請求通過 API 網關,可根據您的配置進行參數類型、參數值的校驗,減小後端對非法請求、無效請求的資源消耗和處理成本。同時,您能夠在 API 網關定義參數映射規則,網關經過映射規則將後端服務經過映射翻譯成任何形式,以知足不一樣用戶的不一樣需求,從而避免功能重複開發。請求過程全鏈路追蹤機制,方便快捷定位問題。

  4.監控告警,統計分析

  提供實時、可視化的 API 監控,包括:調用量、調用方式、響應時間、錯誤率,讓您可以清楚的瞭解 API 的詳細信息和分析用戶的行爲習慣。方便用戶的運維管理,以便 API 的後期迭代與維護,提升效率。支持自定義報警規則,來針對異常狀況進行報警,縮短故障處理時間。

相關文章
相關標籤/搜索