網關這種東西,是伴隨着微服務風生水起的,微服務可以沒有api網關,但是最好有,也並不是絕對的。因為有這個東西是合理的,沒有的話,你的微服務會很難受。
-
首先網關最基礎的作用就是對外包括ios、android、webapp、website、h5、微信小程序甚至是第三方提供一個統一服務接入入口。聚合內網眾多微服務,為端上提供統一的api入口。對外統一使-用http協議,網關屏蔽了后端協議的差異性,后端可以專注於提供服務,無需考慮協議的轉換。
-
其次,網關應該具備API防刷以及限流的功能。防刷可以保護你的API不會被惡意調用,限流可以保護你的后端不會被沖垮。網關應該還具備權鑒功能,是否具備對某個api的訪問功能,應該做在api網關層會好很多。保護后端服務,提供完善的流控、服務降級、ACL、鑒權機制。
-
提供API管理平台,包括API的配置、沙箱測試、發布、修改、下線。
-
提供API層面的監控與報表,做到對業務自身的掌控,以及對用戶行為等進行分析。為開放平台的持續完善提供基礎服務。
那么常見的網關實施方案有哪些呢?實際上,思路不要被局限了。
1、Kong就是一個著名的API網關輪子,可以直接使用Kong來構建自己的API gateway系統
2、Openstry也是一個著名的API網關輪子
3、實際上,除了上面現成的輪子,你也完全可以自己動手寫一個網關。其實,網關本身也是web軟件而已,並不是特別高深的東西。即便是你基於傳統的nginx+fpm都可以照樣按照網關該具備的功能來寫出一個api gateway來,這都是無妨的