.Net?Core微服務(wù)網(wǎng)關(guān)Ocelot集成Consul
有consul基礎(chǔ)的都知道,consul可以發(fā)現(xiàn)新增的服務(wù),剔除掉無效的服務(wù),賦予應(yīng)用自動(dòng)伸縮的能力。而ocelot如果集成了consul,那ocelot也能擁有這些能力,還可以自主選擇負(fù)載均衡策略,靈活性更強(qiáng)。
(建議看完前一篇文章再來實(shí)踐這一篇,不然可能有難度)
上干貨。
首先打開上一篇新建好的項(xiàng)目,繼續(xù)添加nuget包:

然后注冊相關(guān)服務(wù):
public void ConfigureServices(IServiceCollection services)
{
services.AddOcelot()
.AddConsul()
.AddConfigStoredInConsul();
}接下來還需要修改下配置文件:
{
"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以后新增的配置。
這里說下配置項(xiàng)LoadBalancerOptions(負(fù)載均衡),官方實(shí)現(xiàn)了4個(gè)負(fù)載均衡器,分別是:
- 1、LeastConnection - 跟蹤哪些服務(wù)正在處理請求,并向現(xiàn)有請求最少的服務(wù)發(fā)送新請求。
- 2、RoundRobin - 輪詢。
- 3、NoLoadBalancer - 從配置或服務(wù)發(fā)現(xiàn)中獲取第一個(gè)可用服務(wù)。
- 4、CookieStickySessions - 使用 cookie 將所有請求粘貼到特定服務(wù)器。
如果選擇了第四個(gè),那么需要額外的參數(shù)來描述cookie,比如:
"LoadBalancerOptions": {
"Type": "CookieStickySessions",
"Key": "ASP.NET_SessionId",
"Expiry": 1800000 //過期時(shí)間
},關(guān)于負(fù)載均衡器,本文不多做詳解,回到主題。
consul需要單獨(dú)搭建,所以我準(zhǔn)備了一個(gè)擁有6個(gè)節(jié)點(diǎn)的consul集群:

然后在集群下注冊了3個(gè)服務(wù):

這時(shí)運(yùn)行網(wǎng)關(guān)并請求,網(wǎng)關(guān)會(huì)把請求自動(dòng)轉(zhuǎn)到遠(yuǎn)程的consul,并且在已有的consul服務(wù)中輪詢調(diào)用。來看一下運(yùn)行結(jié)果:

多刷新幾下:


如果你得到了類似的結(jié)果,恭喜你,已經(jīng)完成了集成的操作。同時(shí),還可以解鎖一個(gè)新操作:熱更新。
熱更新
打開consul控制面板,找到Key/Value,你會(huì)發(fā)現(xiàn)這里多了一個(gè)鍵值對:

進(jìn)入查看會(huì)發(fā)現(xiàn),這是ocelot的配置:

這一份配置文件里包含了當(dāng)前版本的ocelot支持的所有配置項(xiàng),并且修改后即時(shí)生效。
改個(gè)路由證明下:
原來:"UpstreamPathTemplate": "/MJ/{url}"
現(xiàn)在:"UpstreamPathTemplate": "/{url}"save以后再請求:

這感覺,酸爽。
既然是搞技術(shù),自然不能脫離實(shí)際。上面的consul集群、consul客戶端、網(wǎng)關(guān)程序都部署在不同的阿里云服務(wù)器上,和生產(chǎn)環(huán)境一樣。學(xué)習(xí)的話,部署到本機(jī)也可以,consul單機(jī)也可以。如果你沒有consul基礎(chǔ)或者理解的不清晰,可以看我之前的系列文章,應(yīng)該有幫助,往前翻一翻就有。友情提醒一下,單體的ocelot、consul禁止上生產(chǎn),太脆弱,一掛全完。
到此這篇關(guān)于.Net Core微服務(wù)網(wǎng)關(guān)Ocelot集成Consul的文章就介紹到這了。希望對大家的學(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ù)注冊和發(fā)現(xiàn)
相關(guān)文章
在Linux+Jexus中發(fā)布和部署Asp.Net?Core
這篇文章介紹了在Linux+Jexus中發(fā)布和部署Asp.Net?Core,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-12-12
解讀ASP.NET 5 & MVC6系列教程(9):日志框架
這篇文章主要介紹了ASP.NET 5 日志框架,通過基于接口的編程機(jī)制和DI依賴注入機(jī)制,我們可以很容易實(shí)現(xiàn)第三方日志provider的擴(kuò)展,從而將日志記錄到我們想記錄的任意地方,需要的朋友可以參考下2016-06-06
ASP.NET MVC4入門教程(四):添加一個(gè)模型
本文主要介紹在MVC4中如何添加一個(gè)模型(Model),這個(gè)類負(fù)責(zé)和數(shù)據(jù)庫交互,主要處理一些增刪改查的操作。2016-04-04
在ASP.NET 2.0中操作數(shù)據(jù)之四十一:DataList和Repeater數(shù)據(jù)分頁
DataList 和Repeater 都沒有提供內(nèi)置的分頁和排序功能,本文主要介紹利用PagedDataSource實(shí)現(xiàn)DataList和Repeater數(shù)據(jù)分頁。2016-05-05
解讀ASP.NET 5 & MVC6系列教程(8):Session與Caching
這篇文章主要介紹了ASP.NET 5 中的Session與Caching配置和使用,需要的朋友可以參考下2016-06-06
ASP.NET MVC4入門教程(八):給數(shù)據(jù)模型添加校驗(yàn)器
本文介紹給模型添加校驗(yàn)器,以前我們做表單驗(yàn)證都要前臺驗(yàn)證一遍,后臺再驗(yàn)證一遍,MVC4中這種方式,只需在模型上加驗(yàn)證規(guī)則,前后臺就都驗(yàn)證了。2016-04-04
決定何時(shí)使用 DataGrid、DataList 或 Repeater(ASP.NET 技術(shù)文章)
決定何時(shí)使用 DataGrid、DataList 或 Repeater(ASP.NET 技術(shù)文章)...2006-10-10
在ASP.NET 2.0中操作數(shù)據(jù)之十一:基于數(shù)據(jù)的自定義格式化
GridView, DetailsView, FormView的格式自定義可以有多種方法, 在本文中我們將用DataBound 和 RowDataBound兩種事件來完成,下面主要演示了貨幣、加粗、斜體、高亮的數(shù)據(jù)格式化。2016-05-05
解讀ASP.NET 5 & MVC6系列教程(17):MVC中的其他新特性
這篇文章主要介紹了ASP.NET 5中全局導(dǎo)入、獲取IP相關(guān)信息、文件上傳等其他新特性,需要的朋友可以參考下2016-06-06

