一般來説,API網關有四大職能:
- 請求接入:作為所有API接口服務請求的接入點,管理所有的接入請求
- 業務聚合:作為所有後端業務服務的聚合點,所有業務服務都可以在這裏被調用
- 中介策略:實現安全、驗證、路由、過濾、流控、緩存等策略,進行一些必要的中介處理
- 統一管理:提供配置管理工具,對所有API服務的調用生命週期和相應的中介策略進行統一管理
如果對上述目標進入更深入的思考,則可以分為流量網關和業務網關。
開源網關對比
|
|
SpringCloudGateway
|
Zuul2
|
OpenResty
|
Kong
|
|
限流
|
可以通過IP、用户、集羣限流,提供了相應的接口進行擴展 |
可以通過配置文件配置集羣限流和單服務器限流,也可以通過Filter實現限流擴展
|
需要Lua開發
|
根據秒、分、時、天、月、年,根據用户進行限流。可以二次開發 |
|
鑑權
|
普通鑑權、OAuth2.0
|
Filter中實現
|
需要Lua開發
|
普通鑑權、Key Auth鑑權、HMAC、Oauth2.0
|
|
監控
|
Gateway Metrics Filter
|
Filter中實現
|
需要開發
|
可上報datadog,請求數據量、應答數據量、接收和發送的時間間隔、狀態碼數量、Kong內運行時間
|
|
易用性
|
簡單易用
|
參考資料較少
|
簡單易用,但是需要Lua開發
|
簡單易用,API轉發通過管理員接口配置,開發需要Lua腳本
|
|
可維護性
|
擴展性強、易配置
|
可維護性較差
|
可維護性較差,將來維護需要大量Lua腳本
|
可維護性較差,將來維護需要大量Lua腳本
|
|
成熟度
|
社區成熟,但是Gateway資源較少
|
資料較少
|
成熟,資料多
|
相對成熟,插件開源
|