Consul+Ocelot搭建微服务实践--负载均衡
Ocelot负载均衡介绍
前面介绍了Ocelot中的路由并简单的介绍了下我对Ocelot的认识,若想了解请戳–>Consul+Ocelot搭建微服务实践–初探路由
Ocelot可以为每个ReRoute在可用的下游服务之间进行负载平衡。
负载均衡器类型:
- LeastConnection -请求服务上最少连接数
- RoundRobin - 使用轮询的方式请求服务,请求按着顺序来。
- NoLoadBalancer - 不启动负载均衡,从配置或服务发现提供程序中取第一个可用的下游服务。
- CookieStickySessions - 使用cookie关联所有相关的请求到制定的服务。
进行测试
1、修改启动配置
将applicationUrl配置项配置多个请求地址,为后面测试使用。
{
"profiles": {
"Study.Microservices.Service1": {
"commandName": "Project",
"launchBrowser": false,
"launchUrl": "api/values",
"applicationUrl": "https://localhost:5011;https://localhost:5066;https://localhost:5088",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
}
}
2、修改请求方法
[HttpGet]
[AllowAnonymous]
public IActionResult Get()
{
var host = Request.HttpContext.Request.Host;
return Ok($"{host}--service1");
}
这里通过请求的地址进行区分负载均衡。
3、修改Ocelot配置
{
"ReRoutes": [
// API:Service1
{
"DownstreamPathTemplate": "/api/{url}",
"DownstreamScheme": "https",
"DownstreamHostAndPorts": [
{
"Host": "localhost",
"Port": "5011"
},
{
"Host": "localhost",
"Port": "5066"
},
{
"Host": "localhost",
"Port": "5088"
}
],
"UpstreamPathTemplate": "/Service1/{url}",
"UpstreamHttpMethod": [ "Get", "Post" ],
"LoadBalancerOptions": {
"Type": "RoundRobin"
}
}
]
}
这里的配置就不全部贴了,不清楚的可以查看Consul+Ocelot搭建微服务实践–初探路由
添加了LoadBalancerOptions配置项,将Type设置为RoundRobin。
4、效果展示
分别按照Ocelot配置文件中的顺序进行轮询的方式进行请求的。
我就只对轮询的方式进行了测试,由于其他配置项本地没法模拟,要进行多个连接进行测试,测试环境我本地很难搭建,所以就没有进行测试,后面公司进行生产的时候进行测试。
总结
最开始通过对路由的学习到现在的负载均衡,慢慢的深入到了Ocelot中去,感受到了它的强大之处。想实现负载仅仅一个简单的配置就能够实现,在以前自己还需要接入Nginx进行负载均衡或者通过硬件设备进行负载均衡。
记录知识是给自己的一个交代,也是给园友们提供服务,作为博主肯定是希望得到园友们的支持!!
本系列其他文档: