1. 程式人生 > >用友雲開放平臺之API網關

用友雲開放平臺之API網關

建立 src sha 定性 限制 用戶 提高 規則 企業安全

本文介紹選擇API網關應考慮的幾方面內容,API網關在微服務框架中的作用,API網關如何選型,用友雲開放平臺的API網關可以做什麽。
  隨著互聯網的快速發展,當前已步入移動互聯、物聯網時代。企業內部系統,企業與客戶,企業供應鏈上下遊之間,甚至於社會化公共數據的共享都對系統架構提出了新的需求。
  微服務框架的強勢崛起,使更多企業迅速的完成了企業內部的API化,但在企業供應鏈和社會化開放數據和能力的強烈需求下,安全,隔離,共享成為剛性需求,所以API網關就成為了企業開放的必備產品。
  很多互聯網平臺已基於網關的設計思路,構建自身平臺的API網關,國內主要有京東、攜程、唯品會等,國外主要有Netflix、Amazon等。

一.如何選擇自己的API網關?

  不管用已有還是自研的API網關 我們都需要從以下幾個方面去考慮。
  1、安全與防護
  大型企業都把網絡安全看成信息化的重中之重,作為企業數據和服務的對外出口,API網關要自 帶基本的安全防護功能,能夠防註入,防重放,防篡改,防一定規模的DDOS***,自定義規則對非 法流量進行過濾。
  2、性能與穩定性
  API網關就會作為企業應用核心,性能和可用性是最基本的需求要求。
  (1)從性能上來說,需要讓網關增加的時間消耗越短越好,個人覺得需要10ms以下。 系統需要采用非阻塞的IO,如epoll,NIO等。網關和各種依賴的交互也需要是非阻塞的,這樣才能保證整體系統的高性能。

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

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

  3、可擴展性、可維護性

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

  4、需求匹配度

  需要評估各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 的後期叠代與維護,提高效率。支持自定義報警規則,來針對異常情況進行報警,縮短故障處理時間。

用友雲開放平臺之API網關