前面簡單說了下 微服務概念 下面說一下網關(Gateway)
上篇文章已經實現了通過consul 對多服務實例的統一管理 包括負載均衡 服務注冊與發現 服務心跳檢查
這一篇繼續學習 API 網關,即API Gateway,是大型分布式系統中,為了保護內部服務而設計的一道屏障,可以提供高性能、高可用的 API托管服務,
網關的作用是什么呢
(1)網關層對外部和內部進行了隔離,保障了后台服務的安全性。
(2)對外訪問控制由網絡層面轉換成了運維層面,減少變更的流程和錯誤成本。
(3)減少客戶端與服務的耦合,服務可以獨立運行,並通過網關層來做映射。
(4)通過網關層聚合,減少外部訪問的頻次,提升訪問效率。
(5)節約后端服務開發成本,減少上線風險。
(6)為服務熔斷,灰度發布,線上測試提供簡單方案。
(7)便於進行應用層面的擴展。
其實也就是將服務於客戶端隔離,避免客戶端直接調用,為了客戶端提供統一入口 保證服務安全性
這里我們采用Ocelot ,Ocelot是一個用.NET Core實現並且開源的API網關,它功能強大,包括了:路由、請求聚合、服務發現、認證、鑒權、限流熔斷、並內置了負載均衡器與Service Fabric、Butterfly Tracing集成。這些功能只都只需要簡單的配置即可完成,下面我們會對這些功能的配置一一進行說明。
首先完成以下四部
1.新建WebAPI 程序
2.引入Ocelot nuget 包
3.Startup配置中間件
4.增加配置文件地址
然后配置單地址路由
ok 我們首先啟動三個服務實例 端口分別是 5726 5727 5728
這里僅舉例5726 服務 其余的大家自己想象一樣 只是端口號不一樣
然后啟動我們的網關實例
這時候 訪問 6299 網關端口 就可以訪問到5726 端口下的服務 證明我們已經配置成功
但是這樣搞 似乎負載均衡並沒有起作用 因為訪問的永遠是5726端口下的服務實例
接下來需要我們在網關下 引入consul
安裝 Ocelot.Provider.Consul
重新更改下負載均衡配置
此時已經實現了 consul + 網關負載均衡
接下來 服務緩存 引入Ocelot.provider.Polly 包 在startup中AddPolly
修改configurat 增加 緩存配置
此時請求一下啊 注意時間 調用網關的時候 請求會在網管處直接返回請求 結果並不會訪問服務
雖然只有10秒鍾 但是這個如果實在高並發的環境下 每秒攔截的訪問數 還是很可觀的
限流與熔斷