API GateWay服務網關
SOA團隊 2020-03-16
API網關是一個服務器,也可以說是進入系統的唯一節點。這與面向對象設計模式中的Facade模式很像。API網關封裝內部系統的架構,并且提供API給各個客戶端。它還可能還具備授權、監控、負載均衡、緩存、請求分片和管理、靜態響應處理等功能。
對于API網關,雖然網上有類似Netfix Zuul和Kong等的開源實現,但是本篇重點還是想再思考下網關應該具備的一些關鍵功能點。主要還是是服務接入,服務運維,服務運營,服務安全,服務管控治理等幾個方面來思考下一個完整的API網關應該具備或后續擴展的能力。
■ 服務注冊和服務接入能力
1. 直接將Java API接口發布為服務,即內部可以用Java API或RPC,跨模塊訪問走Rest接口服務注冊到網關
2. 將已有的Rest API接口通過代理方式注冊和接入
3. 將已有的Soap WS服務接入通過協議轉換和數據格式轉換后發布為Rest API服務接口
4. 將內部基于JMS或AMQP的消息適配后發布為Rest API服務接口
5. 提供服務自動化注冊和接入的能力
■ 網關接入和發布核心功能
1. 協議轉換:重點是支持SOAP,JMS,Rest間的協議轉換
2. 數據轉換:重點是支持XML和Json之間的報文格式轉換能力(可選)
3. 負載均衡:注意是網關本身的負載均衡,可以部署多個API網關形成Cluster集群
4. 路由:基礎能力,基本的服務路由支持
■ 服務安全
1. 基于Token的客戶端訪問控制和安全策略
2. 傳輸數據和報文加密,到服務端解密,需要在客戶端有獨立的SDK代理包
3. 基于Https的傳輸加密,客戶端和服務端數字證書支持
4. 基于OAuth2.0的服務安全認證(授權碼,客戶端,密碼模式等)
■ 服務管控和治理
1. 服務消息和日志監控能力,能夠查看詳細的服務消息日志,在取中心化的網關中需要單獨處理
2. 服務流量控制,限流和熔斷能力,可以設置不同的流量控制策略
3. 服務鏈的監控和跟蹤,可以跟蹤多個服務間的調用鏈,需要進一步規約Trace_id的使用
■ 面向開發者的自服務能力
1. 提供開發者門戶和面向開發者的各種自服務能力
2. 提供API服務目錄,服務詳細說明,服務調用示例,在線測試等基礎功能
3. 提供服務接入,服務訂購關鍵自服務流程
4. 提供詳細的服務開發案例代碼,開發框架,本地SDK包,接入指南幫助文檔等