nginx中的平滑加权轮询算法

简介

负载均衡是集群,分布式服务中绕不开的一个话题,采用什么样的算法最合理?只有根据自己的业务场景来决定,现在介绍下nginx中的一种较为合理的均衡算法,平滑加权轮询算法。
假如不考虑服务器之间的性能差异,那么最合理的算法莫过于随机,最简单,最实用,也最不容易出错。
假如考虑服务器之间的性能差异,比如每台机器有不同的权值,那么就不可取随机了。

平滑加权轮询算法流程

请求序号 | 选中之前权值 | 选中 | 选中之后
----|------|----
1 | 4,2,1 | a|-3,2,1
2 | 1,4,2 | b|1,-3,2
3| 5,-1,3|a|-2,-1,3
4|2,1,4|c|2,1,-3
5|6,3,-2|a|-1,3,-2
6|3,5,-1|b|3,-2,-1
7|7,0,0|a|0,0,0

示例:比如第一次请求,选权值最高的a(非常显然),选完之后,<b>命中者</b>的权值减掉权值和(4+2+1=7),得到-3,2,1, 然后再加上原权值(4,2,1),变成(1,4,2)

测试

通过此算法得出的大量数据表明,分配是绝对的平滑均匀合理的。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 【摘要】 面对大量用户访问、高并发请求,海量数据,可以使用高性能的服务器、大型数据库,存储设备,高性能Web服务器...
    静修佛缘阅读 4,590评论 0 24
  • 可伸缩性架构指的是:不改变网站的软硬件设计,只通过改变部署的服务器数量就可以扩大或缩小网站的服务处理能力。 大型网...
    deniro阅读 2,741评论 4 52
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,845评论 18 139
  • 对象:对象是类的一个实例,有状态和行为。 类:类是一个模板 实例:对象是一个抽象的概念,而实例就是一个具体的事物了...
    你说你要一场阅读 485评论 0 0
  • 简介 虽然目前市面上有一些不错的加密相册App,但不是内置广告,就是对上传的张数有所限制。本文介绍了一个加密相册的...
    Soulghost阅读 1,033评论 1 6