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进行负载均衡或者通过硬件设备进行负载均衡。
记录知识是给自己的一个交代,也是给园友们提供服务,作为博主肯定是希望得到园友们的支持!!

本系列其他文档:

posted @ 2019-06-15 17:46  Jonny-Xhl  阅读(173)  评论(0编辑  收藏  举报