.Net?Core微服務網(wǎng)關Ocelot基礎介紹及集成
網(wǎng)關是什么
簡單來說,網(wǎng)關就是暴露給外部的請求入口。就和門衛(wèi)一樣,外面的人想要進來,必須要經(jīng)過門衛(wèi)。當然,網(wǎng)關并不一定是必須的,后端服務通過http也可以很好的向客戶端提供服務。但是對于業(yè)務復雜、規(guī)模龐大的項目來說,使用網(wǎng)關有很多無法舍棄的好處,比如可以進行統(tǒng)一的請求聚合來節(jié)省流量、降低耦合度,可以賦予項目熔斷限流的能力提高可用性等等。
ocelot是什么
ocelot是.net core實現(xiàn)的開源的api網(wǎng)關項目,開源地址:https://github.com/ThreeMammals/Ocelot
ocelot除了十分契合.net開發(fā)者以外,功能強大,包含:路由、認證、請求聚合、限流熔斷、服務發(fā)現(xiàn)、鑒權(quán),還有內(nèi)置負載均衡器、Consul集成等等。
當然了,api網(wǎng)關不止這一款,市面上還有kong之類的,隨自己喜好就好。
ocelot集成
首先明確一點,網(wǎng)關應該作為獨立進程存在。那么我們先新建一個.net core3.1項目,然后添加nuget包:
關于版本,選擇當前所能支持的最新版即可。
添加好nuget包以后,需要修改StartUp:
// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { services.AddOcelot(); //services.AddControllers(); } // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { app.UseOcelot().Wait(); //if (env.IsDevelopment()) //{ // app.UseDeveloperExceptionPage(); //} //app.UseHttpsRedirection(); //app.UseRouting(); //app.UseAuthorization(); //app.UseEndpoints(endpoints => //{ // endpoints.MapControllers(); //}); }
這里不要驚訝,因為走了網(wǎng)關就不會再走默認的管道了。UseOcelot().Wait() 表示設置ocelot所有的中間件,而ocelot也提供了很多集成中間件的庫,就像這些:
現(xiàn)在,想要讓ocelot成功運行,還需要新增配置文件,并在Program新增配置文件的引用:
public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureAppConfiguration(config => { config.AddJsonFile("ocelotConfig.json", optional: false, reloadOnChange: true); }) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); });
配置文件:
{ "Routes": [ { "DownstreamPathTemplate": "/{url}", //服務地址--url變量 "DownstreamScheme": "http", "DownstreamHostAndPorts": [ { "Host": "123.123.123.123", "Port": 5050 //服務端口 } ], "UpstreamPathTemplate": "/MJ/{url}", //網(wǎng)關地址--url變量 "UpstreamHttpMethod": [ "Get", "Post" ] } ] }
這是一份簡單的轉(zhuǎn)發(fā)配置,Downstream和Upstream開頭的配置項就是下游、上游相關項。這里要說一句,在微服務架構(gòu)中,客戶端——服務端通常理解為上游——下游,這里自行替換一下。
上面的配置文件做了一件事,接收上游請求時,把請求路徑中含有【/MJ/所有】的請求轉(zhuǎn)發(fā)到IP【http://123.123.123.123:5050/所有】并回傳結(jié)果,支持http的get、post方法,其實這就是最基本的路由。
來測試一下,啟動項目并寫好請求路徑:
可以看到,ocelot成功把本地請求按照路由規(guī)則轉(zhuǎn)發(fā)給遠程服務器,并回發(fā)了結(jié)果。一個網(wǎng)關最基本的功能有了。
截圖中所請求的遠程服務,是我前幾篇文章基于consul搭建起來的項目,有興趣可以去看看。
關于ocelot更高級的應用,比如熔斷限流、身份認證等,都是通過配置來完成的,我會整理后發(fā)出來,同時也建議仔細閱讀官方文檔,地址:https://ocelot.readthedocs.io/en/latest/
到此這篇關于.Net Core微服務網(wǎng)關Ocelot基礎介紹及集成的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
- ASP.NET Core為Ocelot網(wǎng)關配置Swagger
- ASP.NET?Core設置Ocelot網(wǎng)關限流
- ASP.NET?Core中的Ocelot網(wǎng)關介紹
- .Net?Core微服務網(wǎng)關Ocelot超時、熔斷、限流
- .Net?Core微服務網(wǎng)關Ocelot集成Consul
- ASP.NET Core Api網(wǎng)關Ocelot的使用初探
- ASP.NET Core3.1 Ocelot負載均衡的實現(xiàn)
- ASP.NET Core3.1 Ocelot認證的實現(xiàn)
- ASP.NET Core3.1 Ocelot路由的實現(xiàn)
- Asp.Net?Core使用Ocelot結(jié)合Consul實現(xiàn)服務注冊和發(fā)現(xiàn)
相關文章
解讀ASP.NET 5 & MVC6系列教程(15):MvcOptions配置
這篇文章主要介紹了ASP.NET 5 MVC6中MvcOptions配置方法,需要的朋友可以參考下2016-06-06NopCommerce架構(gòu)分析之(四)基于路由實現(xiàn)靈活的插件機制
本文主要介紹NopCommerce中,通過注冊路由,實現(xiàn)插件的機制,同時,NopCommerce中每個插件都集成IPlugin接口,插件擁有安裝和卸載的功能。2016-04-04在ASP.NET 2.0中操作數(shù)據(jù)之五十四:添加新記錄時包含一個文件上傳選項
上篇文章主要介紹了,ASP.NET 2.0中如何顯示二進制數(shù)據(jù),本文主要介紹如何將圖片上傳,轉(zhuǎn)換成二進制數(shù)據(jù)保存在數(shù)據(jù)庫中。2016-05-05在ASP.NET 2.0中操作數(shù)據(jù)之六十二:GridView批量更新數(shù)據(jù)
GridView控件內(nèi)置的編輯功能只能對每行進行編輯,做不到批量編輯。為此,我們需要將GridView里的列轉(zhuǎn)換為TemplateFields,通過一個單獨的“Update All”按鈕,在按鈕的事件中批量處理每一行。2016-05-05在ASP.NET 2.0中操作數(shù)據(jù)之六十四:GridView批量添加數(shù)據(jù)
前面介紹了批量更新,批量刪除數(shù)據(jù),這篇文章主要介紹如何實現(xiàn)批量添加數(shù)據(jù),當然為了保證數(shù)據(jù)的完整性,我們在做這些批量操作的時候,都使用了事務來實現(xiàn)。2016-05-05在ASP.NET 2.0中操作數(shù)據(jù)之十五:在GridView的頁腳中顯示統(tǒng)計信息
本文主要介紹在GridView中顯示頁腳的實現(xiàn)方法,通過設置ShowFooter設置為True,再配合事件和底層的方法從而實現(xiàn)在GridView的頁腳區(qū)域顯示相關的統(tǒng)計信息。2016-05-05在ASP.NET 2.0中操作數(shù)據(jù)之五十一:從GridView的頁腳插入新記錄
本文介紹在ASP.NET 2.0中如何在GridView的頁腳動態(tài)插入一行新記錄,要顯示頁腳行只需要設置ShowFooter屬性為true。我們可以這樣對頁腳行進行用戶定制:將每一列轉(zhuǎn)換成TemplateField,并在其FooterTemplate模板定制插入界面。2016-05-05.Net?Core微服務網(wǎng)關Ocelot基礎介紹及集成
這篇文章介紹了.Net?Core微服務網(wǎng)關Ocelot基礎及集成,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-01-01