CreateArtTechnology
/ Blog
Login
最新文章
Java
语言相关
库相关
虚拟机相关
CreateArtTechnology
项目搭建
使用的工具
自研的工具
开源工具
ELK
ElasticSearch
Jenkins
Markdown
GraphQL
Arthas
生产工具
Linux
Nginx
VersionControl
Subversion
Git
Redis
Archiva
Maven
Zookeeper
Spring
SpringBoot
MySql
HBase
Cassandra
容器化
Docker
Kubernetes
服务容器化从零开始
未分类笔记
算法相关
概念相关
豆知识
机器学习
机器学习从零开始
负载均衡算法介绍
21
2019-05-13 20:19:24
算法相关
## 背景 负载均衡的概念实在太普遍了,从Nginx、Haproxy到Dubbo、Thrift、Hessian等到处都能看到,就不多介绍了。 ## 常用负载均衡算法 ### 轮询和加权轮询 轮询比较简单,在一个Server列表中请求会按顺序打到不同服务器上。 加权轮询也比较简单,即Server列表中权重高的出现的次数更多,参考资料中有提到加权轮询应当注意分散权重高的Server在列表中出现的位置,比如在`{a:5, b:1, c:1}`的情况下`{a, a, b, a, c, a, a}`列表会比`{a, a, a, a, a, b, c}`合理。 **优点** - 基本可以保证每个Server负载绝对均衡或加权均衡 **缺点** - 请求和处理请求的Server无关,要另外维护Session状态 - 并发情况下需要考虑对下标修改的线程安全问题 ### 随机和加权随机 从Server列表中随机或加权随机选一个调用。随着调用次数增加,Server的负载情况会越来越接近轮询或加权轮询的结果。 **优点** - 除了Server的增添之外,不需要考虑线程安全问题 **缺点** - 请求和处理请求的Server无关,要另外维护Session状态 ### 源地址哈希 源地址哈希算法对相同来源的IP等于来源相关的信息进行哈希,保证相同来源的请求打到相同的Server。 **优点** - 对Session状态维护友好 **缺点** - 对Server的上下线非常不友好,一旦出现Server上下线,极有可能导致大规模的请求无法命中原来的Server ### 一致性哈希 与源地址哈希类似,能做到尽量保证相同来源的请求打到相同Server。 一致性哈希具体介绍可参考以前的博客。 **优点** - 对Session状态维护友好 - 对Server上下线友好,但Server上下线也会有少部分请求无法命中原Server **缺点** - 算法实现相对复杂 ### 最小连接及加权最小连接 每次选择当前连接数最小或按权重缩放连接数以后连接数最小的Server。 某个Server当前连接数小说明其当前任务少,相对而言负载更低,侧面说明其可以承担更多的负载。 **优点** - 并非从请求调用方考虑,而是从服务方来考虑负载问题 **缺点** - 需要另外维护Session状态 - 实现较为复杂 ## 参考资料 [几种简单的负载均衡算法及其Java代码实现 - 五月的仓颉 - 博客园](https://www.cnblogs.com/xrq730/p/5154340.html)
发布文章 101
文章被阅读 1817
最近修改
什么是“丝滑”的曲线
2021-12-08 15:19:20
高效空间数据索引R树及其批量加载方法STR简介
2021-09-29 20:33:37
关于分库分表的一些事儿
2021-06-25 11:51:25
获得诺奖的稳定匹配理论之TTC算法与GS算法
2021-03-14 23:04:48
算法小白的机器学习入门实践,从零到上线
2021-01-13 14:28:27
分站宗旨
一站式资料平台,减少重复检索,减少重复采坑。