.Net?Core微服务网关Ocelot集成Consul
(福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun)
有consul基础的都知道,consul可以发现新增的服务,剔除掉无效的服务,赋予应用自动伸缩的能力。而ocelot如果集成了consul,那ocelot也能拥有这些能力,还可以自主选择负载均衡策略,灵活性更强。
(建议看完前一篇文章再来实践这一篇,不然可能有难度)
上干货。
首先打开上一篇新建好的项目,继续添加nuget包:
然后注册相关服务:
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 } } }
注释部分是原先常规的转发规则,变色部分是集成consul以后新增的配置。
这里说下配置项LoadBalancerOptions(负载均衡),官方实现了4个负载均衡器,分别是:
- 1、LeastConnection - 跟踪哪些服务正在处理请求,并向现有请求最少的服务发送新请求。
- 2、RoundRobin - 轮询。
- 3、NoLoadBalancer - 从配置或服务发现中获取第一个可用服务。
- 4、CookieStickySessions - 使用 cookie 将所有请求粘贴到特定服务器。
如果选择了第四个,那么需要额外的参数来描述cookie,比如:
"LoadBalancerOptions": { "Type": "CookieStickySessions", "Key": "ASP.NET_SessionId", "Expiry": 1800000 //过期时间 },
关于负载均衡器,本文不多做详解,回到主题。
consul需要单独搭建,所以我准备了一个拥有6个节点的consul集群:
然后在集群下注册了3个服务:
这时运行网关并请求,网关会把请求自动转到远程的consul,并且在已有的consul服务中轮询调用。来看一下运行结果:
多刷新几下:
如果你得到了类似的结果,恭喜你,已经完成了集成的操作。同时,还可以解锁一个新操作:热更新。
热更新
打开consul控制面板,找到Key/Value,你会发现这里多了一个键值对:
进入查看会发现,这是ocelot的配置:
这一份配置文件里包含了当前版本的ocelot支持的所有配置项,并且修改后即时生效。
改个路由证明下:
原来:"UpstreamPathTemplate": "/MJ/{url}" 现在:"UpstreamPathTemplate": "/{url}"
save以后再请求:
这感觉,酸爽。
既然是搞技术,自然不能脱离实际。上面的consul集群、consul客户端、网关程序都部署在不同的阿里云服务器上,和生产环境一样。学习的话,部署到本机也可以,consul单机也可以。如果你没有consul基础或者理解的不清晰,可以看我之前的系列文章,应该有帮助,往前翻一翻就有。友情提醒一下,单体的ocelot、consul禁止上生产,太脆弱,一挂全完。
到此这篇关于.Net Core微服务网关Ocelot集成Consul的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持程序员之家。
相关文章
在ASP.NET 2.0中操作数据之三十:格式化DataList和Repeater的数据
本文主要介绍ASP.NET 2.0使用DataList和Repeater如何呈现数据,一种是在控件的ItemDataBound事件中处理,一种则是在绑定数据时调用后台定义的方法来实现。2016-05-05AlternatingItemTemplate类似于 ItemTemplate 元素
AlternatingItemTemplate类似于 ItemTemplate 元素...2006-10-10在ASP.NET 2.0中操作数据之四:使用ObjectDataSource展现数据
前面介绍搭建基础的架构,下面我们来介绍ASP.NET中,如何利用ObjectDataSource来展现数据。通过配置ObjectDataSource,我们指定这些底层的对象,还有这些对象的方法如何映射到ObjectDataSource的Select、Insert、Update和Delete方法。2016-04-04在ASP.NET 2.0中操作数据之六十五:在TableAdapters中创建新的存储过程
本文主要讲解使用TableAdapter设置向导自动创建增删改查的存储过程,虽然自动创建存储过程可以节省时间,但他们会包含一些无用的参数,下节我们会介绍TableAdapter使用现有的存储过程。2016-05-05在ASP.NET 2.0中操作数据之二十五:大数据量时提高分页的效率
上一篇我们介绍过利用GirdView控件内置的分页功能进行分页,但是熟悉ASP.NET的人都知道,那不是真正意义上的分页,本文就带着大家利用利用存储过程创建高效的分页。2016-05-05
最新评论