你真的了解 API 網關嗎?一文說清微服務網關和企業級應用網關之差異與融合
軟件架構總是在不斷地演進迭代,20世紀90年代C/S架構非常流行,業務系統架構也都是單體架構的方式,系統之間數據交互非常少,隨著企業的業務系統越來越多,這就會導致數據的孤島問題,此時數據的互聯互通的要求非常迫切,基于HTTP和XML的遠程傳輸協議格式被很多廣泛采用,SOA概念在2000年被IBM首次提出,確實解決了企業的很多異構系統的集成問題。
時間來到互聯網時代,很多公司為了適應業務系統的靈活多變的業務需求,基于HTTP和JSON的架構風格逐漸成為企業開發的實踐。SOA架構的集中式部署問題暴露,基于微服務分布式架構盛行起來,API網關作為微服務架構的核心組件,承擔著所有流量的統一入口。上游業務系統不用關心安全和流控,只需要關注業務實現即可。
API網關是企業整體架構的關鍵的角色,他主要是增強、保障、控制對于后端微服務的調用,對所有的上游業務調用是透明的,API網關需要保證服務調用安全、高效、準確。API網關主要分為兩類,一類是微服務網關,更貼近業務,一類是企業級應用網關,主要關注服務調用的流控和安全防護。
他們之間的差異點主要是以下幾個方面:
1. 部署位置不同
微服務網關主要是部署在內網,作為微服務內部API的通訊。
企業級應用網關一般部署在DMZ區域或者在藏在負載均衡后面。
2. 功能側重點不同
微服務網關主要功能:服務導流、服務自動發現和路由、服務編排、業務規則定制化開發、服務熔斷、服務灰度發布。
企業級應用網關主要功能:全局性流控、統一安全認證、性能支持、負載均衡、IP黑白名單、安全防護。
3. 性能要求不同
微服務網關的性能只需要滿足服務的并發要求。
企業級應用網關的性能需要在關注全局的流量和并發支持。
4. 使用場景不同
微服務網關:主要集中于微服務內部的網關調用場景。
企業級應用網關:主要是南北流量的入口,微信小程序、云端應用調用、移動APP調用、iPad平臺、第三方合作伙伴,都是從外網調用內網的服務
5. 架構不同
微服務網關是微服務架構的一個基本組件,大部分互聯網企業使用Zuul的開源產品,下圖的架構使用的是性能和穩定性更好的Kong作為微服務的API網關。
架構如下圖:
企業級應用網關主要是外部流量的統一入口,一般都是集中式部署,也會根據客戶的要求按照地域、業務領域進行劃分,組成企業級應用網關集群。
架構如下圖:
企業級應用網關并發一般都是非常大,并要求產品具有獨立性,不需要依賴于第三方使用,性能良好,很多偏互聯網行業都選擇Kong的開源產品,Kong社區活躍,GitHub上2萬多star,CNCF中的API網關里面的其他產品也都非常不錯,國內的產品有OpenResty、Orange以及最新推出的APISIX產品,性能都非常出色,不過穩定性有待驗證。
微服務網關有很多產品,他們一般都和業務需求相關,并和注冊服務發現產品無縫集成。業界用的最多的是Zuul以及Spring Cloud Gateway產品,由于是純Java開發的產品,性能沒有Kong產品好,所以很多互聯網公司都進行了二次改造,比如:游戲、電商、彩票等,他們為了滿足高并發和大流量的的需求,也會改造Kong來滿足微服務網關的功能。
未來微服務網關和企業級應用網關有融合的趨勢,一體化的解決方案也帶來了諸多好處。
- 統一配置,邏輯清晰,操作直觀
- 集成管理,尤其是鏈路跟蹤和服務質量管理,一體化管理帶來更高的管理效率
- 把應用部署從技術視圖向業務視圖過度,避免了過去割裂的部署帶來的混淆
- 統一技術堆棧,降低了成本和維護復雜度
- 流量的整體把控,擴容和災備都更加簡潔
軟件行業沒有銀彈,任何架構都很難包治百病,不過保障API網關的高可用性和可擴展性需要基礎設施層面增加更多的技術投入和技術保障,這樣才能讓技術人員更好的專注于實現自動化測試和構建、持續集成和交付的一體化流程。