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