.Net?Core微服務(wù)網(wǎng)關(guān)Ocelot集成Consul
有consul基礎(chǔ)的都知道,consul可以發(fā)現(xiàn)新增的服務(wù),剔除掉無(wú)效的服務(wù),賦予應(yīng)用自動(dòng)伸縮的能力。而ocelot如果集成了consul,那ocelot也能擁有這些能力,還可以自主選擇負(fù)載均衡策略,靈活性更強(qiáng)。
(建議看完前一篇文章再來(lái)實(shí)踐這一篇,不然可能有難度)
上干貨。
首先打開(kāi)上一篇新建好的項(xiàng)目,繼續(xù)添加nuget包:
然后注冊(cè)相關(guān)服務(wù):
public void ConfigureServices(IServiceCollection services) { services.AddOcelot() .AddConsul() .AddConfigStoredInConsul(); }
接下來(lái)還需要修改下配置文件:
{ "Routes": [ { "DownstreamPathTemplate": "/{url}", "DownstreamScheme": "http", //"DownstreamHostAndPorts": [ // { // "Host": "123.123.123.123", // "Port": 5050 // } //], "UpstreamPathTemplate": "/MJ/{url}", "UpstreamHttpMethod": [ "Get", "Post" ], "ServiceName": "study_consul", "LoadBalancerOptions": { "Type": "RoundRobin" } } ], "GlobalConfiguration": { "ServiceDiscoveryProvider": { "Host": "42.193.182.64", "Port": 88 } } }
注釋部分是原先常規(guī)的轉(zhuǎn)發(fā)規(guī)則,變色部分是集成consul以后新增的配置。
這里說(shuō)下配置項(xiàng)LoadBalancerOptions(負(fù)載均衡),官方實(shí)現(xiàn)了4個(gè)負(fù)載均衡器,分別是:
- 1、LeastConnection - 跟蹤哪些服務(wù)正在處理請(qǐng)求,并向現(xiàn)有請(qǐng)求最少的服務(wù)發(fā)送新請(qǐng)求。
- 2、RoundRobin - 輪詢。
- 3、NoLoadBalancer - 從配置或服務(wù)發(fā)現(xiàn)中獲取第一個(gè)可用服務(wù)。
- 4、CookieStickySessions - 使用 cookie 將所有請(qǐng)求粘貼到特定服務(wù)器。
如果選擇了第四個(gè),那么需要額外的參數(shù)來(lái)描述cookie,比如:
"LoadBalancerOptions": { "Type": "CookieStickySessions", "Key": "ASP.NET_SessionId", "Expiry": 1800000 //過(guò)期時(shí)間 },
關(guān)于負(fù)載均衡器,本文不多做詳解,回到主題。
consul需要單獨(dú)搭建,所以我準(zhǔn)備了一個(gè)擁有6個(gè)節(jié)點(diǎn)的consul集群:
然后在集群下注冊(cè)了3個(gè)服務(wù):
這時(shí)運(yùn)行網(wǎng)關(guān)并請(qǐng)求,網(wǎng)關(guān)會(huì)把請(qǐng)求自動(dòng)轉(zhuǎn)到遠(yuǎn)程的consul,并且在已有的consul服務(wù)中輪詢調(diào)用。來(lái)看一下運(yùn)行結(jié)果:
多刷新幾下:
如果你得到了類似的結(jié)果,恭喜你,已經(jīng)完成了集成的操作。同時(shí),還可以解鎖一個(gè)新操作:熱更新。
熱更新
打開(kāi)consul控制面板,找到Key/Value,你會(huì)發(fā)現(xiàn)這里多了一個(gè)鍵值對(duì):
進(jìn)入查看會(huì)發(fā)現(xiàn),這是ocelot的配置:
這一份配置文件里包含了當(dāng)前版本的ocelot支持的所有配置項(xiàng),并且修改后即時(shí)生效。
改個(gè)路由證明下:
原來(lái):"UpstreamPathTemplate": "/MJ/{url}" 現(xiàn)在:"UpstreamPathTemplate": "/{url}"
save以后再請(qǐng)求:
這感覺(jué),酸爽。
既然是搞技術(shù),自然不能脫離實(shí)際。上面的consul集群、consul客戶端、網(wǎng)關(guān)程序都部署在不同的阿里云服務(wù)器上,和生產(chǎn)環(huán)境一樣。學(xué)習(xí)的話,部署到本機(jī)也可以,consul單機(jī)也可以。如果你沒(méi)有consul基礎(chǔ)或者理解的不清晰,可以看我之前的系列文章,應(yīng)該有幫助,往前翻一翻就有。友情提醒一下,單體的ocelot、consul禁止上生產(chǎn),太脆弱,一掛全完。
到此這篇關(guān)于.Net Core微服務(wù)網(wǎng)關(guān)Ocelot集成Consul的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- ASP.NET Core為Ocelot網(wǎng)關(guān)配置Swagger
- ASP.NET?Core設(shè)置Ocelot網(wǎng)關(guān)限流
- ASP.NET?Core中的Ocelot網(wǎng)關(guān)介紹
- .Net?Core微服務(wù)網(wǎng)關(guān)Ocelot超時(shí)、熔斷、限流
- .Net?Core微服務(wù)網(wǎng)關(guān)Ocelot基礎(chǔ)介紹及集成
- ASP.NET Core Api網(wǎng)關(guān)Ocelot的使用初探
- ASP.NET Core3.1 Ocelot負(fù)載均衡的實(shí)現(xiàn)
- ASP.NET Core3.1 Ocelot認(rèn)證的實(shí)現(xiàn)
- ASP.NET Core3.1 Ocelot路由的實(shí)現(xiàn)
- Asp.Net?Core使用Ocelot結(jié)合Consul實(shí)現(xiàn)服務(wù)注冊(cè)和發(fā)現(xiàn)
相關(guān)文章
在ASP.NET 2.0中操作數(shù)據(jù)之五十一:從GridView的頁(yè)腳插入新記錄
本文介紹在ASP.NET 2.0中如何在GridView的頁(yè)腳動(dòng)態(tài)插入一行新記錄,要顯示頁(yè)腳行只需要設(shè)置ShowFooter屬性為true。我們可以這樣對(duì)頁(yè)腳行進(jìn)行用戶定制:將每一列轉(zhuǎn)換成TemplateField,并在其FooterTemplate模板定制插入界面。2016-05-05在ASP.NET 2.0中操作數(shù)據(jù)之三十二:數(shù)據(jù)控件的嵌套
本文主要介紹ASP.NET 2.0中如何在數(shù)據(jù)控件內(nèi)嵌套一個(gè)數(shù)據(jù)控件,可以在Repeater控件的ItemTemplate節(jié)點(diǎn)下嵌套各種其他(如Repeater、GridView或DataList等)的控件。2016-05-05在ASP.NET 2.0中操作數(shù)據(jù)之四:使用ObjectDataSource展現(xiàn)數(shù)據(jù)
前面介紹搭建基礎(chǔ)的架構(gòu),下面我們來(lái)介紹ASP.NET中,如何利用ObjectDataSource來(lái)展現(xiàn)數(shù)據(jù)。通過(guò)配置ObjectDataSource,我們指定這些底層的對(duì)象,還有這些對(duì)象的方法如何映射到ObjectDataSource的Select、Insert、Update和Delete方法。2016-04-04在ASP.NET 2.0中操作數(shù)據(jù)之十四:使用FormView 的模板
前面介紹了GridView和DetailsView控件可以使用TemplateField來(lái)自定義輸出,但是呈現(xiàn)的樣式還是一種四四方方的格子狀。當(dāng)我們想完全自定義的時(shí)候,他們就愛(ài)莫能助了,這時(shí)我們就可以使用FormView控件來(lái)實(shí)現(xiàn)我們想要的效果了。2016-05-05在ASP.NET 2.0中操作數(shù)據(jù)之五十四:添加新記錄時(shí)包含一個(gè)文件上傳選項(xiàng)
上篇文章主要介紹了,ASP.NET 2.0中如何顯示二進(jìn)制數(shù)據(jù),本文主要介紹如何將圖片上傳,轉(zhuǎn)換成二進(jìn)制數(shù)據(jù)保存在數(shù)據(jù)庫(kù)中。2016-05-05在ASP.NET 2.0中操作數(shù)據(jù)之二十:定制數(shù)據(jù)修改界面
本文主要介紹如何對(duì)GridView的編輯界面進(jìn)行定制,使GridView在編輯時(shí)具有DropDownList和RadioButtonList控件,提供更人性化的界面。2016-05-05解讀ASP.NET 5 & MVC6系列教程(11):Routing路由
這篇文章主要介紹了ASP.NET 5 Routing路由的用法,雖然ASP.NET 5 和MVC6的路由使用方式很簡(jiǎn)單,但是相關(guān)的使用規(guī)則卻很復(fù)雜,大家使用的時(shí)候需要多加注意。2016-06-06解讀ASP.NET 5 & MVC6系列教程(9):日志框架
這篇文章主要介紹了ASP.NET 5 日志框架,通過(guò)基于接口的編程機(jī)制和DI依賴注入機(jī)制,我們可以很容易實(shí)現(xiàn)第三方日志provider的擴(kuò)展,從而將日志記錄到我們想記錄的任意地方,需要的朋友可以參考下2016-06-06