欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

.net core使用ocelot---第六篇 负载均衡

程序员文章站 2023-08-21 19:04:47
简介 .net core使用ocelot 第一篇 简单使用 .net core使用ocelot 第二篇 身份验证 .net core使用ocelot 第三篇 日志记录 .net core使用ocelot 第四篇 限流熔断 .net core使用ocelot 第五篇 服务质量 本文介绍Ocelot的负 ......

简介

  
  
   
   
   

         本文介绍ocelot的负载均衡模块。

什么是负载均衡

         负载平衡可改善跨多个计算资源(例如计算机,计算机群集,网络链接,*处理单元或磁盘驱动器)的工作负载分布。 负载平衡旨在优化资源使用,最大化吞吐量,最小化响应时间,并避免任何单个资源的过载。

         对于我们的api服务,ocelot的负载均衡是监听外部客户端访问服务的软件程序。

准备

         我们需要创建三个项目并确保他们能够正常运行。

注意

         我们使用的两个api服务和第一个几乎一样,便于更快的进入状态。

         在apiservicesa项目中,返回“from apiservices”

[httpget]  
public string get()  
{  
    return "from apiservicea";  
}   

  在apiservicesb项目中,返回“from apiserviceb”

[httpget]  
public string get()  
{  
    return "from apiserviceb";  
}    

配置负载均衡

         我们需要注意downstreamhostandports和loadbalancer节点

         downstreamhostandports是一个包含所有服务主机和端口的数组,在我们本文的例子中包括apiservicea和apiserviceb.

         loadbalancer节点值是一个指明负载均衡算法的字符串。

         目前,ocelot支持两种负载均衡算法,一个是roundrobin(循环),一个是leastconnection(最少访问)

         下面是一个配置负载均衡的示例

{  
  "downstreampathtemplate": "/api/values",  
  "downstreamscheme": "http",  
  "downstreamhostandports": [  
    {  
      "host": "localhost",  
      "port": 9001  
    },  
    {  
      "host": "localhost",  
      "port": 9002  
    }  
  ],  
  "upstreampathtemplate": "/",  
  "loadbalancer": "roundrobin",  
  //"loadbalancer": "leastconnection",  
  "upstreamhttpmethod": [ "get" ]  
}    
//others.....  

  上面配置的意思是说当我们访问,我们会根据roundrobin(循环)负载均衡策略,在http://localhost:9001/api/values 或者 中返回我们的结果。

  我们演示一下

.net core使用ocelot---第六篇 负载均衡

  正如你看到的,返回值在from apiserviceb 和 from apiservicea之间切换,证明我们的负载均衡起作用了。ocelot将客户端请求传递到下游服务。

  源码在此

  网盘链接:https://pan.baidu.com/s/17sqfgcyx8yehrl_lwkaula
  提取码:p3d0

总结

         本文简单介绍了ocelot的负载均衡模块,它还有服务发现的功能,具体下文讲解。